我在我的应用程序中启用了应用程序链接。它工作正常。但是在我的应用程序中有一些场景我无法处理传入的 url。在这些情况下,我想将该 url 重定向到设备中的默认浏览器。
目前我尝试做的是使用意图打开带有 url 的浏览器,但它再次重定向到我的应用程序本身。应用程序链接的格式 ->
https://<domain>/<prefix>/<params>
Run Code Online (Sandbox Code Playgroud)
因此,根据参数,我想处理应用程序本身中的应用程序链接或将其重定向到默认浏览器。以下是我尝试使用上述网址打开浏览器的代码
val browserIntent = Intent(Intent.ACTION_VIEW, Uri.parse(appLinkModel.url))
browserIntent.addCategory(Intent.CATEGORY_APP_BROWSER)
browserIntent.resolveActivity(packageManager)?.let {
startActivity(browserIntent)
}
Run Code Online (Sandbox Code Playgroud)
我尝试排除 addCategory() 行,但结果是一样的。应用程序崩溃(因此出现了 resolveActivity()),或者应用程序在循环中自行打开。
我想做的事
所以我想要做的是将 url 重定向到默认浏览器(或显示一个没有我的应用程序的选择器),而不是一次又一次地触发应用程序链接。那么这可能吗?
我正在努力使用文件中的<data>元素AndroidManifest.xml来使我的URI匹配工作.我想匹配以下URI:
但不是
我得到它主要是与合作
<data android:scheme="http"
android:host="example.com"
android:pathPattern="/..*" />
<data android:pathPattern="/..*/" />
Run Code Online (Sandbox Code Playgroud)
但它仍然匹配http://example.com/something/else.
我该如何排除这些?