Android 深度自定义方案 link 对点击无效

Android custom scheme deep link does not work on click

我搜索了很多,也阅读了很多答案,但不幸的是我没能成功。

我正在对我的应用程序进行深度 link 测试,我无法使自定义方案 url 在点击时起作用。

我的清单代码是:

   <activity android:name=".ui.activities.home.HomeActivity"
            android:exported="true"
            android:launchMode="singleTask">
    <!-- for http links -->
        <intent-filter android:label="testHttpDeepLink">
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />
            <!-- Accepts URIs that begin with "http://www.myapp.com/test” -->
            <data android:scheme="http"
                android:host="www.myapp.com"
                android:pathPrefix="/test" />
        </intent-filter>
            <!-- for app links -->
        <intent-filter
            android:label="testAppDeepLink">
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />
            <!-- Accepts URIs that begin with "myapp" -->
            <data android:scheme="myapp"
                android:host="*"/>
    </activity>

当我试图在工作室终端上测试它时,第二种格式工作正常。所以如果我写

adb shell am start -a android.intent.action.VIEW -d "myapp://test" 

app home activity 打开正确。但是当我尝试从 link 打开它时,它不起作用。例如我用可能的格式给自己发了一封电子邮件,例如

1 -> www.myapp.com/test
2 -> myapp://test

第一个工作正常,但第二个不行。它显示消息错误:当我单击 url 时 net::ERR_UNKNOWN_URL_SCHEME。仅当我长按并 select 打开然后将我带到应用主页 activity.

* 不是 android:host 的有效值。 只需将其删除即可。

此外,此方法严重依赖于首先处理 url 的应用程序。 如果您的浏览器不允许系统处理非 http 方案,您将无法使其正常工作。