Intereting Posts
Android: как создать представление, чтобы заполнить свободное пространство? Службы Google Play LocationServices.API – новая опция «никогда» Инструмент для создания Splash Screen & Wallpaper для всех размеров и устройств с использованием Single Click Ошибка раздувания при расширении класса Как вызвать калькулятор Android из приложения Как установить высоту ячейки GridView на основе высоты экрана? Ограничение по размеру файла sharepreferences для Android BOOT_COMPLETED не работает Android CREATE TABLE Ошибка android_metadata завершилась неудачей при повторном открытии sqlcipher DB Открытое приложение для Android-разработчиков google для Android, получающее инструкции, начиная с текущей позиции Android Studio Stuck at Gradle Скачать для создания нового проекта Как поместить банку в classpath в Eclipse? Libgdx странное моделирование – ошибка глубины? Как правильно перевести пиксельные координаты в координаты холста в Android? Как получить координаты адреса в android

Перехват ссылок из браузера, чтобы открыть приложение для Android

Я бы хотел, чтобы мое приложение открыло ссылку, когда пользователь нажимает на URL-адрес данного шаблона, вместо того чтобы разрешить браузеру его открывать. Это может быть, когда пользователь находится на веб-странице в браузере или в почтовом клиенте или в WebView в недавно отчеканенном приложении.

Например, нажмите ссылку YouTube из любого места в телефоне, и вам будет предоставлена ​​возможность открыть приложение YouTube.

Как это сделать для моего собственного приложения?

Solutions Collecting From Web of "Перехват ссылок из браузера, чтобы открыть приложение для Android"

Используйте android.intent.action.VIEW категории android.intent.category.BROWSABLE .

Из AndroidManifest.xml приложения Photostream от Romain Guy,

<activity android:name=".PhotostreamActivity" android:label="@string/application_name"> <!-- ... --> <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:scheme="http" android:host="flickr.com" android:pathPrefix="/photos/" /> <data android:scheme="http" android:host="www.flickr.com" android:pathPrefix="/photos/" /> </intent-filter> </activity> 

Когда вы находитесь внутри своей деятельности , вам нужно искать действие, а затем сделать что-то с URL-адресом, которому вы были переданы. Метод Intent.getData() дает вам Uri.

  final Intent intent = getIntent(); final String action = intent.getAction(); if (Intent.ACTION_VIEW.equals(action)) { final List<String> segments = intent.getData().getPathSegments(); if (segments.size() > 1) { mUsername = segments.get(1); } } 

Следует отметить, однако, что это приложение немного устарело (1.2), поэтому вы можете найти лучшие способы достижения этого.

Некоторые библиотеки анализируют параметры из URL автоматически.

такие как

https://github.com/airbnb/DeepLinkDispatch

&&

https://github.com/mzule/ActivityRouter

Более поздний из них написан мной. Который может анализировать параметры заданного типа, а не всегда String.

пример

 @Router(value = "main/:id" intExtra = "id") ... int id = getIntent().getInt("id", 0); 
 private class MyWebViewClient extends WebViewClient { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { setUrlparams(url); if (url.indexOf("pattern") != -1) { // do something return false; } else { view.loadUrl(url); } return true; } }