天天看点

通过浏览器直接打开Android应用程序

通过手机浏览器直接打开Android应用程序。 如果本地已经安装了指定Android应用,就直接打开它; 如果没有安装,则直接下载该应用的安装文件(也可以跳转到下载页面)。

目录[-]

<a href="http://my.oschina.net/liucundong/blog/354029#OSC_h2_1">实现效果</a>

<a href="http://my.oschina.net/liucundong/blog/354029#OSC_h2_2">实现方式</a>

<a href="http://my.oschina.net/liucundong/blog/354029#OSC_h2_3">HTML代码</a>

<a href="http://my.oschina.net/liucundong/blog/354029#OSC_h2_4">AndroidMainfext.xml</a>

实现方式不太完美,最近看了微博、京东的手机版网页,感觉他们的实现方式很不错,研究了一下,实现以下效果:

如果本地已经安装了指定Android应用,就直接打开它;如果没有安装,则直接下载该应用的安装文件(也可以跳转到下载页面)。

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

通过浏览器直接打开Android应用程序

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

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

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

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

<code>&lt;!</code><code>doctype</code> <code>html&gt;</code>

<code>&lt;</code><code>html</code><code>&gt;</code>

<code>    </code><code>&lt;</code><code>head</code><code>&gt;</code>

<code>        </code><code>&lt;</code><code>meta</code> <code>http-equiv</code><code>=</code><code>"Content-Type"</code> <code>content</code><code>=</code><code>"text/html; charset=utf-8"</code><code>&gt;</code>

<code>        </code><code>&lt;</code><code>meta</code> <code>name</code><code>=</code><code>"apple-mobile-web-app-capable"</code> <code>content</code><code>=</code><code>"yes"</code><code>&gt;</code>

<code>        </code><code>&lt;</code><code>meta</code> <code>name</code><code>=</code><code>"apple-mobile-web-app-status-bar-style"</code> <code>content</code><code>=</code><code>"black"</code><code>/&gt;</code>

<code>        </code><code>&lt;</code><code>title</code><code>&gt;this's a demo&lt;/</code><code>title</code><code>&gt;</code>

<code>        </code><code>&lt;</code><code>meta</code> <code>id</code><code>=</code><code>"viewport"</code> <code>name</code><code>=</code><code>"viewport"</code> <code>content</code><code>=</code><code>"width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,minimal-ui"</code><code>&gt;</code>

<code>    </code><code>&lt;/</code><code>head</code><code>&gt;</code>

<code>    </code><code>&lt;</code><code>body</code><code>&gt;</code>

<code>        </code><code>&lt;</code><code>div</code><code>&gt;</code>

<code>            </code><code>&lt;</code><code>a</code> <code>id</code><code>=</code><code>"J-call-app"</code> <code>href</code><code>=</code><code>"javascript:;"</code> <code>class</code><code>=</code><code>"label"</code><code>&gt;立即打开&amp;gt;&amp;gt;&lt;/</code><code>a</code><code>&gt;</code>

<code>            </code><code>&lt;</code><code>input</code> <code>id</code><code>=</code><code>"J-download-app"</code> <code>type</code><code>=</code><code>"hidden"</code> <code>name</code><code>=</code><code>"storeurl"</code> <code>value</code><code>=</code><code>"http://m.chanyouji.cn/apk/chanyouji-2.2.0.apk"</code><code>&gt;</code>

<code>        </code><code>&lt;/</code><code>div</code><code>&gt;</code>

<code>        </code><code>&lt;</code><code>script</code><code>&gt;</code>

<code>            </code><code>(function(){</code>

<code>                </code><code>var ua = navigator.userAgent.toLowerCase();</code>

<code>                </code><code>var t;</code>

<code>                </code><code>var config = {</code>

<code>                    </code><code>/*scheme:必须*/</code>

<code>                    </code><code>scheme_IOS: 'cundong://',</code>

<code>                    </code><code>scheme_Adr: 'cundong://splash',</code>

<code>                    </code><code>download_url: document.getElementById('J-download-app').value,</code>

<code>                    </code><code>timeout: 600</code>

<code>                </code><code>};</code>

<code>                </code><code>function openclient() {</code>

<code>                    </code><code>var startTime = Date.now();</code>

<code>                    </code><code>var ifr = document.createElement('iframe');</code>

<code>                    </code><code>ifr.src = ua.indexOf('os') &gt; 0 ? config.scheme_IOS : config.scheme_Adr;</code>

<code>                    </code><code>ifr.style.display = 'none';</code>

<code>                    </code><code>document.body.appendChild(ifr);</code>

<code>                    </code><code>var t = setTimeout(function() {</code>

<code>                        </code><code>var endTime = Date.now();</code>

<code>                        </code><code>if (!startTime || endTime - startTime &lt; config.timeout + 200) { </code>

<code>                            //</code><code>window.location = config.download_url;</code>

<code>                        </code><code>} else {</code>

<code>                            </code> 

<code>                        </code><code>}</code>

<code>                    </code><code>}, config.timeout);</code>

<code>                    </code><code>window.onblur = function() {</code>

<code>                        </code><code>clearTimeout(t);</code>

<code>                    </code><code>}</code>

<code>                </code><code>}</code>

<code>                </code><code>window.addEventListener("DOMContentLoaded", function(){</code>

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

<code>                </code><code>}, false);</code>

<code>            </code><code>})()</code>

<code>        </code><code>&lt;/</code><code>script</code><code>&gt;</code>

<code>    </code><code>&lt;/</code><code>body</code><code>&gt;</code>

<code>&lt;/</code><code>html</code><code>&gt;</code>

本文转自wanqi博客园博客,原文链接:http://www.cnblogs.com/wanqieddy/p/4661550.html,如需转载请自行联系原作者

继续阅读