如何通过 Smart-Linkify(又称 "smart text selection")向其他应用提供我的应用的操作?

How to offer actions of my app to other apps, via Smart-Linkify (AKA "smart text selection")?

背景

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

这叫做"smart text selection"(视频here), and it has being around from Android O, as shown here

问题

最近 Google 展示了如何让您的应用显示其自身(即其 TextView 内)的操作。这叫做 "Smart-Linkify",可以找到有关它的视频 here。它显示了如何显示操作:

我找不到相反的方法。意思是如何向其他应用程序提供我自己的操作。

例如,我可以制作一个可以处理 phone 号码的拨号器应用程序,方法是拨打它们或搜索 phone 号码。

我发现了什么

  1. 过去,我问过一个非常相似的问题,Android M,. There is also a nice tutorial about it, here。但是,这是关于一般文本,没有什么时候触发的类型,意味着它会一直显示。

  2. 我发现很少有人提及此功能。我找到的唯一示例是 here,但由于某种原因我无法构建它,甚至与提供操作无关。就是如何表现动作。

  3. 我找到了 Android 拨号器 here 的 Github 存储库。它还为 phone 个数字提供 "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>
    

    如果我删除这部分,我将不再看到此应用的 "call" 操作(直到我重新添加它)。

    遗憾的是,如果我将 "DIAL" 操作更改为 "SEARCH",它不会显示。

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

问题

  1. 这是AndroidO以上的吧?当我实现此功能时,Android M 或 N 会发生什么情况?
  2. 如何向其他应用提供我自己的应用操作?到目前为止,我已经找到了如何进行一般的文本处理和拨号。但是我怎样才能提供其他的,比如搜索phone号码呢?
  3. 我可以自定义为操作显示的文本吗?我注意到,如果我更改 "PROCESS_TEXT" 操作的标签,它确实会发生变化,但我看不到如何为其他操作执行此操作。
  4. 我可以自定义触发操作的内容吗?例如要匹配的特定正则表达式?到目前为止,我只找到了 phone 个数字。我可以用于此过滤的各种东西是什么?

好吧,看我怎么弄都不行,怎么弄,我想答案就是不支持。

原因是Google大概收集了世界各地开发者要求的各种动作,并为设备使用列表。更多信息 here。从那里引用:

Get your app discovered in more places across multiple Google and Android surfaces. Your Actions can appear in the Android launcher, Smart Text Selection, the Google Search app, the Google Assistant, and the Play Store.

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

phone号码搜索没有特别的功能,但是有一些其他的特殊功能。

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

我希望它永远可用,因为我认为很多开发人员甚至都不知道它。