AAOS中OAuth2工作流及CustomTabsIntent调用异常问题咨询
AAOS应用OAuth2认证:CustomTabsIntent打开链接查看器的问题解决
问题描述
我正在开发首款AAOS(甚至Android)应用,若有新手错误请见谅。我计划开发对接某音乐流服务的应用,该服务有公开API且采用OAuth2认证:
- 最初想使用WebView,但谷歌已禁止将WebView用于OAuth2,此举合理,因应用可能干扰或窃取登录凭证。
- 尝试使用CustomTabsIntent却失败:调用
customTabsIntent.launchUrl(this, Uri.parse(url))时,打开的是“链接查看器”应用,仅将链接显示为二维码,至少在我测试用的沃尔沃模拟器中是如此。

注:忽略当前代码/项目现状,先解决此障碍。
解决方案
确认模拟器有支持CustomTabs的浏览器
AAOS设备一般预装Chrome,若你的沃尔沃模拟器没有,需手动安装Chrome或其他支持CustomTabs的浏览器——CustomTabs依赖浏览器提供的实现,没有的话系统会 fallback到其他能处理URL的应用(比如你遇到的链接查看器)。强制指定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))
- 添加无CustomTabs支持的 fallback逻辑
如果设备确实没有支持的浏览器,直接用系统默认浏览器打开URL:
val browserIntent = Intent(Intent.ACTION_VIEW, Uri.parse(url)) startActivity(browserIntent)
- 检查模拟器默认应用设置
进入模拟器的「设置-默认应用-浏览器」,确认默认浏览器是支持CustomTabs的应用(比如Chrome),避免系统默认调用链接查看器处理URL。
内容的提问来源于stack exchange,提问作者Michael Kreich
相关产品推荐
相关产品推荐

