网页判断判断是否安装APP并启动,没有安装就跳转到下载页面
2016-01-20 11:39
726 查看
下面是测试网页的内容:
<html>
<head>
<script type="text/javascript">
//判断手机上是否安装了app,如果安装直接打开,如果没安装,跳转到下载页面
function openApp(url) {
var timeout, t = 1000, hasApp = true;
var openScript = setTimeout(function () {
if (!hasApp) {
var durl = "http:www.baidu.com";
window.location.href=durl;
}
document.body.removeChild(ifr);
}, 2000)
var t1 = Date.now();
var ifr = document.createElement("iframe");
ifr.setAttribute('src', url);
ifr.setAttribute('style', 'display:none');
document.body.appendChild(ifr);
timeout = setTimeout(function () {
var t2 = Date.now();
if (!t1 || t2 - t1 < t + 100) {
hasApp = false;
}
}, t);
}
</script>
</head>
<body >
<input type="hidden" id="downloadUrl" name="downloadUrl" value="http:www.baidu.com"/>
<div>
<a href="javascript:void(0);" onclick='openApp("zdykapphaoyuntao://");' >Client</a>
</div>
<br/>
</body>
</html>
客户端以android举例:需要在AndroidManifest.xml文件启动activity下面加入 <data android:scheme="zdykapphaoyuntao" />
这样配置好后就在可以启动的activity里面拿到各种需要的数据:如下
Intent intent = getIntent();
Uri data = intent.getData();
if (null != data) {
String host = data.getHost();
String path = data.getPath();
String query = data.getQuery();
if (host.equals("productdetail")) {// 商品详情
intent = new Intent(ActWelcomeNow.this, ActGoodsDetail.class);
intent.putExtra(Contant.NAME, query);
ActWelcomeNow.this.startActivity(intent);
ActWelcomeNow.this.finish();
} else if (host.equals("shopindex")) {// 店铺首页
intent = new Intent(ActWelcomeNow.this, ActShopIndex.class);
intent.putExtra(Contant.NAME, query);
ActWelcomeNow.this.startActivity(intent);
ActWelcomeNow.this.finish();
}
<html>
<head>
<script type="text/javascript">
//判断手机上是否安装了app,如果安装直接打开,如果没安装,跳转到下载页面
function openApp(url) {
var timeout, t = 1000, hasApp = true;
var openScript = setTimeout(function () {
if (!hasApp) {
var durl = "http:www.baidu.com";
window.location.href=durl;
}
document.body.removeChild(ifr);
}, 2000)
var t1 = Date.now();
var ifr = document.createElement("iframe");
ifr.setAttribute('src', url);
ifr.setAttribute('style', 'display:none');
document.body.appendChild(ifr);
timeout = setTimeout(function () {
var t2 = Date.now();
if (!t1 || t2 - t1 < t + 100) {
hasApp = false;
}
}, t);
}
</script>
</head>
<body >
<input type="hidden" id="downloadUrl" name="downloadUrl" value="http:www.baidu.com"/>
<div>
<a href="javascript:void(0);" onclick='openApp("zdykapphaoyuntao://");' >Client</a>
</div>
<br/>
</body>
</html>
客户端以android举例:需要在AndroidManifest.xml文件启动activity下面加入 <data android:scheme="zdykapphaoyuntao" />
这样配置好后就在可以启动的activity里面拿到各种需要的数据:如下
Intent intent = getIntent();
Uri data = intent.getData();
if (null != data) {
String host = data.getHost();
String path = data.getPath();
String query = data.getQuery();
if (host.equals("productdetail")) {// 商品详情
intent = new Intent(ActWelcomeNow.this, ActGoodsDetail.class);
intent.putExtra(Contant.NAME, query);
ActWelcomeNow.this.startActivity(intent);
ActWelcomeNow.this.finish();
} else if (host.equals("shopindex")) {// 店铺首页
intent = new Intent(ActWelcomeNow.this, ActShopIndex.class);
intent.putExtra(Contant.NAME, query);
ActWelcomeNow.this.startActivity(intent);
ActWelcomeNow.this.finish();
}
相关文章推荐
- 转: android 内存检测工具 LeakCanary 说明
- Android M Launcher3主流程源码浅析
- AttributeError: 'JNIFromJavaP' object has no attribute 'fully_qualified_class'
- iOS 适配
- Android___关于软键盘的主动打开关掉处理.
- ios 处理图片拉伸
- iOS 崩溃日志 Backtrace的符号化
- Android Material Design之Toolbar与Palette实践
- Android各种版本
- android Ubuntu adb: cannot execute binary file: 可执行文件格式错误
- IOS根据两个经纬度计算相距距离
- ios推送证书制作
- android开机向导实现
- android五种布局模式
- ios8以后Label自适应大小
- app版本信息
- 【Android应用开发】Android 蓝牙低功耗 (BLE) ( 第一篇 . 概述 . 蓝牙低功耗文档 翻译)
- 【Android应用开发】Android 蓝牙低功耗 (BLE) ( 第一篇 . 概述 . 蓝牙低功耗文档 翻译)
- Android中的IPC机制(3)-Messenger
- MVP模式在android中的流程详解