- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
当我将文本复制到剪贴板时,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;
}
测试用例:从 BBC 网站复制文本“继续”将导致以下输出:
continue
continue
但是如果我调试程序,我可以看到 clipData 对象有值:
ClipData { text/plain {T:continue } }
第一次调用 onPrimaryClipChanged() 和
ClipData { text/plain "BBC - Homepage" {T:continue } }
下次调用 onPrimaryClipChanged() 时。
所以基本上第一次 ClipDescription 是 { text/plain } 第二次是 ClipDescription { text/plain "BBC - Homepage"}(即包括网页标题)
最佳答案
我假设你没有注册多个监听器,我不能说这是错误,你仍然可以解决它。尝试这样的事情:
String mPreviousText = "";
cliboardManager
.addPrimaryClipChangedListener(new OnPrimaryClipChangedListener() {
@Override
public void onPrimaryClipChanged() {
ClipData clipData = cliboardManager.getPrimaryClip();
System.out
.println("********** clip changed, clipData: "
+ clipData.getItemAt(0));
ClipData.Item item = clipData.getItemAt(0);
if(mPreviousText.equals(item.getText().toString())) return;
else{
/// do something
mPrevousText = item.getText().toString();
}
}
});
关于android - ClipboardManager OnPrimaryClipChangedListener 为每个副本调用两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18391701/
注意:导包的时候 API 11之前: android.text.ClipboardManager API 11之后: android.content.ClipboardManager  
如果用户将某些内容复制到剪贴板,我希望收到通知。 我创建了一个服务并在 HomeActivity 中启动它,我还编写了一个计时器来检查我的服务是否正常工作。我检查过,我的服务正在运行 Log cat
for (TextView currentText : txts) { currentText.setTextSize(heightText); currentText
当我将文本复制到剪贴板时,onPrimaryClipChanged 方法被调用了两次。有什么想法吗? @Override public boolean onCreateOptionsMenu(Menu
我正在开发一个 android 应用程序,并且需要将文本(从 listView 项目)复制到剪贴板以便将其粘贴到 editText 中。 所以复制函数看起来像: ClipboardManager c
android.text.ClipboardManager 自 API 级别 11 起已弃用,并替换为 android.content.ClipboardManager ( source )。 如何编
我知道 question is already been asked但是,它仍然不能帮助我解决问题 将数据复制到剪贴板管理器时遇到问题 下面是代码 fun copyToClipboard(contex
Android Q 阻止后台剪贴板访问。有什么方法可以在我的应用程序中使用此服务吗?有权限启用此功能吗? 最佳答案 正如之前传闻的那样,Google 限制了对剪贴板数据的访问。 我在 com.andr
我想实现一个监听器,如果有人从任何应用程序复制任何内容,它将监听。 我听说 ClipboardManager.OnPrimaryClipChangedListener() 它将监听复制操作,但这不是接
我想实现一个监听器,如果有人从任何应用程序复制了任何东西,它就会监听。 我听说 ClipboardManager.OnPrimaryClipChangedListener() 会监听复制操作,但这不是
我想将存储在资源文件夹中的图像复制到剪贴板管理器,以便稍后粘贴到另一个应用程序,如邮件、whatapp 或聊天。我有几个研究人员链接,有人提到这可以通过将 uri 制作到文件来完成。 这是我得到的最好
构建我的应用程序的发布版本时,构建失败并出现以下错误: 错误:错误:可疑转换为 CLIPBOARD_SERVICE 的文本:预期 ClipboardManager [ServiceCast] 调试版本
我用下面的代码来监听剪贴板的变化,我希望在操作完成后移除监听。 但是clipboard.removePrimaryClipChangedListener{ }需要传参,我该怎么办? 代码 btnMo
我在 logcat 中收到一条消息,说明: Failed resolving interface 26 Landroid/content/ClipboardManager$OnPrimaryClipC
我已阅读文章How to pass and get value from fragment and activity android kotlin 我必须将 Activity 中的 var mClip
在我的 Android 应用程序中,我碰巧使用以下代码从 TextView 复制文本。 buttonCopy.setOnClickListener(new View.OnClickListener()
我正在创建一个应用程序,用户可以在 30 秒内将文本复制到剪贴板。 30 秒后,即使应用程序已关闭,文本也需要从剪贴板中删除 在我的主要 Activity 中,我有以下代码: OneTimeWorkR
我是一名优秀的程序员,十分优秀!