Скажем, я хочу определить, что такой URI, как:
myapp://path/to/what/i/want?d=This%20is%20a%20test
должен обрабатываться моим собственным приложением или службой. Обратите внимание, что схема есть "myapp"
и нет "http"
, или "ftp"
. Это именно то, что я намереваюсь: определить мою собственную схему URI глобально для ОС Android. Это возможно?
Это в некоторой степени аналогично тому, что уже делают некоторые программы, например, в системах Windows, таких как Skype ( skype://
) или любая программа, запускающая торрент-загрузчик ( torrent://
).
Ответы:
Это очень возможно; Вы определяете схему URI в вашем AndroidManifest.xml, используя
<data>
элемент. Вы устанавливаете фильтр намерений с<data>
заполненным элементом, и вы сможете создать свою собственную схему. ( Подробнее о фильтрах намерений и разрешении намерений здесь .)Вот короткий пример:
В соответствии с тем, как работают неявные намерения, вам необходимо определить как минимум одно действие и одну категорию; здесь я выбрал VIEW в качестве действия (хотя это может быть что угодно) и добавил категорию DEFAULT (так как это требуется для всех неявных намерений). Также обратите внимание, как я добавил категорию BROWSABLE - это необязательно, но это позволит открывать ваши URI из браузера (отличная функция).
источник
В дополнение к ответу @DanielLew , чтобы получить значения параметров, вы должны сделать это:
Пример URI:
myapp://path/to/what/i/want?keyOne=valueOne&keyTwo=valueTwo
в вашей деятельности:
источник
http://www.host.com/directory/value
? Как мы можем получить этоvalue
?uri.getLastPathSegment();
Я настоятельно рекомендую вам не определять свою собственную схему. Это противоречит веб-стандартам для схем URI, которые пытаются жестко контролировать эти имена по уважительной причине - чтобы избежать конфликтов имен между различными объектами. Разместив ссылку на свою схему на веб-сайте, вы поместили это маленькое имя во все пространство имен Интернета и должны следовать этим стандартам.
Если вы просто хотите иметь ссылку на свое собственное приложение, я рекомендую вам следовать подходу, который я описал здесь:
Как зарегистрировать некоторое пространство имен URL (myapp: //app.start/) для доступа к вашей программе, вызывая URL в браузере в ОС Android?
источник
Другой альтернативный подход к Диего - использовать библиотеку:
https://github.com/airbnb/DeepLinkDispatch
Вы можете легко объявить URI, которые вы хотите обработать, и параметры, которые вы хотите извлечь с помощью аннотаций в Activity, например:
Кроме того, параметры запроса также будут передаваться в Activity.
источник
Как вопрос задан много лет назад, и Android развивается очень по этой схеме URI.
От оригинальной схемы URI до глубокой ссылки, а теперь и ссылок на приложения для Android.
Android теперь рекомендует использовать HTTP-URL, а не определять собственную схему URI. Поскольку ссылки приложений Android используют URL-адреса HTTP, которые ссылаются на принадлежащий вам домен веб-сайта, никакое другое приложение не может использовать ваши ссылки. Вы можете проверить сравнение ссылок с глубокими ссылками и приложениями для Android здесь.
Теперь вы можете легко добавить схему URI, используя опцию Android Studio: Инструменты> App Links Assistant. Пожалуйста, ознакомьтесь с подробностями в документе Android: https://developer.android.com/studio/write/app-link-indexing.html
источник