Можно ли сделать такую ссылку как:
<a href="anton://useful_info_for_anton_app">click me!</a>
заставить мое приложение Anton запускаться?
Я знаю, что это работает для приложения Android Market с рыночным протоколом, но можно ли сделать нечто подобное с другими приложениями?
Вот пример ссылки, которая запускает Android Market:
<a href="market://search?q=pname:com.nytimes.android">click me!</a>
Обновление:
Ответ, который я принял от eldarera, отлично работает, но я просто хочу упомянуть, что у меня возникли некоторые проблемы с порядком подэлементов <intent-filter>
тега. Я предлагаю вам просто сделать еще один <intent-filter>
с новыми подэлементами в этом теге, чтобы избежать проблем, которые у меня были. Например, моя AndroidManifest.xml
выглядит так:
<activity android:name=".AntonWorld"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
<data android:scheme="anton" />
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.BROWSABLE" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
Ответы:
Я думаю, вы захотите посмотреть на
<intent-filter>
элемент вашего файла Mainfest. В частности, посмотрите на документацию для<data>
подэлемента.По сути, вам нужно определить свою собственную схему. Что-то вроде:
Тогда вы сможете запустить свое приложение со ссылками, которые начинаются со
anton:
схемы URI.источник
Пожалуйста, НЕ используйте свою собственную схему! Схемы URI являются сетевым глобальным пространством имен. У вас есть схема "anton:" во всем мире? Нет? Тогда не используйте его.
Одним из вариантов является наличие веб-сайта и фильтр намерений для определенного URI на этом веб-сайте. Например, вот что Market делает для перехвата URI на своем веб-сайте:
В качестве альтернативы, есть схема «намерение:». Это позволяет вам описать практически любой Намерение как URI, который браузер попытается запустить при нажатии. Чтобы построить такую схему, лучше всего написать код для создания намерения, которое вы хотите запустить, а затем распечатать результат intent.toUri (Intent.URI_INTENT_SCHEME).
Вы можете использовать действие с этим намерением, чтобы найти любое действие, поддерживающее это действие. Из соображений безопасности браузер автоматически добавит категорию BROWSABLE в намерение перед его запуском; он также удалит любой явный компонент, который вы предоставили по той же причине.
Лучший способ использовать это, если вы хотите, чтобы он запускал только ваше приложение, - это использовать собственное действие с заданной областью действия и использовать Intent.setPackage (), чтобы сказать, что Intent будет соответствовать только вашему приложению.
Компромиссы между двумя:
Для http URI необходим домен, которым вы владеете. Пользователь всегда получит возможность показать URI в браузере. У него очень хорошие резервные свойства, при которых, если ваше приложение не установлено, они просто окажутся на вашем веб-сайте.
целевые URI требуют, чтобы ваше приложение уже было установлено и только на телефонах Android. Разрешить почти любое намерение (но всегда включать категорию BROWSABLE и не поддерживать явные компоненты). Они позволяют направить запуск только на ваше приложение, при этом у пользователя нет возможности вместо этого перейти в браузер или любое другое приложение.
источник
market://
ссылки :)Я извиняюсь за продвижение себя, но у меня есть плагин jQuery для запуска нативных приложений по веб-ссылкам https://github.com/eusonlito/jquery.applink
Вы можете использовать это легко:
источник
Я тоже сталкивался с этой проблемой и вижу много нелепых страниц. Я узнал, что для того, чтобы сделать ваше приложение доступным для просмотра, измените порядок элементов XML, вот так:
Это сработало для меня и может помочь вам.
источник
Вот мой рецепт:
Создайте статический HTML-код, который перенаправляет на запрошенный URL-адрес приложения, и разместите эту страницу в Интернете.
Таким образом, ссылки, которыми вы делитесь, являются «реальными» ссылками для Android (они будут «кликабельными»).
Вы «делитесь» обычной HTTP-ссылкой, www.your.server.com/foo/bar.html. Этот URL-адрес возвращает простой восьмистрочный HTML-код, который перенаправляет на URI вашего приложения (window.location = "blah: // kuku") ( обратите внимание, что «бла» больше не должен быть HTTP или HTTPS).
Как только вы это запустите, вы можете дополнить HTML всеми необычными возможностями, как предложено выше.
Это работает со встроенным браузером, Opera и Firefox (не проверял ни один другой браузер). Firefox спрашивает: «Эту ссылку нужно открыть с помощью приложения» (хорошо, отмена). Другие браузеры, очевидно, не слишком беспокоятся о безопасности, они просто открывают приложение, без вопросов.
источник
<a href="iamnearby://register_activate">Activate</a>
Как только у вас есть намерение и настраиваемая схема URL для вашего приложения, этот JavaScript-код в верхней части принимающей страницы работал для меня как на iOS, так и на Android:
Это было проверено только в браузере Android. Я не уверен насчет Firefox или Opera. Ключ в том, что браузер Android не будет выдавать вам приятное исключение
window.open(custom_url, '_blank')
, он потерпит неудачу и вернет,null
который вы можете проверить позже.Обновление: используется
store_loc = "https://play.google.com/store/apps/details?id=com.raditaz";
для ссылки на Google Play на Android.источник
Вы можете рассмотреть библиотеку для обработки глубокой ссылки на ваше приложение:
https://github.com/airbnb/DeepLinkDispatch
Вы можете добавить фильтр намерений к аннотированному действию, как это было предложено выше. Он будет обрабатывать маршрутизацию и анализ параметров для всех ваших глубоких ссылок. Например, ваша MainActivity может иметь что-то вроде этого:
Он также может обрабатывать параметры запроса.
источник
Попробуйте мой простой трюк:
и моя ссылка HTML:
или вы можете сделать <A HREF = «classRegister: правда »> <- «истина» значение для класса файла
однако этот скрипт работает для mailto link :)
источник
JavascriptInterface
с обходным путем, это правильный обходной путь, если вам нужно поддерживать 2.3, где JavascriptInterface содержит ошибки.Этот метод не вызывает диалоговое окно устранения неоднозначности с просьбой открыть приложение или браузер.
Если вы зарегистрируете следующее в своем манифесте
и нажмите этот URL-адрес из электронной почты на вашем телефоне, например
тогда android попытается найти приложение с пакетом com.myApp, которое отвечает вашим намерениям в галерее и имеет схему myApp . Если это невозможно, он доставит вас в магазин в поисках com.myApp , который должен быть вашим приложением.
источник