html 打开手机app,#Android 通过浏览器打开手机app

CTO吩咐下来的任务...弄下能不能在浏览器中启动我们的App。

踩坑

原来的做法是:

启动应用程序

各个值的定义为:

scheme:判别启动的App。 ※详细后述

host:适当记述

path:传值时必须的key ※没有也可以

query:获取值的Key和Value ※没有也可以

例如:

启动应用程序

而在android的清单文件的主页面配置如下:

然而...并不可以,我用的魅族的手机,用的魅族自带浏览器。GG了

谷歌浏览器,或者是android原生浏览器可能可以,或者是我们自带的WebView。

有看到帖子说是因为data-sentintent的原因,具体原因我也没有去查看。

有兴趣的童鞋可以坐飞机直达:--------> 飞吧

解决

此路不通我们走另外一条路。

肯定是不能使用简单的来进行查找,我们使用js~:

打开我的app

(function(){

var ua = navigator.userAgent.toLowerCase();

var t;

var config = {

/*scheme:必须*/

scheme_IOS: 'cundong://',

scheme_Adr: 'cundong://splash',

download_url: document.getElementById('J-download-app').value,

timeout: 600

};

function openclient() {

var startTime = Date.now();

var ifr = document.createElement('iframe');

ifr.src = ua.indexOf('os') > 0 ? config.scheme_IOS : config.scheme_Adr;

ifr.style.display = 'none';

document.body.appendChild(ifr);

var t = setTimeout(function() {

var endTime = Date.now();

if (!startTime || endTime - startTime < config.timeout + 200) {

window.location = config.download_url;

} else {

}

}, config.timeout);

window.onblur = function() {

clearTimeout(t);

}

}

window.addEventListener("DOMContentLoaded", function(){

document.getElementById("J-call-app").addEventListener('click',openclient,false);

}, false);

})()

我们需要注意这个地方:

记得替换成你们的下载地址。

而我们大android的清单文件需要配置:

OK,使用魅族的浏览器亲测成功。其他牌子的浏览器稍候测试,毕竟我那么反感那些花里胡哨的浏览器,要下载测试我是不情愿。。。

优化

好了,好像单纯地打开app...没什么卵用啊,能不能传值呢?答案是可以的~我们看js:

var config = {

/*scheme:必须*/

scheme_IOS: 'cundong://',

scheme_Adr: 'cundong://splash',

download_url: document.getElementById('J-download-app').value,

timeout: 600

};

其中的scheme_Adr就是android的匹配Scheme,如果需要传值的话,就是在后面通过get的方式进行传值。

var config = {

/*scheme:必须*/

scheme_IOS: 'cundong://',

scheme_Adr: 'cundong://splash?nama=Ly&age=18',

download_url: document.getElementById('J-download-app').value,

timeout: 600

};

然后在跳转的页面中进行获取:

Intent i_getvalue = getIntent();

String action = i_getvalue.getAction();

if (Intent.ACTION_VIEW.equals(action)) {

Uri uri = i_getvalue.getData();

if (uri != null) {

String name = uri.getQueryParameter("name");

String age = uri.getQueryParameter("age");

showTs(name);

showTs(age);

showLog("name----------------"+name);

showLog("age----------------"+age);

}

}

就可以进行Hhtml调起APP,并进行页面传值的操作了... 其实难度主要是在js方面。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值