Android技术求助:无法通过应用打开二维码链接
核心原因
1. Intent Filter的Host属性格式非法
你Manifest中android:host属性值里的/* correct link here, I double checked it */是错误写法——AndroidManifest.xml的属性值不支持/* */这类注释格式,这会导致整个host值被系统判定为无效,进而让对应的<intent-filter>无法被正确识别。
Pixel 6搭载的Android 12+系统对这类无效属性值有容错处理,会尝试忽略错误部分匹配;而Pixel 4的系统版本(多为Android 11及以下)对intent-filter校验更严格,直接判定该filter无效,因此系统找不到能处理对应链接的Activity,抛出ActivityNotFoundException。
2. 系统版本的Intent匹配逻辑差异
Android 12及后续版本优化了intent-filter的解析逻辑,对部分格式不规范的属性有兼容处理;但旧版本系统(如Pixel 4的Android 11)严格遵循XML语法规则,属性值中的非法内容会直接导致整个filter失效,这是问题仅出现在Pixel 4上的关键原因。
修复步骤
修正Manifest中的Host属性:
完全删除android:host属性值里的注释内容,替换为实际的合法域名,例如:<data android:host="your-actual-domain.com" />确保属性值仅包含正确域名,无任何注释或多余字符。
清理并重新编译项目:
执行项目清理缓存操作(如Android Studio中的Build > Clean Project),然后重新编译安装到Pixel 4设备上测试。手动验证Intent匹配:
使用ADB命令直接触发目标Intent,确认修复效果:adb shell am start -a android.intent.action.VIEW -d "https://your-actual-domain.com/your-path"
内容的提问来源于stack exchange,提问作者Giorgi Margiani

