当前位置: 首页 > 知识库问答 >
问题:

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

吉俊德
2023-03-14

我在我的应用程序中启用了应用链接。它工作正常。但是在我的应用程序中,有一些情况下我无法处理传入的网址。在这种情况下,我想将该网址重定向到设备中的默认浏览器。

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

https://<domain>/<prefix>/<params>

所以根据params,我想要么在应用程序本身中处理应用程序链接,要么将其重定向到默认浏览器。下面是我试图用上面的网址打开浏览器的代码

val browserIntent = Intent(Intent.ACTION_VIEW, Uri.parse(appLinkModel.url))
browserIntent.addCategory(Intent.CATEGORY_APP_BROWSER)
browserIntent.resolveActivity(packageManager)?.let {
    startActivity(browserIntent)
}

我尝试排除addClass()行,但结果是一样的。要么应用程序崩溃(因此出现了解决方案()),要么应用程序在循环中打开自己。

我想做的事

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

共有3个答案

太叔望
2023-03-14
        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);

这将打开所有已安装的网络浏览器,用户可以从中选择!

喻渊
2023-03-14

Kotlin中,尝试使用MakeMain Selector活动:

val defaultBrowser = Intent.makeMainSelectorActivity(Intent.ACTION_MAIN, Intent.CATEGORY_APP_BROWSER)
defaultBrowser.data = Uri.parse("https://yoururl.com/")
startActivity(defaultBrowser)
阙繁
2023-03-14
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);

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

注意-makeMainSicktorActive仅适用于API级别15及以上。

如果你需要支持低于15的API级别,你可以试试这个黑客

 类似资料:
  • 问题内容: 有一个超链接。单击后,我希望在外部浏览器中打开链接。 网络上引用的常用方法似乎是: 但是我没有提及。该链接是从对话框打开的,该对话框是从控制器打开的,而该对话框是通过fxml文件打开的,因此获得对Application对象的引用将非常痛苦。 有人知道这样做的简单方法吗? 干杯 问题答案: 解决方案1:通过您的应用程序向下传递引用。 这可能类似于您预期的“非常痛苦”的方法。但基本上,您会

  • 从这篇文章中,我能够创建一个功能,将用户从一个链接重定向到android或ios。但是,在检测到Android时,我想打开显示我的应用程序的游戏商店。我在重定向时尝试了以下链接: 但它会在浏览器中打开play store。我想打开play store应用程序,我假设我的应用程序用户将使用play store应用程序,所以我不想检查play store应用程序是否已安装。我也尝试了如下的市场链接 但

  • 我已将AssetLink文件托管到我们的域中https://ourdomain/.well-known/assetlinks.json并用计算机进行了验证https://developers.google.com/digital-asset-links/tools/generator通过android studio的应用程序链接Assistant,并通过两种方式获得验证状态。但当我共享调试APK进

  • 演示网站:http://recipe-app.com/recipe/grilled-potato-salad演示应用:http://search-codelabs.appspot.com/codelabs/android-deep-linking 我的测试: 我已经从上面的链接安装了演示应用程序。我用谷歌搜索应用程序搜索了“烤土豆沙拉”,结果发现http://recipe-app.com/reci

  • 我已经在我的设备上本地开发了一个android应用程序(应用程序还没有在android play商店上)。我有以下逻辑在主体活动中获得深度链接。 我用Firebase控制台建立了一些动态链接,并在手机浏览器中打开。但它不是打开我的应用程序并到达行字符串deepLink=appinvitereferral.getdeeplink(intent); 我在清单文件中有意图过滤器。