Схема Open android -app с Chrome на Android - PullRequest
6 голосов
/ 18 февраля 2020

Мне было интересно, как мне пришлось бы настроить свое приложение, чтобы оно открывалось с android-app://application.id?

adb shell am start android-app://application.id

URI_ANDROID_APP_SCHEME , похоже, не работает, как описано в документации. Вместо этого Chrome и Firefox открывают только ссылку market:// на мое приложение.

Для Chrome Я нашел документацию , описывающую только схему intent://.

Когда фильтр намерений содержит категории DEFAULT и BROWSABLE, он работает с Firefox.

<intent-filter>
    <action android:name="android.intent.action.MAIN" />

    <category android:name="android.intent.category.DEFAULT" />
    <category android:name="android.intent.category.LAUNCHER" />
    <category android:name="android.intent.category.BROWSABLE" />
</intent-filter>

1 Ответ

3 голосов
/ 25 февраля 2020

Вы должны добавить <data../>, описывающий URI в intent-filter для вашего компонента, например,

<intent-filter>
   ...

   <data android:scheme="android-app"/>
</intent-filter>

и в своей части сайта определить намерение, подобное этому

intent:#Intent;scheme=android-app;package=your_package;end

ОБНОВЛЕНИЕ. Не понял, что схема зарезервирована, хотя мое решение работает для любой схемы, которую вы определили. Я посмотрел источники Intent класса, кажется, вам нужно определить ваш URI следующим образом:

android-app://your_package

OR

android-app://your_package/ 
#Intent;action=com.example.MY_ACTION;end

Первая строка метода parseUri в Androids Intent class

final boolean androidApp = uri.startsWith("android-app:");

Стоит упомянуть: эта схема была добавлена ​​в API 22.

Я тестировал, она работает с тегом a, и как @tynn упоминается в комментариях также для window.open() и location.href и не работают с адресной строки в Chrome.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...