标签: clipboardmanager

如何在Android上将图像复制到clipboardManager,例如?

我想将存储在资源文件夹中的图像复制到剪贴板管理器,以便稍后粘贴到另一个应用程序上,如mail,whatapp或chat.我有研究员几个链接一些提到这可以做到一个文件的uri.

这是我得到的最好的,可以帮我指出一个有效的例子.

File imageFile = new File("file:///android_asset/coco_001.png");
ContentValues values = new ContentValues(2);

values.put(MediaStore.Images.Media.MIME_TYPE, "image/png");
values.put(MediaStore.Images.Media.DATA, imageFile.getAbsolutePath());
ContentResolver theContent = getContentResolver();
Uri  imageUri = theContent.insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);  
ClipData theClip = ClipData.newUri(getContentResolver(),"Image", imageUri);
Run Code Online (Sandbox Code Playgroud)

android image copy-paste clipboardmanager

5
推荐指数
1
解决办法
2189
查看次数

从WebView复制HTML并粘贴到EditText中

在Android 4.1.1中,从中复制一些内容WebView(如段落,项目符号,跨度,链接),然后将其粘贴到EditText渲染器中,将HTML呈现得与原始HTML几乎一样(由于不支持许多标记,因此HTML并不完全相同,但足够接近)。

但是从Android 4.1.2开始,该文本不再粘贴为HTML,并且从ClipboardManager文本中读取时具有MIME_TYPE text\plain。有没有办法告诉剪贴板管理器从WebViewHTML中复制选择内容而不是文本?

html clipboard android webview clipboardmanager

5
推荐指数
0
解决办法
1218
查看次数

ClipBoardManager.OnPrimaryClipChangedListener 不工作

如果用户将某些内容复制到剪贴板,我想得到通知。

我创建了一个服务并在 HomeActivity 中启动它,我还编写了一个计时器来检查我的服务是否正常工作。我检查过,我的服务正在运行 Log cat 显示了这一点。但是我的监听器方法不起作用,我在这里缺少什么?

剪贴板观察者服务:

public class ClipBoardWatcherService extends Service {
private final String tag = "FameThings";

private ClipboardManager.OnPrimaryClipChangedListener listener = new ClipboardManager.OnPrimaryClipChangedListener() {
    @Override
    public void onPrimaryClipChanged() {
        performClipBoardCheck();
    }
};

public static void start(Context context) {
    Intent i = new Intent(context, ClipBoardWatcherService.class);
    context.startService(i);
}

@Override
public void onCreate() {
    ((ClipboardManager) getSystemService(CLIPBOARD_SERVICE)).addPrimaryClipChangedListener(this.listener);
    new Timer().scheduleAtFixedRate(new TimerTask(){
        @Override
        public void run(){
            Log.i("tag", "A Kiss every 5 seconds");
        }
    },0,5000);
}

@Override
public int onStartCommand(Intent intent, int flags, int …
Run Code Online (Sandbox Code Playgroud)

clipboard android clipboardmanager

5
推荐指数
1
解决办法
1046
查看次数

SecurityException:调用 setPrimaryClip 时不允许来自 uid xxx 的 <<other_package>> 执行 READ_CLIPBOARD

我收到了有关以下崩溃的报告

SecurityException: <<other_package>> from uid xxx not allowed to perform READ_CLIPBOARD
Run Code Online (Sandbox Code Playgroud)

当用户单击将文本复制到剪贴板的按钮时发生崩溃,如下所示。

val clipboard = context.getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager
val clip = ClipData.newPlainText("label", shareUrl)
clipboard.setPrimaryClip(clip)
Run Code Online (Sandbox Code Playgroud)

所以我的应用程序不会尝试从剪贴板读取任何内容。真的很令人困惑为什么会发生这个错误。

有谁知道这个崩溃是如何发生的以及我该如何解决这个问题?

附加信息

这种崩溃仅发生在 Android 9 和 Android 10 中,并且不容易发生(20 万月活跃用户中只有 6 个用户)

我在 Crashlytics 中只看到两个 <<other_package>>(一个是银行应用程序,另一个是音乐应用程序)。

ClipboardService.java我尝试阅读和的源代码AppOpsManager.java,发现崩溃可能来自noteOpAppOpsManager.

这是崩溃的堆栈跟踪:

Fatal Exception: java.lang.SecurityException: <<other_package>> from uid xxx not allowed to perform READ_CLIPBOARD
       at android.os.Parcel.createException(Parcel.java:2087)
       at android.os.Parcel.readException(Parcel.java:2055)
       at android.os.Parcel.readException(Parcel.java:2003)
       at android.content.IClipboard$Stub$Proxy.setPrimaryClip(IClipboard.java:293)
       at android.content.ClipboardManager.setPrimaryClip(ClipboardManager.java:106)
       at my.package.MyClass.copyToClipboard(MyClass.java:63)
       at android.view.View.performClick(View.java:7375)
       at android.view.View.performClickInternal(View.java:7336)
       at android.view.View.access$3900(View.java:822) …
Run Code Online (Sandbox Code Playgroud)

android clipboardmanager android-app-ops

5
推荐指数
1
解决办法
1744
查看次数

How to disable Clipboard editor overlay Android Emulator API 33?

How can i disable Clipboard editor overlay, that is enabled by default in Android Emulator API 33?. It is very annoying while debugging apps.It always popup over my debugging apps, and i have to close this every time to do something in my debugging app.

在此输入图像描述

android clipboardmanager android-12

5
推荐指数
1
解决办法
2105
查看次数

使用 getPrimaryClip() 复制数据给出 { text/plain {NULL} }

我在{ text/plain {NULL} }使用时得到了,ClipData但如果我使用不推荐使用的方法,mClipboard.getText()它就可以正常工作。

if (mClipboard.getPrimaryClipDescription().hasMimeType(ClipDescription.MIMETYPE_TEXT_PLAIN)) {
    ClipData clipData = mClipboard.getPrimaryClip();
    ClipData.Item item = clipData.getItemAt(0);
    Log.d(TAG, clipData.toString());
    Log.d(TAG, mClipboard.getText());
}
Run Code Online (Sandbox Code Playgroud)

更新

三星 Galaxy Tab 3 中存在问题。

三星 Galaxy Tab 3

android clipboardmanager

4
推荐指数
1
解决办法
1129
查看次数

Android:为ClipboardManager实现广播接收器

我想实现一个侦听器,如果有人从任何应用程序复制任何东西,它将监听.

我听说ClipboardManager.OnPrimaryClipChangedListener()哪个会听复制动作,但这不是接收器(据我所知).我得到了一个示例应用程序,这个应用程序背后的逻辑是,从系统启动启动服务并运行一个服务,它将监听复制操作,但我认为这将耗尽电池.我对吗?

那么我该如何实现一个可以监听Copy动作的Broadcast接收器呢.

java android listener broadcastreceiver clipboardmanager

3
推荐指数
1
解决办法
5615
查看次数

清除Android中的剪贴板数据

我正在尝试清除android中的剪贴板数据如下,但它没有清除它.

ClipboardManager clipman = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);
clipman.setPrimaryClip(null);
Run Code Online (Sandbox Code Playgroud)

有任何想法吗 ?

android clipboarddata clipboardmanager

3
推荐指数
1
解决办法
3213
查看次数

每个副本都会调用两次ClipboardManager OnPrimaryClipChangedListener

当我将文本复制到剪贴板上时,onPrimaryClipChanged方法被调用两次.有什么想法吗?

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.main, menu);
    final ClipboardManager cliboardManager = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);

    cliboardManager
            .addPrimaryClipChangedListener(new OnPrimaryClipChangedListener() {

                @Override
                public void onPrimaryClipChanged() {
                    ClipData clipData = cliboardManager.getPrimaryClip();
                    System.out
                            .println("********** clip changed, clipData: "
                                    + clipData.getItemAt(0));
                }
            });
    return true;
}
Run Code Online (Sandbox Code Playgroud)

