我已在我的应用程序中启用了应用程序链接。工作正常。但是在我的应用程序中,有些情况下我无法处理传入的URL。在那些情况下,我想将该URL重定向到设备中的默认浏览器。
目前,我尝试使用意图使用URL打开浏览器,但它再次重定向到我的应用程序本身。该应用程序链接的格式为->
https://<domain>/<prefix>/<params>
因此,根据参数,我想处理应用程序本身中的应用程序链接,或将其重定向到默认浏览器。以下是我尝试使用上述网址打开浏览器的代码
val browserIntent = Intent(Intent.ACTION_VIEW, Uri.parse(appLinkModel.url))
browserIntent.addCategory(Intent.CATEGORY_APP_BROWSER)
browserIntent.resolveActivity(packageManager)?.let {
startActivity(browserIntent)
}
我尝试排除addCategory()行,但结果相同。应用程序崩溃(因此resolveActivity()),或者应用程序在循环中自行打开。
我想做什么
所以我想做的是将URL重定向到默认浏览器(或在其中显示选择器没有我的应用程序),而不会一次又一次触发应用程序链接。那有可能吗?
答案 0 :(得分:2)
String data = "example.com/your_url?param=some_param"
Intent defaultBrowser = Intent.makeMainSelectorActivity(Intent.ACTION_MAIN, Intent.CATEGORY_APP_BROWSER);
defaultBrowser.setData(data);
startActivity(defaultBrowser);
此技术(使用makeMainSelectorActivity)将强制链接在设备的默认浏览器中打开
注意-makeMainSelectorActivity仅适用于15级及以上的API。
如果您需要支持低于15的API级别,可以尝试this入侵
答案 1 :(得分:1)
在Kotlin
中,尝试使用makeMainSelectorActivity:
val defaultBrowser = Intent.makeMainSelectorActivity(Intent.ACTION_MAIN, Intent.CATEGORY_APP_BROWSER)
defaultBrowser.data = Uri.parse("https://yoururl.com/")
startActivity(defaultBrowser)
答案 2 :(得分:0)
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://stackoverflow.com/questions/58800240/android-app-link-open-a-url-from-app-in-browser-without-triggering-app-link"));
Intent chooseIntent = Intent.createChooser(intent, "Choose from below");
startActivity(chooseIntent);
这将打开所有已安装的Web浏览器,用户可以从中选择!
答案 3 :(得分:0)
很遗憾,我们无法排除任何特定的URL,因为Android不提供该选项。
但是您可以使用路径前缀处理。
// To handle:
http://myhost.com/v/page1?id=123
// To exclude:
http://myhost.com/v/page2?id=123
然后是男人
<data android:scheme="http"
android:host="myhost.com"
android:pathPrefix="/v/page1" />