android - 如何使用从您的应用程序外部提供的 "Text Selection"的新 Android M 功能?

标签 android android-manifest textselection android-6.0-marshmallow

背景

Android M 提供了一种处理选定文本的新方法(链接 here ),即使是在您的应用之外。文本选择可以这样处理:

enter image description here

我知道可以从应用程序外部处理选定的文本,因为如果我转到网络浏览器(或任何其他允许文本选择的地方),我可以看到我可以使用“API 演示”应用程序来处理选定的文本。

问题

我看不到很多关于如何做的信息。

问题

  1. 应该在代码(和 list )中添加什么才能从应用程序外部处理选定的文本?
  2. 是否可以将选择限制为某些类型的文本?例如,仅当文本类型是有效电话号码时才提供显示应用程序?

最佳答案

首先,澄清问题:在 M 模拟器上,如果突出显示文本,您将看到新的 float 操作模式。如果您单击溢出图标,您将看到“API DEMOS”出现:

M Developer Preview Emulator

单击它会从 API 演示应用程序中调出一个 Activity ,显示突出显示的文本:

Another M Developer Preview Emulator

替换字段中的值并单击按钮将替换文本放入,以替换您突出显示的内容。


警告:以下解释来自检查 API 演示代码和 M Developer Preview 文档。这很有可能会在 M 为 realz 发货之前改变。 YMMV,除非您使用公制系统,在这种情况下为 YKMV。

有问题的 Activity ,即接收文本,支持 ACTION_PROCESS_TEXT作为 Intent行动。 EXTRA_PROCESS_TEXT将包含一些文本,或 EXTRA_PROCESS_TEXT_READONLY如果文本是只读的,将保留它。该 Activity 将通过 startActivityForResult() 调用.结果 Intent可以有自己的EXTRA_PROCESS_TEXT值,这将是替换文本。

所以,具体问题:

What should be added in code (and manifest) to be able to handle the selected text from outside the app ?

见上文。请注意,API 演示 Activity (ProcessText) 具有此 <intent-filter> :

        <intent-filter >
            <action android:name="android.intent.action.PROCESS_TEXT"/>
            <category android:name="android.intent.category.DEFAULT" />
            <data android:mimeType="text/plain" />
        </intent-filter>

文档不讨论 MIME 类型。我没有运行任何实验来确定是否需要 MIME 类型,以及我们可能得到的其他内容(text/html 对于具有跨度的内容?)。

Is it possible to limit the selection to certain types of texts ? For example, offer to show the app only if the text type is a valid phone number ?

鉴于文档,这似乎是不可能的。话虽如此,这当然是一个合理的想法(例如,通过文本必须匹配的 list 中的元数据来宣传一个正则表达式或多个正则表达式)。

关于android - 如何使用从您的应用程序外部提供的 "Text Selection"的新 Android M 功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30518089/

相关文章:

android - 无法让 Android 电子市场排除此应用程序的小屏幕手机

css - 如何禁用文本选择突出显示

javascript - 为什么在单击按钮时从 textarea 中获取文本选择有效,但在单击 "div"时无效(在 Internet Explorer 中)

editor - Texstudio 中的 block 选择或多个光标?

android - 获取 smack 中最近消息的发送状态

android - 使用 coredata 创建类似于 iOS 的 Android 应用程序

java - 我的应用程序在开始时崩溃并给我一个强制关闭错误

android - list 合并失败:使用cardview 25.3.1的图书馆,我的应用使用25.00.alpha1

java - ServerSocket 同时不会中断图像数据输入流

java - 如何将 RelativeLayout 旋转 180 度?