Android отвечает на URL в намерении

152

Я хочу, чтобы мое намерение было запущено, когда пользователь переходит на определенный URL-адрес: например, рынок Android делает это с помощью http://market.android.com/ urls. как и YouTube. Я хочу, чтобы моя тоже это сделала.

Исаак Уоллер
источник
8
Там отличный ответ на этот вопрос в stackoverflow.com/questions/2448213/...
neu242
2
Существует лучший ответ на этот вопрос stackoverflow.com/questions/1609573/...
Rds

Ответы:

192

Я это сделал! Использование <intent-filter>. Поместите в свой файл манифеста следующее:

<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:host="www.youtube.com" android:scheme="http" />
</intent-filter>

Это работает отлично!

Исаак Уоллер
источник
9
Это не работает для меня. Можете ли вы привести пример-ссылку, которая откроет приложение.
Паскаль Кляйн
7
Я бы хотел отреагировать на "www.youtube.com", но НЕ на "www.youtube.com/fr /" ... Есть идеи, как мне это сделать?
Гилбоу
5
посмотрите stackoverflow.com/questions/2958701/…
J-Rou
1
Не уверен, как это работает для всего мира. Просто не работает на Chrome, и он всегда открывает ссылку в браузере, пока вы не разместите элемент «android: pathPrefix». Ответ в любом случае не имеет значений категории, как указано в документации. Если это все еще не работает для кого-то, отошлите это, пожалуйста: stackoverflow.com/a/21727055/2695276 PS: боролись за это несколько дней.
Раджат Шарма
1
Важно знать, что это работает только в том случае, если вы открываете ссылку ВНЕ браузера, из приложения заметок или сообщение из WhatsApp. Он работает на
леденце
10

Вам может понадобиться добавить различные перестановки в ваш фильтр намерений, чтобы он работал в разных случаях (http / https / ect).

Например, мне пришлось сделать следующее для приложения, которое откроется, когда пользователь откроет ссылку на формы Google Drive, www.docs.google.com/forms

Обратите внимание, что префикс пути не является обязательным.

        <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="docs.google.com"
                android:pathPrefix="/forms"/>
            <data
                android:scheme="http"
                android:host="www.docs.google.com"
                android:pathPrefix="/forms" />

            <data
                android:scheme="https"
                android:host="www.docs.google.com"
                android:pathPrefix="/forms" />

            <data
                android:scheme="https"
                android:host="docs.google.com"
                android:pathPrefix="/forms" />
        </intent-filter>
Джордан Реджод
источник