【问题标题】:Android : How to listen to longclick events in any text area in other applications?Android:如何在其他应用程序的任何文本区域中监听 longclick 事件?
【发布时间】:2011-08-22 02:52:47
【问题描述】:

我正在尝试开发一个在将数据粘贴到任何地方时提供额外选项的 Android 应用程序。

我知道如何从剪贴板捕获数据。我只需要知道如何在其他应用程序(例如浏览器、facebook、twitter 等)的任何文本区域中收听 longclick 事件,以便触发我的应用程序,让用户可以选择在处理后将数据粘贴到剪贴板上它,作为以正常方式粘贴它的替代方法。

【问题讨论】:

  • 嗯,我很确定这需要修改操作系统,我认为剪贴板管理器不能像 SMS 等的意图那样被替换。
  • 虽然 dylantaylor.wordpress.com/clippy 声称它有一项服务可以监控剪贴板的更改,但您也可以这样做并发布一个获取剪贴板内容的通知。

标签: android copy-paste long-click


【解决方案1】:

自从您提出这个问题以来,我们已经走了很长一段路,但实际上有两种方法可以做到这一点:

  1. 调用ClipboardManager.addPrimaryClipChangedListener() 并在用户复制文本时注册为监听器。可以在Documentation

  2. 找到
  3. 添加ACTION_PROCESS_TEXT Intent 过滤器,以便用户可以选择您创建/启动应用程序的自定义操作。更多可以在Blog Post

  4. 中找到

【讨论】:

    【解决方案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);
    }
    

    【讨论】:

      猜你喜欢
      • 2019-06-11
      • 2020-08-23
      • 2013-06-20
      • 2019-07-27
      • 1970-01-01
      • 2017-11-17
      • 2018-11-23
      • 1970-01-01
      • 2019-02-10
      相关资源
      最近更新 更多