您可以通过 Android Intent 直接从 Android 设备上的网页启动应用。您可以实现用户手势,以使用自定义架构或使用 intent:
语法来启动应用。
构建 intent 锚点并将其嵌入到网页中,以便用户选择启动应用。这样,您就可以灵活地控制应用的启动方式和时间,这意味着您可以使用 intent extra 将信息传递给应用。
基于 intent 的 URI 的基本语法如下:
intent:
HOST/URI-path // Optional host
#Intent;
package=\[string\];
action=\[string\];
category=\[string\];
component=\[string\];
scheme=\[string\];
end;
如需了解解析详情,请参阅 Android 源代码。
如果无法解析 intent 或外部应用未启动,系统可以将用户重定向到回退网址。您可以使用 intent extra 指定后备网址:
S.browser_fallback_url=[encoded_full_url]
使用 S.<name>
定义 intent Extra。此特定 extra 向后兼容。Chrome 会移除 browser_fallback_url
,以便目标应用无法看到此值。
Chrome 在下列情况下不会启动外部应用:
- 无法解析 intent。换句话说,没有任何应用可以处理该 intent。
- JavaScript 计时器尝试在没有用户手势的情况下打开应用。
示例
以下 intent 会启动 Zxing 条形码扫描器应用:
intent:
//scan/
#Intent;
package=com.google.zxing.client.android;
scheme=zxing;
end;
如需启动 Zxing 条形码扫描器应用,请在锚点上对 href
进行编码:
<a href="intent://scan/#Intent;scheme=zxing;package=com.google.zxing.client.android;end">
Take a QR code
</a>
请参阅 Android Zxing 清单,其中定义了软件包和主机。
指定后备网址后,完整网址如下所示:
<a href="intent://scan/#Intent;scheme=zxing;package=com.google.zxing.client.android;S.browser_fallback_url=https%3A%2F%2Frp.liu233w.com%3A443%2Fhttp%2Fzxing.org;end">
Take a QR code
</a>
现在,如果找不到应用、链接是通过 JavaScript 触发的且没有用户手势,或者在我们不启动外部应用的其他情况下,该网址会将用户定向到 zxing.org
。
注意事项
如果您使用包含 extra 的 intent 调用 Android activity,也可以添加这些详细信息。
只有具有类别过滤条件 android.intent.category.BROWSABLE 的 activity 才能使用此方法调用,因为这表示应用可以从浏览器安全地打开。
在以下情况下,Chrome 不会针对给定的 intent URI 启动外部应用:
- Intent URI 会从输入的网址重定向;
- 无需用户手势即可启动 intent URI。