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

Я пытался запустить приложение по ссылке в электронном письме или из публикации на некоторых сайтах социальных сетей. Проблема в том, что в некоторых устройствах или приложениях Gmail на Android не отображаются теги привязки или ссылки, которые я указал.

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="myappname" />

И я отправляю письмо с этим тегом привязки

myappname://processtobedone/?id=1

Он отлично работает с почтовым приложением, которое есть у меня на устройстве Huawei, но в приложении gmail по умолчанию на устройстве не отображается ссылка, а на некоторых устройствах по умолчанию он добавляет https: в качестве суффикса для тега и запускает браузер.

Ответ 1

Вместо использования настраиваемой схемы вы можете указать <intent-filter>, который идентифицирует URL-адрес, который вы управляете:

<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.this-so-does-not-exist.com"
        android:path="/something"
        android:scheme="http"/>
</intent-filter>

Затем ссылки на http://www.this-so-does-not-exist.com/something будут отображать ваше приложение (в браузере вместе с веб-браузером) на устройствах, на которых установлено ваше приложение, и выведете свою веб-страницу на устройствах, у которых нет вашего приложения.

Ответ 2

Создайте реальную ссылку (http:), которая управляет веб-сайтом, например статический веб-сайт на amazon s3, используйте javascript на этом сайте для обнаружения пользовательского агента Android и затем перенаправляйте ссылку на привязку.

Ответ 3

<activity
android:name=".SplashEmailActivity"
android:screenOrientation="portrait"
android:exported="true"
android:launchMode="singleInstance" android:configChanges="orientation|keyboard|keyboardHidden|screenSize"
android:windowSoftInputMode="stateHidden|adjustResize" >

<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="your.domain.name"/>

</intent-filter>

</activity>

Ответ 4

Чтобы вызвать ссылку на приложение на устройстве, например, в вашем случае myappname://processtobedone/?id=1, самый простой способ - создать базовый HTML файл страницы (с именем deeplink_test.html) и отправить его на вашу электронную почту после откройте это письмо и перейдите к html файлу, откройте браузер Chrome и нажмите на ссылку привязки.

<html>
    <head>
        <title>DeepLink Test</title>
    <head>
    <body>
        <a href="myappname://processtobedone/?id=1">run deeplink</a>
    <body/>
</html>