Android 系统浏览器中唤起应用
在进行移动端页面开发中,会遇到从 web 页面唤起 Android 应用的需求。在 Android 系统中,可以使用自定义 scheme 来实现,但是这种方式在系统未安装对应应用的情况下,不好做 fallback。所以使用 intent:
会是更好的选择。
句法
使用户能够打开应用的最佳实践是构建一个 intent a 标签嵌入到页面。这可以更灵活的控制 app 如何运行,并能够通过 Intent Extras 传入 extra 到 app。
intent URI 的基本句法如下:
intent:
HOST/URI-path // Optional host
#Intent;
package=[string];
action=[string];
category=[string];
component=[string];
scheme=[string];
end;
可以加入下面的字符串来指定 fallback URL:
S.browser_fallback_url=[encoded_full_url]
当一个 intent 无法被执行或者外部应用无法运行时,用户会被跳转的 fallback 页面。
下面是一些 Chrome 无法运行外部应用的情况:
- intent 无法被执行,如没有 app 可以处理这个 intent
- JavaScript 定时器试图在没有用户交互的情况下打开一个应用
S.<name>
是一种用来定义字符串 extra 的方式。S.browser_fallback_url
被用来做向后兼容,但是目标应用是看不到 browser_fallback_url 的,因为 Chrome 会移除它。
示例
下面的 intent 可以用来打开 Zxing 条码扫描 App:
intent:
//scan/
#Intent;
package=com.google.zxing.client.android;
scheme=zxing;
end;
a 标签是这样的:
<a href="intent://scan/#Intent;scheme=zxing;package=com.google.zxing.client.android;end"> Take a QR code </a>
加入 fallback URL:
<a href="intent://scan/#Intent;scheme=zxing;package=com.google.zxing.client.android;S.browser_fallback_url=http%3A%2F%2Fzxing.org;end"> Take a QR code </a>