在另一个应用程序中捕获文本选择
Posted
技术标签:
【中文标题】在另一个应用程序中捕获文本选择【英文标题】:Catching text selection in another application 【发布时间】:2015-05-03 17:32:31 【问题描述】:我想使用 android 制作一个小部件,我需要捕获任何文本选择事件。例如一个用户正在阅读某事。并在另一个应用程序(网络浏览器、pdf 阅读器、消息传递)中选择文本。
是否可以在后台捕获任何文本选择?
【问题讨论】:
使用剪贴板是最好的方法,这里是Example @kyur 你有没有发现任何方法可以在任何其他应用程序中检测 andorid 中的文本选择?我的意思是文本选择而不是文本复制。 我也想要这个。不复制,只选择。这可能吗? @Mr.Newman MahendraChhimwal 你找到什么方法了吗 对于一些文章,我的意思是您只能在自己的应用程序中执行此操作(对上下文菜单进行一些修改),但在另一个应用程序中,为了安全起见,您不能这样做(一个应用程序对抗另一个应用程序) .因此,只有当文本被复制(到剪贴板)时,所有应用程序才能读取它。但不是选择 【参考方案1】:试试这个从剪贴板获取文本
ClipboardManager clipboard = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);
clipboard.getText();
Set text and get text from clipboard
【讨论】:
【参考方案2】:示例代码:
String textToPaste = null;
ClipboardManager clipboard = (ClipboardManager)getSystemService(Context.CLIPBOARD_SERVICE);
/* Returns true if there is currently a primary clip on the clipboard. */
if (clipboard.hasPrimaryClip())
ClipData clip = clipboard.getPrimaryClip();
// if you need text data only, then you have to check the MIME type for Text as i shown below :
if (clip.getDescription().hasMimeType(MIMETYPE_TEXT_PLAIN))
// WARNING: The item could cantain URI that points to the text data.
// In this case the getText() returns null and this code fails!
textToPaste = clip.getItemAt(0).getText().toString();
// or you may coerce the data to the text representation: i have explained this in the second image.
textToPaste = clip.getItemAt(0).coerceToText(this).toString();
if (!TextUtils.isEmpty(textToPaste))
((TextView)findViewById(R.id.etInput1)).setText(textToPaste);
更多信息,请查看官方链接
http://developer.android.com/reference/android/content/ClipData.html
http://developer.android.com/reference/android/content/ClipboardManager.html
【讨论】:
如何只捕捉选择?不复制【参考方案3】:1.你可以定义一个服务在后台监听剪贴板事件
ClipboardManager clipboardManager = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);
clipboardManager.setPrimaryClip(new ClipboardManager.OnPrimaryClipChangedListener()
@Override
public void onPrimaryClipChanged()
//TODO do your work
);
2.或者您可以使用 AccessibilityService 检测复制文本事件,监听“TYPE_VIEW_TEXT_SELECTION_CHANGED”事件并从剪贴板读取数据,但您应该引导用户在系统设置中为您的应用启用辅助功能开关。
【讨论】:
以上是关于在另一个应用程序中捕获文本选择的主要内容,如果未能解决你的问题,请参考以下文章