Сделать ссылку в браузере Android запустите мое приложение?

Можно ли сделать ссылку, такую ​​как:

click me! 

вызвать приложение Anton для запуска?

Я знаю, что это работает для приложения Android Market с рыночным протоколом, но что-то подобное можно сделать с другими приложениями?

Вот пример ссылки, которая запустит Android Market:

 click me! 

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

             

Я думаю, вам нужно посмотреть на элемент вашего файла 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); } 
  • Как вы рисуете текст с помощью frameworks на MapView в Android?
  • Как я могу взаимодействовать с элементами за прозрачным Android-приложением?
  • Как работает setMicrophoneMute ()?
  • Получать push-уведомления в одном приложении Android из двух проектов Firebase
  • Оффлайн-возможности Firebase и addListenerForSingleValueEvent
  • В Fragment на задней кнопке нажата Операция пуста
  • Как использовать Bluetooth в эмуляторе Android?
  • Базовая связь между двумя fragmentами
  • Как создать круговой ProgressBar в android?
  • Почему я не могу использовать метод overulateViewHolder override?
  • Как включить * .so библиотеку в Android Studio?
  • Давайте будем гением компьютера.