测试用例:从BBC网站复制文本"继续"将产生以下输出:

继续

继续

但是,如果我调试程序,我可以看到clipData对象具有值:

ClipData {text/plain {T:continue}}

第一次调用onPrimaryClipChanged()并且

ClipData {text/plain"BBC - Homepage"{T:continue}}

下次onPrimaryClipChanged()被调用.

所以基本上第一次ClipDescription是{text/plain},第二次是ClipDescription {text/plain"BBC - Homepage"}(即包括网页的标题)

android clipboardmanager

3
推荐指数
2
解决办法
4906
查看次数

Val 不能在 ClipboardManager primaryClip 重新分配

我知道已经有人问过这个问题,但仍然无法帮助我解决问题

将数据复制到剪贴板管理器时出现问题

下面是代码

fun copyToClipboard(context: Context, text: CharSequence){
        var clipboard: ClipboardManager = context.getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager
        var clip: ClipData = ClipData.newPlainText("label",text)
        clipboard.primaryClip = clip!!
    }
Run Code Online (Sandbox Code Playgroud)

正如@ianhanniballake 所建议的,我已经使用 setPrimaryClip() 和非空 ClipData

像下面

var clip: ClipData = ClipData.newPlainText("label",text)
clipboard.primaryClip = clip!!
Run Code Online (Sandbox Code Playgroud)

但不知道为什么,我仍然遇到同样的错误

Val cannot be reassigned
Run Code Online (Sandbox Code Playgroud)

android kotlin clipboardmanager

2
推荐指数
1
解决办法
542
查看次数

如何访问Vim Clipboard的旧条目?

当我想复制一行并在删除当前行的内容后将其粘贴到当前行中时,我最终粘贴了在删除剪贴板条目后删除的同一行 d

vi vim clipboard clipboardmanager

1
推荐指数
1
解决办法
266
查看次数

getSystemService() 不适用于适配器类

我试图将 onClickListener 添加到 RecyclerView 内的一个按钮,该按钮复制一个字符串,但它说 getSystemService(CLIPBOARD_SERVICE) 不可用。

public void onBindViewHolder(ViewHolder holder, int position) {
        holder.title.setText(cardItems.get(position).title);
        holder.content.setText(cardItems.get(position).content);
        holder.copyButton.setOnClickListener(new View.OnClickListener(){
            public void onClick(View v){

                myClipboard = (ClipboardManager)getSystemService(CLIPBOARD_SERVICE);
                String text;
                text = EditText.getText().toString();
                myClip = ClipData.newPlainText("text", text);
                myClipboard.setPrimaryClip(myClip);

                Toast.makeText(getApplicationContext(), "Text Copied", Toast.LENGTH_SHORT).show();
            }
        });
    }
Run Code Online (Sandbox Code Playgroud)

java android android-context android-adapter clipboardmanager

1
推荐指数
1
解决办法
3686
查看次数

如何在android中将副本添加到剪贴板按钮?

我想添加一个按钮,该按钮将从卡片视图内的不可编辑文本视图中复制文本。我可以为此使用剪贴板管理器吗?

android clipboardmanager

-3
推荐指数
1
解决办法
6477
查看次数