Как предлагать действия моего приложения другим приложениям через Smart-Linkify (AKA «интеллектуальный выбор текста»)? - PullRequest
0 голосов
/ 19 мая 2018

Фон

В течение некоторого времени, как пользователь, я заметил, что в некоторых приложениях я могу выполнять общие операции над частичными текстами, например:

enter image description here

Это называется «интеллектуальным выделением текста» (видео здесь ), и оно происходит от Android O, как показано здесь .

Проблема

Недавно Google показал, как заставить ваше приложение отображать действия внутри себя (т.е. внутри его TextView).Это называется «Smart-Linkify», и видео о нем можно найти здесь .Там показано, как показать действия:

enter image description here

Чего я не могу найти, так это как сделать противоположное.То есть, как предлагать свои собственные действия другим приложениям.

Например, я мог бы создать приложение для набора номера, которое может обрабатывать телефонные номера, либо набирая их, либо выполняя поиск по номеру телефона.

What I 'мы нашли

  1. Раньше я спрашивал об очень похожей вещи, Android M, здесь .Есть также хороший урок об этом, здесь .Тем не менее, речь идет об общем тексте, без указания того, когда его запускать, то есть он всегда будет отображаться.

  2. Я нашел очень мало упоминаний об этой функции.Единственный пример, который я нашел, это здесь , но я не могу построить его по какой-то причине, и дело даже не в предоставлении действий.Речь идет о том, как показать действия.

  3. Я нашел Github-репозиторий программы набора номера Android, здесь .Также предлагается действие «Позвонить» для телефонных номеров.Поэкспериментировав с манифестом, я обнаружил, что эта часть отвечает за предложение этого действия:

      <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>
    

    Если я удаляю эту часть, я не вижу действия "вызов" для этого приложения.больше (пока я не добавлю его).

    К сожалению, если я изменю действие «DIAL» на «SEARCH», оно не появится.

    Хорошая новость заключается в том, что яможно увидеть действие, если я добавлю эту часть в новый проект.

Вопросы

  1. Это с Android O и выше, верно?Что произойдет на Android M или N, когда я реализую эту функцию?
  2. Как я могу предложить свои собственные действия приложения другим приложениям?До сих пор я нашел, как сделать общую обработку текста и набор номера.Но как я могу предоставить другие, такие как поиск номера телефона?
  3. Можно ли настроить текст, отображаемый для действий?Я заметил, что если я изменю метку для действия «PROCESS_TEXT», она изменится, но я не вижу, как это сделать для других действий.
  4. Могу ли я настроить, что будет запускать действие?Например конкретное регулярное выражение для сопоставления?Пока я нашел только номера телефонов.Какие различные вещи я могу использовать для этой фильтрации?

1 Ответ

0 голосов
/ 04 июня 2018

ОК, видя, что я не могу сделать это снова и снова, независимо от того, что я пытаюсь, я думаю, что ответ в том, что он просто не поддерживается.

Причина в том, что Google, вероятно, собирает различные действия, которыеРазработчики запрашивают по всему миру, и используют список для устройства.Больше информации здесь .Чтобы процитировать оттуда:

Получите ваше приложение, обнаруженное в нескольких местах на различных поверхностях Google и Android.Ваши действия могут отображаться в панели запуска Android, Выбор интеллектуального текста , приложении Google Search, Google Assistant и Play Store.

Вотсписок существующих специальных действий Intents, которые могут использовать разработчики.

У него нет специального действия для поиска номера телефона, но вместо этого у него есть некоторые другие специальные действия.

Чтобы запросить дополнительные действия, разработчики могут запросить их здесь .

Я надеюсь, что это будет доступно навсегда, потому что я не думаю, чтоМногие разработчики даже знают об этом.

...