如何让ADB命令模拟真实DeepLink的跳转行为?
解决方案:模拟真实App Links行为的ADB命令
普通的adb shell am start -d命令会触发隐式Intent匹配,系统会列出所有支持该URL的应用,因此无论DeepLink是否验证都会弹出选择框。要模拟用户点击URL时的真实行为(验证通过直接跳应用,未验证则打开浏览器),需要添加参数模拟来自信任来源的Intent请求,具体如下:
核心命令:模拟浏览器发起的跳转
使用--calling-package参数指定浏览器包名,模拟浏览器打开URL的场景(系统会自动应用App Links验证规则):
adb shell am start -d "https://www.airbnb.co.uk/rooms/48033927" --calling-package "com.android.chrome"
- 如果目标应用已完成该域名的App Links验证,系统会直接跳转至应用内对应页面;
- 如果未验证,系统会直接打开指定的浏览器(Chrome)加载该URL,不会弹出应用选择框。
你可以根据测试设备上的默认浏览器替换包名:
- Google Chrome:
com.android.chrome - 系统默认浏览器(部分设备):
com.google.android.webview或com.android.browser
额外验证:确认App Links状态
在测试前,可先用以下命令确认应用的App Links验证状态:
adb shell pm get-app-links --user cur <你的应用包名>
关注输出中的verified字段(true表示已验证)和userSetDefault字段(true表示用户手动设置为默认)。
为什么普通命令无效?
普通的am start -d没有指定调用来源,系统会将其视为“匿名”Intent请求,因此会触发所有匹配该URL的应用展示选择框,忽略App Links的验证规则。只有当请求来自浏览器等信任来源时,系统才会检查应用是否已验证该域名,从而执行自动跳转或打开浏览器的逻辑。
内容的提问来源于stack exchange,提问作者Elye
相关产品推荐
相关产品推荐

