博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
通过浏览器直接打开Android应用程序
阅读量:5833 次
发布时间:2019-06-18

本文共 2355 字,大约阅读时间需要 7 分钟。

实现效果

如下图所示,在手机浏览器中访问京东的手机版网站(m.jd.com),顶部会有一个广告图,点击这个广告图,如果手机上已经安装了京东App,则直接打开,如果没有安装,则开始下载。

实现方式

1.为Android应用的启动Activity设置一个Schema,如下:

 

2.用户点击浏览器中的链接时,在动态创建一个不可见的iframe,并且让这个iframe去加载步骤1中的Schema,如下:

var ifr = document.createElement('iframe');ifr.src="cundong://splash"

 

3,如果在指定的时间内没有跳转成功,则当前页跳转到apk的下载地址(或下载页),如下:

window.location = download_url;

 

HTML代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
<!
doctype 
html>
<
html
>
    
<
head
>
        
<
meta 
http-equiv
=
"Content-Type" 
content
=
"text/html; charset=utf-8"
>
 
        
<
meta 
name
=
"apple-mobile-web-app-capable" 
content
=
"yes"
>
        
<
meta 
name
=
"apple-mobile-web-app-status-bar-style" 
content
=
"black"
/>
 
        
<
title
>this's a demo</
title
>
        
<
meta 
id
=
"viewport" 
name
=
"viewport" 
content
=
"width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,minimal-ui"
>
    
</
head
>
    
<
body
>
        
<
div
>
            
<
a 
id
=
"J-call-app" 
href
=
"javascript:;" 
class
=
"label"
>立即打开&gt;&gt;</
a
>
            
<
input 
id
=
"J-download-app" 
type
=
"hidden" 
name
=
"storeurl" 
value
=
"http://m.chanyouji.cn/apk/chanyouji-2.2.0.apk"
>
        
</
div
>
 
        
<
script
>
            
(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);
            
})()
        
</
script
>
    
</
body
>
</
html
>

 

AndroidMainfext.xml

        
           
           
        
        
            
            
            
            
       

转载于:https://www.cnblogs.com/jimmyfang/articles/4769534.html

你可能感兴趣的文章
我理想中的前端工作流
查看>>
Chrome 广告屏蔽功能不影响浏览器性能
查看>>
Android状态栏实现沉浸式模式
查看>>
java只能的round,ceil,floor方法的使用
查看>>
新开的博客,为自己祝贺一下
查看>>
采用JXL包进行EXCEL数据写入操作
查看>>
将txt文件转化为json进行操作
查看>>
线性表4 - 数据结构和算法09
查看>>
我的2014-相对奢侈的生活
查看>>
Java设计模式
查看>>
Spring Cloud 微服务分布式链路跟踪 Sleuth 与 Zipkin
查看>>
ORM数据库框架 SQLite 常用数据库框架比较 MD
查看>>
华为OJ 名字美丽度
查看>>
微信公众号与APP微信第三方登录账号打通
查看>>
onchange()事件的应用
查看>>
Windows 下最佳的 C++ 开发的 IDE 是什么?
查看>>
软件工程师成长为架构师必备的十项技能
查看>>
python 异常
查看>>
百度账号注销
查看>>
mysql-This version of MySQL doesn’t yet support ‘LIMIT & IN/ALL/ANY/SOME 错误解决
查看>>