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

Android默认相机扫描非HTTP(S) URI二维码无法唤起应用问题求助

问题分析

核心问题是Android默认相机扫描器仅对带//的URI(如HTTP(S)、geo://这类)才会触发跳转逻辑,符合RFC7565的无//格式自定义URI(如acct:foobar)会被识别为普通文本,仅提供复制功能——尽管你的Intent Filter配置是正确的(adb命令可验证)。

可行解决方案

1. 调整自定义URI格式,添加//

Android默认相机的链接识别逻辑更偏向RFC 3986的分层URI格式(scheme后带//),而非RFC7565的opaque URI。你可以把URI修改为:

acct://foobar

对应的Intent Filter无需大幅修改,保持原有配置即可,也可补充host规则增强匹配:

<intent-filter>
  <action android:name="android.intent.action.VIEW" />
  <category android:name="android.intent.category.DEFAULT" />
  <category android:name="android.intent.category.BROWSABLE" />
  <data android:scheme="acct" android:host="*" />
</intent-filter>

生成此格式的二维码后,默认相机扫描时会识别为可跳转链接,点击即可唤起你的Activity。

2. 利用App Links(HTTP(S) URI唤起)

如果不想修改自定义scheme格式,可使用HTTP(S) URI配合App Links实现:

  • 注册一个域名,在该域名下放置/.well-known/assetlinks.json文件,配置应用签名和包名
  • 在Intent Filter中添加对应的HTTP(S) scheme、host规则
  • 生成包含该HTTP链接的二维码,扫描后默认相机会直接唤起应用(无需用户选择)

这种方式兼容性更好,但需要域名和服务器支持。

3. 使用第三方二维码扫描器

Android默认相机的链接识别存在局限性,第三方扫描器(如ZXing官方扫描App)对自定义URI的支持更完善,能正确识别acct:foobar这类格式并触发Intent跳转。如果允许用户使用第三方工具,这是最直接的临时解决方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 21:52:27