Сделать ссылку в браузере Android запустите мое приложение?
Можно ли сделать ссылку, такую как:
click me!
вызвать приложение Anton для запуска?
Я знаю, что это работает для приложения Android Market с рыночным протоколом, но что-то подобное можно сделать с другими приложениями?
- как использовать mkfifo с помощью Android NDK
- Управление камерой для съемки в портрете не приводит к повороту окончательных изображений
- Как заставить приложение игнорировать изменение ориентации экрана?
- Как настроить Android Studio на работу полностью в автономном режиме?
- Выполнение не выполнено для задачи ': app: compileDebugAidl': aidl отсутствует
Вот пример ссылки, которая запустит Android Market:
click me!
Обновление . Ответ, который я принял, предоставленный eldarerathis, отлично работает, но я просто хочу упомянуть, что у меня были некоторые проблемы с порядком подэлементов . Я предлагаю вам просто сделать еще один
с новыми подэлементами в этом теге, чтобы избежать проблем, которые у меня были. Например, мой
AndroidManifest.xml
выглядит так:
- Уведомления в определенное время каждый день
- Вывод мусора: MediaPlayer завершился без выпуска
- ИК-излучатель и Android 5.0
- Показать всплывающее окно над маркером карты в MapView
- Как распечатать возвращенное сообщение от HttpResponse?
- Проверка сообщения тоста в эндшпиле android
- Возможно ли запустить одновременно несколько AsyncTask?
- Как правильно использовать AsyncTask в Android
Я думаю, вам нужно посмотреть на элемент
вашего файла Mainfest. В частности, посмотрите документацию для подэлемента .
В принципе, вам нужно будет определить свою собственную схему. Что-то вроде:
<--Not positive if this one is needed ...
Затем вы сможете запустить приложение со ссылками, которые начинаются с схемы anton:
URI.
Пожалуйста, НЕ используйте свою собственную подобную схему !!! Схемы URI представляют собой глобальное пространство имен в сети. У вас есть схема «anton:» по всему миру? Нет? Тогда НЕ используйте его.
Один из вариантов – иметь веб-сайт и иметь фильтр намерений для определенного URI на этом веб-сайте. Например, это то, что Market делает для перехвата URI на своем веб-сайте:
В качестве альтернативы существует схема «намерение:». Это позволяет вам описать практически любое намерение как URI, которое браузер попытается запустить при нажатии. Чтобы построить такую схему, лучший способ – просто написать код для создания намерения, который вы хотите запустить, а затем распечатать результат намерения.toUri (Intent.URI_INTENT_SCHEME).
Вы можете использовать действие с этим намерением для поиска любой активности, поддерживающей это действие. Браузер автоматически добавит категорию BROWSABLE к намерению перед ее запуском по соображениям безопасности; он также лишит любой явный компонент, который вы поставили по той же причине.
Лучший способ использовать это, если вы хотите, чтобы он запускал только ваше приложение, – это ваше собственное действие с областью действия и использование Intent.setPackage (), чтобы сказать, что намерение будет соответствовать вашему приложению.
Компромиссы между ними:
-
http URI требуют наличия у вас домена. Пользователь всегда будет иметь возможность показывать URI в браузере. Он имеет очень хорошие свойства возврата, если приложение не установлено, они просто приземляются на ваш веб-сайт.
-
для URI URI требуется, чтобы ваше приложение уже было установлено и только на телефонах Android. Разрешить почти любые намерения (но всегда включать категорию BROWSABLE и не поддерживать явные компоненты). Они позволяют вам запускать запуск только в ваше приложение, если у пользователя нет возможности переходить в браузер или любое другое приложение.
Я прошу прощения за продвижение себя, но у меня есть плагин jQuery для запуска собственных приложений из веб-ссылок https://github.com/eusonlito/jquery.applink
Вы можете использовать его легко:
My Facebook Profile
Я также столкнулся с этой проблемой и увидел множество абсурдных страниц. Я узнал, что для просмотра вашего приложения, изменения порядка элементов XML, это:
Это работало для меня и могло помочь вам.
Вот мой рецепт:
Создайте статический HTML-код, который перенаправляет ваш URL-адрес вашего приложения, помещая эту страницу в Интернет.
Таким образом, ссылки, которыми вы делитесь, являются «реальными» ссылками в отношении Android (они будут «интерактивными»).
Вы делитесь обычной HTTP-ссылкой, http://www.your.server.com/foo/bar.html Этот URL-адрес возвращает простой 8-строчный HTML-код, который перенаправляет на URI вашего приложения (window.location = “blah: // kuku”) ( обратите внимание, что «blah» больше не должен быть HTTP или HTTPS).
Как только вы начнете работать, вы можете увеличить HTML-код со всеми фантастическими возможностями, как было предложено выше.
Это работает со встроенным браузером, Opera и Firefox (не проверял какой-либо другой браузер). Firefox спрашивает: «Эта ссылка должна быть открыта приложением» (ok, cancel). Другие браузеры, похоже, не очень беспокоятся о безопасности, они просто открывают приложение, никаких вопросов не задают.
После того, как у вас есть намеренная и настраиваемая схема URL для вашего приложения, этот код javascript в верхней части страницы-получателя работал для меня как на iOS, так и на Android:
Это было протестировано только в браузере Android. Я не уверен в Firefox или Opera. Ключ, даже несмотря на то, что браузер Android не будет window.open(custom_url, '_blank')
вам приятное исключение в 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 может иметь что-то вроде этого:
@DeepLink("somePath/{useful_info_for_anton_app}") public class MainActivity extends Activity { ... }
Он также может обрабатывать параметры запроса.
Попробуйте мой простой трюк:
public boolean shouldOverrideUrlLoading(WebView view, String url) { if(url.startsWith("classRegister:")) { Intent MnRegister = new Intent(getApplicationContext(), register.class); startActivity(MnRegister); } view.loadUrl(url); return true; }
и моя html-ссылка:
Go to register.java
или вы можете сделать <- "true" значение для имени файла класса
однако этот скрипт работает для mailto link 🙂
if (url.startsWith("mailto:")) { String[] blah_email = url.split(":"); Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND); emailIntent.setType("text/plain"); emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, new String[]{blah_email[1]}); emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, what_ever_you_want_the_subject_to_be)"); Log.v("NOTICE", "Sending Email to: " + blah_email[1] + " with subject: " + what_ever_you_want_the_subject_to_be); startActivity(emailIntent); }