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 方案,您将无法使其正常工作。
我搜索了很多,也阅读了很多答案,但不幸的是我没能成功。
我正在对我的应用程序进行深度 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 方案,您将无法使其正常工作。