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

Android应用程序链接-在浏览器中打开应用程序的url而不触发应用程序链接,android,deep-linking,android-app-links,Android,Deep Linking,Android App Links,我已在应用程序中启用应用程序链接。它很好用。但在我的应用程序中,有些情况下我无法处理传入的url。在这些情况下,我希望将该url重定向到设备中的默认浏览器 目前,我尝试使用intents打开带有url的浏览器,但它再次重定向到我的应用程序本身。应用程序链接的格式为-> https://<domain>/<prefix>/<params> 我尝试排除addCategory()行,但结果相同。要么应用程序崩溃(因此resolveActivity()),要么应用程

我已在应用程序中启用应用程序链接。它很好用。但在我的应用程序中,有些情况下我无法处理传入的url。在这些情况下,我希望将该url重定向到设备中的默认浏览器

目前,我尝试使用intents打开带有url的浏览器,但它再次重定向到我的应用程序本身。应用程序链接的格式为->

https://<domain>/<prefix>/<params>
我尝试排除addCategory()行,但结果相同。要么应用程序崩溃(因此resolveActivity()),要么应用程序在循环中自行打开

我想做什么

因此,我要做的是将url重定向到默认浏览器(或显示选择器,其中不包含我的应用程序),而不必一次又一次触发应用程序链接。那么这可能吗

        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浏览器

不幸的是,我们不能排除任何特定的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" />

此技术(使用makeMainSelectorActivity)将强制链接在设备的默认浏览器中打开

注-仅适用于API 15级及以上


如果需要支持低于15的API级别,可以在Kotlin中尝试hack,尝试使用:


我已经试过了。由于应用程序链接,这只是重定向回我的应用程序本身。抱歉。我不能用这个。因为在url中,唯一的更改是“param”部分。根据参数,我必须决定是在应用程序还是浏览器中处理它。尝试在自定义chrome选项卡中打开
<data android:scheme="http"
      android:host="myhost.com"
      android:pathPrefix="/v/page1" />
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);
val defaultBrowser = Intent.makeMainSelectorActivity(Intent.ACTION_MAIN, Intent.CATEGORY_APP_BROWSER)
defaultBrowser.data = Uri.parse("https://yoururl.com/")
startActivity(defaultBrowser)