网页中deeplink正确打开方式及无需网页触发deeplink的方法
Android Intent 格式 Deeplink 基础规则
你提到的这类以intent://开头的链接是安卓系统专属的Intent协议深度链接,直接在浏览器地址栏输入无法唤起应用是浏览器的安全限制:只有用户主动触发的交互行为才可以唤起应用,手动输入地址栏的行为默认不会触发跳转逻辑。
这类deeplink的标准使用规则如下:
- 格式必须符合安卓官方Intent URI规范,基础结构为:
intent://[host/path]#Intent;[参数键值对];end,常用必填/可选参数包括:package:目标应用的包名,用于避免多应用匹配冲突,大部分场景下为必填项scheme:目标应用注册的跳转协议,需和应用Manifest里注册的配置一致action、category、component:可选参数,用于精准匹配应用内的响应页面S.[参数名]=[参数值]:用于向目标应用传递字符串类型的额外参数
- 目标应用必须在
AndroidManifest.xml中注册对应的Intent Filter,匹配对应的host、scheme、包名等参数,否则跳转无响应 - 网页场景下必须在用户主动交互的事件回调(如点击、触摸事件)中触发跳转,直接自动执行JS跳转、iframe加载链接都会被浏览器拦截,你提到的a标签点击跳转就是符合要求的触发方式,示例代码如下:
<a href="intent://www.youtube.com/watch?v=uYqxf5eiLSU#Intent;package=com.google.android.youtube;scheme=https;end">Click to open in android.</a>
- 跳转失败时可配置
S.browser_fallback_url参数指定兜底跳转的网页地址,避免用户看到系统错误提示
无需网页的Deeplink触发方式
1. ADB命令触发
这是开发测试阶段最常用的方式,只要设备开启了USB调试,直接执行以下命令即可触发跳转:
adb shell am start -a android.intent.action.VIEW -d "intent://www.youtube.com/watch?v=uYqxf5eiLSU#Intent;package=com.google.android.youtube;scheme=https;end"
2. 安卓原生应用内触发
原生安卓开发时可以直接解析Intent URI构造跳转逻辑,不需要依赖网页,示例Java代码:
try { Intent intent = Intent.parseUri("intent://www.youtube.com/watch?v=uYqxf5eiLSU#Intent;package=com.google.android.youtube;scheme=https;end", Intent.URI_INTENT_SCHEME); if (intent.resolveActivity(getPackageManager()) != null) { startActivity(intent); } } catch (URISyntaxException e) { e.printStackTrace(); }
3. 桌面快捷方式/小组件触发
可以通过系统自带的快捷方式功能,或者第三方快捷方式工具,自定义配置桌面快捷方式的跳转目标为对应的Intent链接,点击快捷方式即可直接唤起对应应用页面。
4. 系统通知、短信等场景触发
安卓系统的推送通知、短信、日历提醒等系统级场景中,都可以直接配置Intent Deeplink作为跳转目标,用户点击对应内容即可直接唤起应用,不需要经过网页中转。
内容的提问来源于stack exchange,提问作者viwichi
相关产品推荐
相关产品推荐

