You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AAOS中OAuth2工作流及CustomTabsIntent调用异常问题咨询

AAOS应用OAuth2认证:CustomTabsIntent打开链接查看器的问题解决

问题描述

我正在开发首款AAOS(甚至Android)应用,若有新手错误请见谅。我计划开发对接某音乐流服务的应用,该服务有公开API且采用OAuth2认证:

  • 最初想使用WebView,但谷歌已禁止将WebView用于OAuth2,此举合理,因应用可能干扰或窃取登录凭证。
  • 尝试使用CustomTabsIntent却失败:调用customTabsIntent.launchUrl(this, Uri.parse(url))时,打开的是“链接查看器”应用,仅将链接显示为二维码,至少在我测试用的沃尔沃模拟器中是如此。

链接查看器显示二维码

注:忽略当前代码/项目现状,先解决此障碍。

解决方案

  1. 确认模拟器有支持CustomTabs的浏览器
    AAOS设备一般预装Chrome,若你的沃尔沃模拟器没有,需手动安装Chrome或其他支持CustomTabs的浏览器——CustomTabs依赖浏览器提供的实现,没有的话系统会 fallback到其他能处理URL的应用(比如你遇到的链接查看器)。

  2. 强制指定CustomTabs使用的浏览器包名
    通过指定Chrome的包名,避免系统随机选择应用,代码示例:

// 获取Chrome的包名
val chromePackage = CustomTabsClient.getPackageName(this, listOf("com.android.chrome"))
val customTabsIntent = CustomTabsIntent.Builder()
    .apply {
        chromePackage?.let { setPackage(it) }
    }
    .build()
customTabsIntent.launchUrl(this, Uri.parse(url))
  1. 添加无CustomTabs支持的 fallback逻辑
    如果设备确实没有支持的浏览器,直接用系统默认浏览器打开URL:
val browserIntent = Intent(Intent.ACTION_VIEW, Uri.parse(url))
startActivity(browserIntent)
  1. 检查模拟器默认应用设置
    进入模拟器的「设置-默认应用-浏览器」,确认默认浏览器是支持CustomTabs的应用(比如Chrome),避免系统默认调用链接查看器处理URL。

内容的提问来源于stack exchange,提问作者Michael Kreich

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 21:30:56