Android App无法通过DeepLink启动问题排查
问题排查与解决
以下是可能遗漏的配置或需要调整的操作:
Intent Filter缺少必要的Category
你的Intent Filter必须同时包含android.intent.category.DEFAULT和android.intent.category.BROWSABLE两个category。DEFAULT确保App能被隐式Intent唤起,BROWSABLE允许浏览器或其他应用通过链接启动你的App。正确的Intent Filter示例:<activity android:name=".YourTargetActivity" android:exported="true"> <!-- Android 12+必须设置该属性为true --> <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="http" android:host="www.example.com" android:pathPrefix="/gizmos" /> </intent-filter> </activity>注意:Android 12及以上版本,目标Activity必须显式设置
android:exported="true",否则无法被外部Intent唤起。Chrome被设为该链接的默认处理应用
若之前手动选择过用Chrome打开此类链接,系统会将Chrome设为默认应用。可以通过以下步骤清除默认设置:- 打开设备设置 → 应用 → 找到Chrome → 进入“默认应用设置”
- 找到“打开链接”选项,点击清除默认值
之后再执行adb命令,系统会弹出应用选择器,你可以选择自己的App。
强制测试App响应(可选)
如果你想直接验证App是否能处理该链接,可以在adb命令中指定你的App包名,跳过系统默认应用选择:adb shell am start -W -a android.intent.action.VIEW -d "http://www.example.com/gizmos" com.your.package.name如果这条命令能成功唤起你的App,说明Intent Filter配置基本正确,问题出在系统默认应用的设置上。
跳过选择器直接唤起App(进阶配置)
若希望系统直接唤起你的App而不弹出选择器,需要完成两步:- 在Intent Filter中添加
android:autoVerify="true" - 在域名根目录(
https://www.example.com/.well-known/assetlinks.json)放置assetlinks.json文件,验证App与域名的关联关系。测试阶段可先忽略此步骤,确保能在选择器中唤起App后再配置。
- 在Intent Filter中添加
内容的提问来源于stack exchange,提问作者Peter Boomsma
相关产品推荐
相关产品推荐

