实现方式不太完美,最近看了微博、京东的手机版网页,感觉他们的实现方式很不错,研究了一下,实现以下效果:
如果本地已经安装了指定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" >立即打开>></ 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>
相关推荐
5. **WebView**:虽然标题提到的是“打开浏览器”,但在某些情况下,你可能希望在应用内部直接显示网页,这时就会用到WebView组件。WebView是Android提供的一个可以加载HTML内容的视图,它可以显示网页并支持基本的...
Android浏览器已经成为智能手机中不可或缺的应用软件,用户可以通过浏览器访问网络,查看信息,下载文件等。Android浏览器的发展势头非常强劲,各大厂商都在推出自己的Android浏览器产品。 知识点二:Android浏览器...
在IT行业中,有时候我们需要实现一些跨平台的交互功能,例如在Web浏览器中触发本地应用程序的执行。本场景中,我们关注的是"web浏览器点击打开本地exe程序",这个功能类似于百度网盘那样,用户在浏览器内操作时可以...
此源码提供了深入了解Android应用程序开发、Web浏览技术以及Chrome浏览器内部工作原理的宝贵资源。通过分析这份源码,我们可以学习到以下几个关键知识点: 1. **跨平台开发**:Chromium是跨平台的,它在Android上...
本主题将详细讲解如何实现这一功能,即在Android应用卸载或删除时调用系统浏览器打开指定的网页URL。 首先,我们需要了解Android应用程序的生命周期。在Android中,当用户卸载应用时,系统会触发一系列生命周期方法...
1. **Android浏览器架构**:Android浏览器通常基于WebView组件构建。WebView是Android SDK提供的一种用于显示网页内容的控件,它允许在应用程序内加载和显示HTML、CSS和JavaScript内容。 2. **JavaScript与Java交互...
在Android开发中,构建一个网络图片浏览器是一项常见的任务,它涉及到网络请求、图片加载优化以及UI设计等多个方面。...通过学习和实践这个项目,初学者可以深入理解Android应用程序的工作原理,并提升自己的开发能力。
总的来说,从微信浏览器打开外部浏览器涉及到移动应用生态、浏览器兼容性和用户体验等多个方面。开发者需要灵活运用各种技术和策略,确保用户在不同环境下都能顺畅地使用服务。通过上述方法,开发者可以在微信环境中...
]: [特拉维斯图像]: MeowChatBox是一个 WebRTC 浏览器到浏览器的聊天应用程序。 它目前 100% 在 Chrome 和 Firefox 中以在线模式运行。 它适用于桌面和移动设备(在 Android 中速度很快)。 我还没有检查过 Opera...
- Android SDK是开发Android应用程序的基础工具,包含了编译、调试和打包应用所需的工具。 - Android NDK(Native Development Kit)则允许开发者用C/C++编写部分应用代码,提高了性能,尤其适用于图形处理和计算...
在Android平台上,构建一个功能完善的浏览器或类似浏览器的应用程序是一项挑战,涉及到许多技术细节和组件。这个名为"Android-一个用于构建浏览器或类似浏览器的应用程序的Android库集合"的资源,显然是为了帮助...
这份名为"Android应用源码-浏览器&WebView&JS&HTML5类源代码(8例).zip"的压缩包文件,包含了一系列与Android应用程序开发相关的源代码示例,特别是聚焦于浏览器功能、WebView组件、JavaScript交互以及HTML5技术的...
前端JS打开CMD执行程序 不限制浏览器 JS打开浏览器 谷歌浏览器前端打开其他程序 谷歌浏览器JS打开其他程序
通过分析这个压缩包中的源代码,开发者可以学习到如何在Android环境中创建一个基本的浏览器应用,了解WebView的使用,以及Android应用开发的基础流程。这对于那些想要入门Android开发或提升对WebView理解的程序员来...
通过学习和实践这个“1201 appinventor项目:文件浏览器”,你将深入理解App Inventor的基本用法,掌握文件操作和用户界面设计,为以后的Android应用开发打下坚实基础。同时,这个项目也是一个很好的起点,可以...
通过这个项目,你可以学习到Android应用的基础架构、UI设计、网络请求以及错误处理等知识。随着技能的提升,你可以尝试添加更多高级功能,如书签管理、夜间模式、自定义搜索引擎等,以进一步提升应用的实用性。
这种技术主要用于创建交互式用户体验,比如网页上的QQ客服功能,用户可以直接从浏览器启动应用程序,无需离开网页。以下是一些关于这个主题的重要知识点: 1. **ActiveX控件**:在较早的Windows环境中,Web页面通过...
这个资源"android通过html打开本地app"提供了一种实现方式,使得开发者能够从HTML页面中启动Android应用程序,并且能够传递数据。下面我们将详细探讨这一技术及其相关知识点。 1. Web Intent 桥接: HTML页面不能...
目前市场占有率很高,而Android应用开发则是通过使用Android软件开发套件(Android Software Development Kit,简称Android SDK)的工具和技术,制作各种Android应用程序。 基本上,Android应用程序可以分为本地应用...
1. **Intent处理**:Android应用间的通信机制,Zirco浏览器会处理各种Intent,如启动时的URL加载,或者通过分享链接启动浏览器。 2. **权限管理**:处理Android的权限请求,如网络访问、存储读写等。 3. **SQLite...