Как реализовать мою очень собственную схему URI на Android

Скажите, что я хочу определить это URI, такой как:

myapp://path/to/what/i/want?d=This%20is%20a%20test

должен быть обработан моим собственным приложением или сервисом. Заметьте, что схема "myapp" и нет "http", или "ftp". Это точно, что я предназначаю: определить мою собственную схему URI глобально для ОС Android. Действительно ли это возможно?

Это несколько походит на то, что некоторые программы уже делают на, например, системы Windows, такие как Skype (skype://) или любая программа загрузчика потока (torrent://).

159
задан Jost 15 August 2015 в 10:14
поделиться

2 ответа

Это вполне возможно; вы определяете схему URI в AndroidManifest.xml, используя элемент. Вы устанавливаете фильтр намерений с заполненным элементом , и вы сможете создать свою собственную схему. (Подробнее о фильтрах намерений и разрешении намерений здесь.)

Вот небольшой пример:

<activity android:name=".MyUriActivity">
    <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="myapp" android:host="path" />
    </intent-filter>
</activity>

В соответствии с тем, как работают неявные намерения, вам нужно определить по крайней мере одно действие и одну категорию; здесь я выбрал VIEW в качестве действия (хотя это может быть что угодно) и обязательно добавил категорию DEFAULT (поскольку это требуется для всех неявных намерений). Также обратите внимание, как я добавил категорию BROWSABLE - это не обязательно, но это позволит вашим URI быть открываемыми из браузера (интересная функция).

211
ответ дан 23 November 2019 в 21:36
поделиться

Я настоятельно рекомендую не определять вашу собственную схему. Это противоречит веб-стандартам для схем URI, которые пытаются жестко контролировать эти имена по уважительной причине - чтобы избежать конфликтов имен между различными объектами.Как только вы разместите ссылку на свою схему на веб-сайте, вы поместите это маленькое имя во все пространство имен Интернета и должны следовать этим стандартам.

Если вы просто хотите иметь ссылку на свое собственное приложение, я рекомендую вам следовать подходу, который я описал здесь:

Как зарегистрировать некоторое пространство имен URL (myapp: //app.start/) для доступа свою программу, вызвав URL-адрес в браузере в ОС Android?

25
ответ дан 23 November 2019 в 21:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: