如何通过Smart-Linkify(AKA"智能文本选择")将我的应用操作提供给其他应用?

时间:2018-05-19 09:01:07

标签: android android-8.0-oreo smart-linkify smart-text-selection

背景

有一段时间,作为用户,我注意到在某些应用上我可以对部分文本执行常见操作,如下:

enter image description here

这被称为"智能文本选择" (视频here),它来自Android O,如here所示。

问题

最近,Google已经展示了如何让您的应用在其内部显示操作(意味着在其TextView中)。这被称为" Smart-Linkify"并且可以找到有关它的视频here。它显示了如何显示操作:

enter image description here

我无法找到的是如何做相反的事情。这意味着如何将自己的行为提供给其他应用程序。

例如,我可以通过拨号或搜索电话号码制作一个可以处理电话号码的拨号器应用程序。

我发现了什么

  1. 过去,我曾经问过Android M的一个非常相似的事情here。还有一个很好的教程,here。但是,这是关于一般文本,没有何时触发,这意味着它将始终显示。

  2. 我发现很少有人提到这个功能。我发现的唯一样本是here,但由于某种原因我无法构建它,甚至不提供动作。它是关于如何展示行动的。

  3. 我找到了Android拨号程序here的Github存储库。它还提供了一个" call"电话号码。在使用清单后,我发现这部分负责提供此操作:

      <intent-filter >
          <action android:name="android.intent.action.VIEW" />
          <action android:name="android.intent.action.DIAL" />
          <category android:name="android.intent.category.DEFAULT" />
          <category android:name="android.intent.category.BROWSABLE" />
          <data android:scheme="tel" />
      </intent-filter>
    

    如果我删除此部分,我就不会看到&#34;呼叫&#34;对于这个应用程序了(直到我重新添加它)。

    可悲的是,如果我改变了#34; DIAL&#34;行动到&#34; SEARCH&#34;,它没有出现。

    好消息是,如果我将这部分添加到新项目中,我可以看到该动作。

  4. 问题

    1. 这是来自Android O及以上,对吗?当我实现此功能时,Android M或N会发生什么?
    2. 如何向其他应用提供自己的应用操作?到目前为止,我已经找到了如何进行一般文本处理和拨号。但我怎样才能提供其他人,比如搜索电话号码?
    3. 我可以自定义针对操作显示的文字吗?我注意到,如果我更改&#34; PROCESS_TEXT&#34;行动,它确实发生了变化,但我无法看到如何为其他行动做到这一点。
    4. 我可以自定义触发动作的内容吗?例如要匹配的特定正则表达式?到目前为止,我发现只有电话号码。我可以用这种过滤的各种东西是什么?

1 个答案:

答案 0 :(得分:1)

好的,看到我一次又一次地做不到,无论我尝试什么,我认为答案是它不受支持。

原因是Google可能会收集开发人员在全球范围内请求的各种操作,并使用该设备列表。更多信息here。引用那里:

  

在多个Google和多个地方的更多地方发现您的应用   Android表面。您的操作可以显示在Android启动器中,   智能文字选择,Google搜索应用,Google智能助理和   Play商店。

Here's a list开发人员可以使用的现有特殊Intents操作。

它没有特别的电话号码搜索功能,但它有一些其他的特殊操作。

为了请求更多可用的操作,开发人员可以请求here

我希望这将永远可用,因为我不认为很多开发人员都知道这一点。