Android应用程序链接-在浏览器中从应用程序打开URL而不触发应用程序链接

时间:2019-11-11 11:13:29

标签: android deep-linking android-app-links

我已在我的应用程序中启用了应用程序链接。工作正常。但是在我的应用程序中,有些情况下我无法处理传入的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重定向到默认浏览器(或在其中显示选择器没有我的应用程序),而不会一次又一次触发应用程序链接。那有可能吗?

4 个答案:

答案 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" />