如何使用应用程序外部提供的新 Android M 功能“文本选择”?

2024-01-04

背景

Android M 提供了一种处理选定文本的新方法(链接here http://developer.android.com/intl/ru/about/versions/marshmallow/android-6.0-changes.html#behavior-text-selection),甚至从您的应用程序外部。文本选择可以这样处理:

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

问题

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

问题

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

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

单击该按钮会从 API 演示应用程序中调出一个活动,显示突出显示的文本:

替换字段中的值并单击按钮会将替换文本替换为您突出显示的内容。


WARNING:以下解释来自检查 API Demos 代码和 M Developer Preview 文档。在 M 发布到 Realz 之前,这种情况很可能会发生改变。 YMMV,除非您使用公制,在这种情况下为 YKMV。

有问题的活动,即接收文本,支持ACTION_PROCESS_TEXT as the Intent行动。EXTRA_PROCESS_TEXT将保存一些文本,或者EXTRA_PROCESS_TEXT_READONLY如果文本是只读的,将保留它。该活动将通过以下方式调用startActivityForResult()。结果Intent可以有自己的EXTRA_PROCESS_TEXT值,这将是替换文本。

那么,对于具体问题:

应该在代码(和清单)中添加什么才能从应用程序外部处理选定的文本?

往上看。请注意,API 演示活动 (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对于有跨度的东西?)。

是否可以将选择限制为某些类型的文本?例如,仅当文本类型是有效的电话号码时才显示应用程序?

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用应用程序外部提供的新 Android M 功能“文本选择”? 的相关文章

随机推荐