Firefox для Android не запускает приложение при нажатии на ссылку

Firefox не запускает намерения для нажатых ссылок, как должен. Поэтому нельзя запустить их приложение, щелкнув ссылку в Firefox (что возможно в Chrome и других браузерах).

Изменить: помните, что это сообщение от 2013 года.

Желаемое поведение следующее: на моем веб-сайте у меня есть ссылка, при нажатии на которую должно запускаться мое приложение для Android. Если приложение не установлено, желательно открыть его страницу в Google Play для его загрузки.

Метод

Я реализую это с помощью «намеренного URI» в форме: intent://myhost.com/#Intent;scheme=myscheme;package=com.myapp;end

В приложении я регистрирую фильтр намерений в своем манифесте и прислушиваюсь к соответствию намерениям. Однако браузер должен запускать такое намерение при щелчке по ссылке, чтобы мое приложение могло запуститься.

Я тестировал этот метод в различных браузерах, и он работает в большинстве из них. За заметным исключением Firefox. В других браузерах либо мое приложение запускается, либо его страница в Google Play загружается (если оно не установлено на устройстве).

Метод с "намеренным URI" рекомендован Google. Он отлично работает в Chrome и некоторых других браузерах. Есть и другие способы. Я прочитал много тем и статей о возможностях. Основные альтернативы:

Альтернативные методы

  1. используя индивидуальную схему, например myscheme://mywebsite.com
  2. используя обычную ссылку http, например http://mywebsite.com

Альтернатива 1 не рекомендуется по двум причинам: - Я не владею такой схемой, она не существует глобально, это неверно. Google также использовал market://... для запуска приложения Google Play, но они признали, что это неправильно и должно измениться. - Если мое приложение в настоящее время не установлено, оно не будет запущено, и в большинстве браузеров отображается страница с ошибкой, что явно нежелательно.

Альтернатива 2 не работает в большинстве браузеров и, похоже, устарела в пользу метода «намеренного URI».

В частности, Firefox

работает только с нестандартной схемой (вариант 1). В случае обычной http-ссылки (вариант 2) он просто загружает ссылку и показывает веб-сайт. В случае рекомендуемого метода «URI намерения» он ничего не делает. Фактически, он показывает диалоговое окно с вопросом, хотите ли вы запустить приложение, но когда вы нажимаете Да, ничего не происходит. Кажется, Firefox распознает ссылки типа «intent://...», но не обрабатывает их должным образом.

В: Каков рекомендуемый метод запуска приложения по ссылке в Firefox? Почему метод «URI намерения» не поддерживается Firefox?

Ссылки по теме: https://developers.google.com/chrome/mobile/docs/intents https://stackoverflow.com/a/3472228/1045941 (имейте в виду, что поток довольно Старый)


person Stan    schedule 31.07.2013    source источник
comment
Может ли это быть полезно? support.mozilla.org/en-US/questions/977330 Кажется, Forefox обходит способ обработки намерений Android по умолчанию   -  person Display name    schedule 14.01.2014
comment
Вы нашли какое-нибудь решение?   -  person TrtG    schedule 21.03.2014
comment
Я давно не исследовал это, но провел быстрый тест, и мне кажется, что он все еще не работает. В опубликованной ссылке @Seppl обещают, что это должно быть исправлено в последних версиях. Есть ли у кого-нибудь новая находка?   -  person Stan    schedule 21.03.2014
comment
Насколько я понимаю, в моей собственной установке Firefox на Android теперь есть кнопка робота Android на верхней панели, которая запускает намерение со страницей, которая в настоящее время открыта.   -  person Display name    schedule 24.03.2014
comment
какую версию Android вы используете?   -  person Onur A.    schedule 05.09.2014
comment
В то время я тестировал 4.1.2, 2.3.6 и 2.3.3. На всех из них результаты были одинаковыми для Firefox. Я не тестировал ни новейшие версии Android, ни обновленные версии Firefox с 2013 года.   -  person Stan    schedule 16.09.2014
comment
Если это ошибка Firefox, вы мало что сможете сделать. Если у вас есть доступ к отображаемой веб-странице, вы можете проверить, какая версия браузера (мобильный / firefox) и отобразить ссылку намерения для вашего целевого браузера.   -  person Vincent D.    schedule 12.11.2014
comment
Вариант 1 у меня не работает - просто белый экран. У меня есть зарегистрированная пользовательская схема (например, myscheme), когда я нажимаю ссылку (‹a href=myscheme://article?id=2492628› Magic ‹/a›), я получаю только белый экран (Chrome и браузер по умолчанию работают). В то же время ссылка ‹a href=market://details?id=myscheme› MarketAppURL ‹/a› работает в Firefox. Что я делаю неправильно? Версия Firefox: Mozilla / 5.0 (Android; Mobile; rv: 33.0) Gecko / 33.0 Firefox / 33.0   -  person MingalevME    schedule 12.11.2014
comment
У меня такая же проблема, на Firefox 33.1 Android ничего не работает. Единственное, что нужно сделать, это перенаправить пользователя в Play Store, чтобы они могли открыть приложение оттуда.   -  person Mirko    schedule 12.11.2014
comment
Я не знал веб-намерений, действительно интересная тема. Я прочитал и, кажется, только Chrome является предшественником и поддерживает его прямо сейчас, другие браузеры будут реализовывать медленно. Поэтому я рекомендую вам использовать 1 альтернативный способ прямо сейчас, который я использовал много раз и отлично работает, пока все основные браузеры не внедрили его полностью ...   -  person Sulfkain    schedule 13.11.2014
comment
Firefox теперь поддерживает схему intent:: bugzilla.mozilla.org/show_bug.cgi?id=851693   -  person Jarett Millard    schedule 03.11.2016


Ответы (1)


Один из вариантов - добавить скрытый iframe, например:

<iframe src="myscheme://..." style="visibility: hidden"></iframe>

Он протестирован для работы в Firefox, но не работает в Chrome. Вероятно, вы захотите использовать обнаружение пользовательского агента, вот пример: http://www.mazdigital.com/blog/post/2014/deep-links-on-mobile-browsers-demystified/

person Cash Lo    schedule 26.11.2014
comment
Кажется, это больше не работает в последней бета-версии Firefox на Android. Кошмарный сон. - person st.derrick; 14.08.2015