概述
通常我们有这样的需求,需要使用 js 的方式,打开 Android App
的指定某个页面,如果存在就打开,否则引导到下载页面。那么如何实现 js 唤醒 Android 页面呢?详情请见下面的方案:
#一、什么是 URL Scheme
我们先看一下一个 Url 的构成:
[scheme:][//authority][path][?query][#fragment]
那https://www.taobao.com/shop
那么 scheme
就是 https
, authority
就是 www.taobao.com
, path
就是 shop
;
常见的 App Scheme 有:
APP | 微信 | 支付宝 | 淘宝 | 微博 | 知乎 | 短信 | |
---|---|---|---|---|---|---|---|
URL Scheme | weixin:// | alipay:// | taobao:// | sinaweibo:// | mqq:// | zhihu:// | sms:// |
我们常常使用的 scheme 格式为:
行为(应用的某个功能)
|
scheme://[path][?query]
| |
应用标识 功能需要的参数
那么我们如果通过 scheme 的方式打开 android app 呢?此时就需要使用到 Android 相关的知识了。
#二、AndroidManifest.xml
在要打开的Activity
中加入intent-filter
;
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.BROWSABLE" />
<category android:name="android.intent.category.DEFAULT" />
<data
android:host="webawakeapp.com"
android:pathPrefix="/test"
android:scheme="wakeapp" />
</intent-filter>
对 intent-filter 中的 data 进行简单介绍:
<data
android:host="string"
android:mimeType="string"
android:path="string"
android:pathPattern="string"
android:pathPrefix="string"
android:port="string"
android:scheme="string"/>
其构造出来的url为:
scheme://host:port/path or pathPrefix or pathPattern
如何获取传递的参数?
在上述的 Activity 中加入如下代码:
Intent intent = getIntent();
Uri uri = intent.getData();
if (uri != null) {
//如果url经过encode需要在此处进行decode: url = java.net.URLDecoder.decode(originUrl, "utf-8");
String url = uri.getQueryParameter("url"); //此处的url是自定义的参数
String name = uri.getQueryParameter("name");
}
#三、在浏览器中唤醒 APP
唤醒 app 的方式常用的有:
- 使用 a 标签利用浏览器唤醒 app
- 新建一个隐藏的
iframe
,地址指向需要打开的 url - 使用 window.location 或者 window.location.href 刷新当前页面
- 动态创建一个 script 脚本,在这个脚本中新建一个 a 标签并打开
// 打开url的方式
var urlOpen = {
// 在ios支持不好
iframe: function (url) {
var iframe = document.createElement("iframe");
iframe.style.display = "none";
iframe.src = url;
document.body.appendChild(iframe);
},
location: function (url) {
window.location.href = url;
},
href: function (url) {
var a = document.createElement("a");
a.style.display = "none";
a.href = url;
document.body.appendChild(a);
a.click();
},
script: function (url) {
var script = document.createElement("script");
script.setAttribute("type", "test/javascript");
script.innerHTML =
"(function(){" +
'var a = document.createElement("a");' +
'a.style.display = "none";' +
'a.href = "' +
url.replace(/"/g, '\"') +
'";' +
"document.body.appendChild(a);" +
"a.click();" +
"})()";
document.body.appendChild(script);
},
open: function (url) {
window.open(url);
},
};
最后
以上就是爱笑西牛为你收集整理的JS 如何唤醒 AppAndroid的全部内容,希望文章能够帮你解决JS 如何唤醒 AppAndroid所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复