我有这个 URL 指向我们应用程序的数据安全页面:
val url = "https://play.google.com/store/apps/datasafety?id=com.example"
当我尝试从我们的应用程序中在浏览器(而不是浏览器)中打开此页面时,PlayStore 应用程序会打开我们应用程序的起始页面,而不是数据安全详细信息。
startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(url)))
有没有办法避免这种情况,强制系统用浏览器打开页面?
这是我解决这个问题的方法。为了强制浏览器处理意图,我们必须在意图中设置浏览器的包名称,如下所示:
val intent = Intent(Intent.ACTION_VIEW, Uri.parse(url))
intent.`package` = browserPackage
startActivity(intent)
要获得
browserPackageName
,我们可以这样做(基于https://stackoverflow.com/a/23622337/61479)
val browserPackage: String? = packageManager.resolveActivity(
Intent(Intent.ACTION_VIEW, Uri.parse("https://www.example.com")),
PackageManager.MATCH_DEFAULT_ONLY
)?.activityInfo?.packageName
为此,我们还需要将以下内容添加到 AndroidManifest 中
<queries>
<intent>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="https" />
</intent>
</queries>