`
daoshud1
  • 浏览: 557219 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

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

阅读更多

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

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

实现效果

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

实现方式

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

<data android:host="splash" android:scheme="cundong"/>

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

 

<activity
     android:name=".activity.LauncherActivity"
     android:configChanges="orientation|keyboardHidden|navigation|screenSize"
     android:label="@string/app_name"
     android:screenOrientation="portrait" >
        <intent-filter>
           <action android:name="android.intent.action.MAIN" />
           <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
        <intent-filter>
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />
            <data android:host="splash" android:scheme="cundong" />
       </intent-filter>
</activity>


原文地址:http://my.oschina.net/liucundong/blog/354029

分享到:
评论

相关推荐

    android实战 打开浏览器(android studio源程序工程)

    5. **WebView**:虽然标题提到的是“打开浏览器”,但在某些情况下,你可能希望在应用内部直接显示网页,这时就会用到WebView组件。WebView是Android提供的一个可以加载HTML内容的视图,它可以显示网页并支持基本的...

    基于android的浏览器设计与实现论文.docx

    Android浏览器已经成为智能手机中不可或缺的应用软件,用户可以通过浏览器访问网络,查看信息,下载文件等。Android浏览器的发展势头非常强劲,各大厂商都在推出自己的Android浏览器产品。 知识点二:Android浏览器...

    web浏览器点击打开本地exe程序(类似百度网盘效果)

    在IT行业中,有时候我们需要实现一些跨平台的交互功能,例如在Web浏览器中触发本地应用程序的执行。本场景中,我们关注的是"web浏览器点击打开本地exe程序",这个功能类似于百度网盘那样,用户在浏览器内操作时可以...

    android应用源码---浏览器源码(AndroidChromium).rar

    此源码提供了深入了解Android应用程序开发、Web浏览技术以及Chrome浏览器内部工作原理的宝贵资源。通过分析这份源码,我们可以学习到以下几个关键知识点: 1. **跨平台开发**:Chromium是跨平台的,它在Android上...

    Android卸载或删除应用,调用浏览器打开指定网页地址url

    本主题将详细讲解如何实现这一功能,即在Android应用卸载或删除时调用系统浏览器打开指定的网页URL。 首先,我们需要了解Android应用程序的生命周期。在Android中,当用户卸载应用时,系统会触发一系列生命周期方法...

    android 浏览器 调用系统下载功能

    1. **Android浏览器架构**:Android浏览器通常基于WebView组件构建。WebView是Android SDK提供的一种用于显示网页内容的控件,它允许在应用程序内加载和显示HTML、CSS和JavaScript内容。 2. **JavaScript与Java交互...

    android实战 网络图片浏览器(android studio源程序工程)

    在Android开发中,构建一个网络图片浏览器是一项常见的任务,它涉及到网络请求、图片加载优化以及UI设计等多个方面。...通过学习和实践这个项目,初学者可以深入理解Android应用程序的工作原理,并提升自己的开发能力。

    微信浏览器打开外部浏览器

    总的来说,从微信浏览器打开外部浏览器涉及到移动应用生态、浏览器兼容性和用户体验等多个方面。开发者需要灵活运用各种技术和策略,确保用户在不同环境下都能顺畅地使用服务。通过上述方法,开发者可以在微信环境中...

    MeowChatBox:WebRTC 浏览器到浏览器聊天应用程序

    ]: [特拉维斯图像]: MeowChatBox是一个 WebRTC 浏览器到浏览器的聊天应用程序。 它目前 100% 在 Chrome 和 Firefox 中以在线模式运行。 它适用于桌面和移动设备(在 Android 中速度很快)。 我还没有检查过 Opera...

    基于安卓Android的浏览器源码.zip

    - Android SDK是开发Android应用程序的基础工具,包含了编译、调试和打包应用所需的工具。 - Android NDK(Native Development Kit)则允许开发者用C/C++编写部分应用代码,提高了性能,尤其适用于图形处理和计算...

    Android-一个用于构建浏览器或类似浏览器的应用程序的Android库集合

    在Android平台上,构建一个功能完善的浏览器或类似浏览器的应用程序是一项挑战,涉及到许多技术细节和组件。这个名为"Android-一个用于构建浏览器或类似浏览器的应用程序的Android库集合"的资源,显然是为了帮助...

    Android应用源码-浏览器&WebView&JS&HTML5类源代码(8例).zip

    这份名为"Android应用源码-浏览器&WebView&JS&HTML5类源代码(8例).zip"的压缩包文件,包含了一系列与Android应用程序开发相关的源代码示例,特别是聚焦于浏览器功能、WebView组件、JavaScript交互以及HTML5技术的...

    前端JS打开CMD执行程序 不限制浏览器 JS打开浏览器 谷歌浏览器前端打开其他程序 谷歌浏览器JS打开其他程序

    前端JS打开CMD执行程序 不限制浏览器 JS打开浏览器 谷歌浏览器前端打开其他程序 谷歌浏览器JS打开其他程序

    简单的 Android 浏览器源码,基于 Android Studio.zip

    通过分析这个压缩包中的源代码,开发者可以学习到如何在Android环境中创建一个基本的浏览器应用,了解WebView的使用,以及Android应用开发的基础流程。这对于那些想要入门Android开发或提升对WebView理解的程序员来...

    1201 appinventor项目:文件浏览器

    通过学习和实践这个“1201 appinventor项目:文件浏览器”,你将深入理解App Inventor的基本用法,掌握文件操作和用户界面设计,为以后的Android应用开发打下坚实基础。同时,这个项目也是一个很好的起点,可以...

    简单网页浏览器基于android

    通过这个项目,你可以学习到Android应用的基础架构、UI设计、网络请求以及错误处理等知识。随着技能的提升,你可以尝试添加更多高级功能,如书签管理、夜间模式、自定义搜索引擎等,以进一步提升应用的实用性。

    Web页面打开外部EXE程序

    这种技术主要用于创建交互式用户体验,比如网页上的QQ客服功能,用户可以直接从浏览器启动应用程序,无需离开网页。以下是一些关于这个主题的重要知识点: 1. **ActiveX控件**:在较早的Windows环境中,Web页面通过...

    android通过html打开本地app

    这个资源"android通过html打开本地app"提供了一种实现方式,使得开发者能够从HTML页面中启动Android应用程序,并且能够传递数据。下面我们将详细探讨这一技术及其相关知识点。 1. Web Intent 桥接: HTML页面不能...

    Android Studio移动应用开发PPT详解(微课版)

    目前市场占有率很高,而Android应用开发则是通过使用Android软件开发套件(Android Software Development Kit,简称Android SDK)的工具和技术,制作各种Android应用程序。 基本上,Android应用程序可以分为本地应用...

    Android项目源码功能齐全的zirco浏览器项目

    1. **Intent处理**:Android应用间的通信机制,Zirco浏览器会处理各种Intent,如启动时的URL加载,或者通过分享链接启动浏览器。 2. **权限管理**:处理Android的权限请求,如网络访问、存储读写等。 3. **SQLite...

Global site tag (gtag.js) - Google Analytics