Как открыть установленное приложение с URL-адреса электронной почты в Android?

Я хочу открыть свое приложение с URL-адреса электронной почты, в основном, как показано ниже для Twitter.com.

Электронная почта со ссылкой:

Email with link

Выбор для открытия приложения или браузера:

Select app or browser

После выбора приложения, приложение Twitter открывается:

Open Twitter app

Я пробовал следующий код, но он не работает:

<intent-filter>
    <action android:name="android.intent.action.VIEW"></action>
    <category android:name="android.intent.category.DEFAULT"></category>
    <category android:name="android.intent.category.BROWSABLE"></category>
    <data android:host="www.twitter.com" android:scheme="http"></data>
</intent-filter>

Если у кого-то есть правильный ответ, напишите здесь несколько примеров.

Ответ 1

Для меня работал следующий код:

<intent-filter>
    <action android:name="android.intent.action.VIEW"></action>

    <category android:name="android.intent.category.DEFAULT"></category>
    <category android:name="android.intent.category.BROWSABLE"></category>

    <data
        android:host="www.my.app.com"
        android:path="launch"
        android:scheme="http"></data>
</intent-filter>

Если ссылка электронной почты установлена ​​как http://www.my.app.com/launch.

Ссылка: Запуск приложения Android из ссылки или электронной почты

Ответ 2

Просто просмотрите этот Deeplinking документ google. Вы узнаете об этой концепции глубокой привязки.

Надеюсь, это поможет некоторому телу.

Ответ 3

Пример: ваш url будет чем-то вроде https://roadies.com, и у вас есть фильтр намерений в манифесте, как показано ниже

        android:name="com.droid.MainActivity"
        android:label="@string/app_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:host="roadies.com"
            android:scheme="https" />
    </intent-filter>

    </activity>

Ответ 4

Для меня ни один из ответов, размещенных здесь, не работал. Я пробовал десятки разных синтаксисов без каких-либо успехов. Я получаю ошибку синтаксического анализа при создании приложения через Кордову.

Я, наконец, столкнулся с этим ответом, который привел меня на правильный путь.

Итак, я создал крючок в папке PROJECT_ROOT/hooks/after_prepare/ с именем 010_add_intent_filters.sh. Вот содержание этого крючка:

!/usr/bin/bash

MANIFEST=./platforms/android/AndroidManifest.xml

grep -q pathPattern $MANIFEST && { print "Manifest already modified. Nothing to do."; exit 0; }

AFTER_LINE='android:name="MainActivity"'
ADDITION='\
  <intent-filter>\
    <action android:name="android.intent.action.VIEW"></action>\
    <category android:name="android.intent.category.DEFAULT"></category>\
    <category android:name="android.intent.category.BROWSABLE"></category>\
    <data android:scheme="https" android:host="google.com" android:pathPattern=".*"></data>\
  </intent-filter>
';

sed -i -e "/${AFTER_LINE}/a${ADDITION}" $MANIFEST

Это, наконец, сработало. Никакая модификация config.xml не требуется, если вы берете путь к крюку. Я надеюсь, что это поможет кому-то в этом нуждаться.

PS: Я убежден, что Кордова - отличная технология, но я редко видел такую ​​плохо документированную библиотеку... Как тяжело работать с ней, просто невероятно.