Как открыть установленное приложение с 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: Я убежден, что Кордова - отличная технология, но я редко видел такую плохо документированную библиотеку... Как тяжело работать с ней, просто невероятно.