Что такое фильтр намерений, который будет отображаться только в приложении общего доступа при публикации URL-адреса? - PullRequest
5 голосов
/ 05 ноября 2010

Я посмотрел документацию по фильтру намерений и не могу разобраться с этим конкретным фильтром намерений.

Я хочу использовать ACTION_SEND, потому что я хочу, чтобы приложение отображалось только в меню «Поделиться» в других приложениях. Я хочу отображаться в меню общего доступа только в том случае, если текст намерения является URL-адресом. Например, что является общим в меню общего доступа браузера Android. Я не хочу, чтобы приложение отображалось в меню общего доступа, если оно просто текстовое, а не URL-адрес.

То, что я имею до сих пор:

<intent-filter android:label="Label">
  <action android:name="android.intent.action.SEND" />
  <category android:name="android.intent.category.DEFAULT" />
  <data android:mimeType="text/*" />
</intent-filter>    

Однако при этом будет получен любой текст, а не только URL.

Спасибо

1 Ответ

1 голос
/ 05 ноября 2010

Вы можете создавать IntentFilter объекты программно, и они могут фильтровать URI-схему среди прочего ... намного больше контроля.

Я думал, что создание подкласса IntentFilter даст вам больше событий, но они внесли все изменения в "match" final, поэтому вы не можете переопределить их в подклассе. Ба!

Эврика!

Вы можете указать «схему» данных вместо mimetype. Просто спросите "http" и "https" (в отдельных фильтрах намерений?).

<intent-filter>
  ...
  <data android:scheme="http"/>
</intent-filter>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...