android - 如何设置默认 Chrome 自定义标签不必显示“打开方式”
问题描述
我已经使用 Chrome 自定义选项卡构建了一个 Android 应用程序,但是当我单击按钮以显示 URL 时,会出现一个对话框,说我需要选择“打开方式”并列出所有可供选择的浏览器应用程序。我的问题是如何确定该应用程序仅将 Chrome 设置为默认值,而不必再打开“打开方式”对话框。
fab.setOnClickListener {
val url = "http://myurl.com/"
val builder = CustomTabsIntent.Builder()
builder.setToolbarColor(ContextCompat.getColor(this@MainActivity,R.color.colorAccent))
builder.addDefaultShareMenuItem()
val anotherCustomTab = CustomTabsIntent.Builder().build()
val intent = anotherCustomTab.intent
intent.data = Uri.parse("http://myurl.com/")
builder.setShowTitle(true)
val customTabsIntent = builder.build()
customTabsIntent.launchUrl(this@MainActivity, Uri.parse(url))
}
解决方案
我找到了如何验证它,引用了这个,所以我得到了这个编码和工作,不再要求设置浏览器。
fab.setOnClickListener {
val PACKAGE_NAME = "com.android.chrome"
val builder = CustomTabsIntent.Builder()
builder.setToolbarColor(ContextCompat.getColor(this@MainActivity,R.color.colorAccent))
builder.addDefaultShareMenuItem()
builder.setShowTitle(true)
val anotherCustomTab = builder.build()
val intent = anotherCustomTab.intent
intent.data = Uri.parse("http://www.myurl.com/")
val packageManager = packageManager
val resolveInfoList = packageManager.queryIntentActivities(anotherCustomTab.intent, PackageManager.MATCH_DEFAULT_ONLY)
for (resolveInfo in resolveInfoList) {
val packageName = resolveInfo.activityInfo.packageName
if (TextUtils.equals(packageName, PACKAGE_NAME))
anotherCustomTab.intent.setPackage(PACKAGE_NAME)
}
anotherCustomTab.launchUrl(this, anotherCustomTab.intent.data)
}
推荐阅读
- pandas - 带有日期的 DataFrame 列转换为 Unix
- python - 在 python 中使用 Newton-Raphson 求解双曲函数
- if-statement - Google Sheet 的 IF 语句公式
- ruby-on-rails - Errno::ENOTTY Inappropriate ioctl for device when trying to send file to SFTP
- javascript - 如何防止表单字段被清除?
- spring - CachingConnectionFactory 和 ConnectionFactory 有什么区别?
- javascript - 如何在 Django 中更新 html 视图中的数据?
- javascript - 当我尝试以透明度渲染 png 时,gl-react 显示像素化边框
- python - 计算 PySpark 列中的列值
- c# - Xamarin 在 ListView 中全选