Android:如何在其他应用程序的任何文本区域中监听 longclick 事件?
Posted
技术标签:
【中文标题】Android:如何在其他应用程序的任何文本区域中监听 longclick 事件?【英文标题】:Android : How to listen to longclick events in any text area in other applications? 【发布时间】:2011-08-22 02:52:47 【问题描述】:我正在尝试开发一个在将数据粘贴到任何地方时提供额外选项的 android 应用程序。
我知道如何从剪贴板捕获数据。我只需要知道如何在其他应用程序(例如浏览器、facebook、twitter 等)的任何文本区域中收听 longclick 事件,以便触发我的应用程序,让用户可以选择在处理后将数据粘贴到剪贴板上它,作为以正常方式粘贴它的替代方法。
【问题讨论】:
嗯,我很确定这需要修改操作系统,我认为剪贴板管理器不能像 SMS 等的意图那样被替换。 虽然 dylantaylor.wordpress.com/clippy 声称它有一项服务可以监控剪贴板的更改,但您也可以这样做并发布一个获取剪贴板内容的通知。 【参考方案1】:自从您提出这个问题以来,我们已经走了很长一段路,但实际上有两种方法可以做到这一点:
调用ClipboardManager.addPrimaryClipChangedListener()
并在用户复制文本时注册为监听器。可以在Documentation
添加ACTION_PROCESS_TEXT
Intent 过滤器,以便用户可以选择您创建/启动应用程序的自定义操作。更多可以在Blog Post
【讨论】:
【参考方案2】:您需要为相关活动添加一个意图过滤器,如下所示:
<activity android:name=".PostActivity">
<intent-filter>
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="text/plain" />
</intent-filter>
</activity>
那么你只需要在你的Activity中处理intent中发送给你的数据
Uri data = getIntent().getData();
Bundle extras = getIntent().getExtras();
String messageText = "";
if (data != null)
messageText = data.toString();
else if (extras != null)
messageText = extras.getString(Intent.EXTRA_TEXT);
【讨论】:
以上是关于Android:如何在其他应用程序的任何文本区域中监听 longclick 事件?的主要内容,如果未能解决你的问题,请参考以下文章
Android 应用 (Cordova) 上的文本区域中的字数超出限制