首页 > 解决方案 > Android 12 在 Chrome 意图中打开链接

问题描述

自 Android 12 起,只能使用一个“已批准”的应用打开链接。截至目前,我在 AndroidManifest.xml 中将我的应用程序支持的 url 定义为意图过滤器。我的应用程序中还有一个按钮,可以创建在浏览器中打开链接的意图。

但是,由于 Android 12 的限制,如果我将 url 绑定到我的应用程序,单击在浏览器中打开按钮确实会重新打开我的应用程序,这是一种非常不受欢迎的行为。

有没有办法强制在 chrome(或其他浏览器)中打开 url?我检查了 android 开发人员文档,但没有找到任何关于它的信息。

谢谢

标签: androidgoogle-chromeurlandroid-intenthyperlink

解决方案


您可以将默认浏览器显式指定为处理您的意图的包:

val defaultBrowserIntent = Intent(Intent.ACTION_VIEW, Uri.parse("http://"))

// This would be Chrome if it's the selected default browser
val defaultBrowserPackageName = packageManager.resolveActivity(
  defaultBrowserIntent, 
  PackageManager.MATCH_DEFAULT_ONLY
)
  ?.activityInfo
  ?.packageName

val yourIntent = Intent(context, ...).apply {
  package = defaultBrowserPackageName
}

推荐阅读