Запуск пользовательского приложения Android из браузера Android / Chrome

Прежде всего, мой вопрос очень схож с этим , этим и этим . Документация для Android, которую я пытаюсь достичь, приведена здесь . Я не мог заставить это работать с использованием этих ресурсов, поэтому, пожалуйста, не отмечайте это как дублирующее, так как это не так.

У меня есть веб-сайт и приложение для Android. Пользователь сможет сканировать QR-коды, содержащие ссылки, такие как http://mywebsite.com/map/ . Когда пользователь попытается открыть эту ссылку, я хочу, чтобы Android показал ему диалог выбора, где он может выбрать, чтобы открыть эту ссылку, используя мое приложение. Если мое приложение не установлено, оно должно перейти на указанный веб-сайт.

Я знаю, что Chrome позволяет это, открыв диалог выбора, когда пользователь переходит к этому адресу. Например, попробуйте загрузить приложение Stack Exchange и перейти к этому вопросу в Chrome. Он покажет это:

Снимок экрана диалога выбора.

Я добавил следующий код в AndroidManifest.xml после того, как вы указали в вышеупомянутых ответах:

<intent-filter> <action android:name="android.intent.action.VIEW" /> <action android:name="android.intent.action.SEND" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:host="mywebsite.com" android:path="/map" android:scheme="http" /> <data android:host="mywebsite.com" android:path="/animals" android:scheme="http" /> <data android:host="mywebsite.com" android:path="/articles" android:scheme="http" /> </intent-filter> 

Кроме того, я попытался добавить android: mimeType = "text / plain" к данным, но это не помогло.

Проблема в том, что когда я перехожу на http://mywebsite.com/map или http://mywebsite.com/map/, Chrome просто открывает веб-страницу, не показывая диалог выбора.

Я хотел бы упомянуть:

  • Следуя документации на Android, я добавил этот код внутри одной из структур активности в AndroidManifest.xml. Поскольку я не уверен, что это идеальное место для его добавления, я также попытался добавить его вне структуры приложения и непосредственно внутри структуры приложения, но он не работал
  • Это единственный код, который я реализовал для этого. Если что-то еще нужно, пожалуйста, дайте мне знать. Насколько я понимаю, добавление href на веб-страницу необходимо только при использовании настраиваемых схем
  • Я не хочу использовать пользовательскую схему для достижения этой цели
  • Я развиваюсь на Nexus 4, работая под Android 4.4.2 (последний)

Solutions Collecting From Web of "Запуск пользовательского приложения Android из браузера Android / Chrome"

Вам нужно настроить его следующим образом:

 <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:host="example.com" android:pathPrefix="/someresource/" android:scheme="http" /> <data android:host="www.example.com" android:pathPrefix="/someresource/" android:scheme="http" /> </intent-filter> 

Обратите внимание, что в вашем случае вам нужно будет использовать android: pathPrefix вместо android: path.

Чтобы быть уверенным, вы должны сбросить настройки своего приложения, если вы случайно установили его, чтобы всегда открывать ссылку в chrome, а не показывать диалог выбора. Когда «Всегда» используется для открытия соответствующего uri, он никогда не отображает выборщика.

Во-вторых, вы можете иметь столько элементов данных в фильтре намерения, сколько хотите, но нет необходимости повторять информацию. Вы можете сделать то же самое:

 <data android:host="mywebsite.com"/> <data android:scheme="http"/> <data android:path="/map"/> <data android:path="/animals"/> <data android:path="/articles"/> 

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

 <data android:path="/.*"/> 

Подумайте о добавлении дополнительного

 <data android:host="www.mywebsite.com"/> 

И, наконец, вы можете не захотеть отобразить диалог выбора, но напрямую открыть конкретное приложение / действие. На вашем веб-сайте, если вы обнаружите пользовательский агент Android, вы можете создать URL-адрес ссылки следующим образом:

 <a href="intent://mywebsite.com/articles#Intent;package=com.myapp;scheme=http;end;"/> 

Подробнее см. Здесь. Как открыть любое приложение из моего браузера (Chrome) в Android? Что мне нужно сделать с ссылкой A Href?

Обратите внимание, что с помощью этого метода, если приложение не установлено, пользователь будет отправлен в магазин Google Play для указанного пакета приложения.

Если у вас все еще есть проблемы, проверьте приоритет фильтра назначения. http://developer.android.com/guide/topics/manifest/intent-filter-element.html

В моем случае URL сайта: http://www.example.org/mobile/

Поэтому включение этого кода в AndroidManifest.xml внутри действия

  <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:host="www.example.org" android:pathPrefix="/mobile/" android:scheme="http" /> </intent-filter> 

Вот,

Схема -> Протокол определенного сайта

Host -> Точный URL сайта с WWW

Pathprefix -> Подкаталог вашего сайта, если он доступен

Теперь,

Вы можете искать в окне поиска браузера Chrome / etc и Android, например, затем откройте выбранный диалог .. !!