首先明晰,微信里屏蔽了schema协议。除非你是微信的合作伙伴之类的,他们专门给你配置进白名单。否则,我们就没办法通过这个协议在微信中直接唤起app。

因此,我们需要先判断页面场景是否在微信中,如果在微信中,则会提示用户在浏览器中打开。

H5中间接判断应用是否安装

这里的逻辑很简单,当没有成功打开app的时候,新页面不会弹出则页面逻辑继续进行;否则如果进入了新页面,则页面逻辑便终止了。所以我们可以另开一个延时的线程来判断这个事情

if(...){

document.location = '';

setTimeout(function(){

//此处如果执行则表示没有app

},200);

}

通过H5唤起APP

编辑AndroidManifest.xml,主要是增加第二个,launchapp用来标识schema,最好能保证手机系统唯一,那样就可以打开应用,而不是弹出一个选择框。可以附带自己的数据通过string传递到activity,比如完整url为 launchapp://?data=mydata

android:name="com.robert.MainActivity"

android:configChanges="orientation|keyboardHidden|navigation|screenSize"

android:screenOrientation="landscape"

android:theme="@android:style/Theme.NoTitleBar.Fullscreen" >

然后通过activity获得data数据:

public void onCreate(Bundle savedInstanceState) {

Uri uridata = this.getIntent().getData();

String mydata = uridata.getQueryParameter("data");

}

编写html页面

整个页面也许是某个app的详细介绍,这里只写出关键的js代码:

android:name="com.robert.MainActivity"

android:configChanges="orientation|keyboardHidden|navigation|screenSize"

android:screenOrientation="landscape"

android:theme="@android:style/Theme.NoTitleBar.Fullscreen" >

下面代码可以达到这样一个目的,先请求 launchapp:// ,如果系统能处理,或者说已经安装了myapp表示的应用,那么就可以打开,另外,如果不能打开,直接刷新一下当前页面,等于是重置location。

function openApp() {

if (/android/i.test(navigator.userAgent)) {

var isrefresh = getUrlParam('refresh'); // 获得refresh参数

if(isrefresh == 1) {

return

}

window.location.href = 'launchapp://haha?data=mydata';

window.setTimeout(function () {

window.location.href += '&refresh=1' // 附加一个特殊参数,用来标识这次刷新不要再调用myapp:// 了

}, 500);

}

}

整体代码

代码功能: 判断手机/平板是否安装app 如果安装 则调用app的scheme,传入url当作参数,来做后续操作 如果没有安装 则跳转到app store/google play 下载app

(function () {

var openUrl = window.location.search;

try {

openUrl = openUrl.substring(1, openUrl.length);

} catch (e) {}

var isiOS = navigator.userAgent.match('iPad') || navigator.userAgent.match('iPhone') || navigator.userAgent.match(

'iPod'),

isAndroid = navigator.userAgent

.match('Android'),

isDesktop = !isiOS && !isAndroid;

if (isiOS) {

setTimeout(function () {

window.location = "itms-apps://itunes.apple.com/app/[name]/[id]?mt=8";

}, 25);

window.location = "[scheme]://[host]?url=" + openUrl;

} else if (isAndroid) {

window.location = "intent://[host]/" + "url=" + openUrl + "#Intent;scheme=[scheme];package=[package_name];end";

} else {

window.location.href = openUrl;

}

})();

h5页面启动安卓应用_H5中启动Android App相关推荐

  1. H5页面判断安卓苹果

    H5页面判断安卓苹果 $(function(){var u = navigator.userAgent, app = navigator.appVersion;var isAndroid = u.in ...

  2. H5页面内嵌到微信小程序和APP,做分享操作

    前言 最近接到项目新需求,H5项目需要内嵌到微信小程序和APP里,然后将H5页面分享出去,被分享的人可以点击消息跳转到H5页面.H5页面不难,难的是要与微信小程序和APP进行交互,因为以前也没有接触过 ...

  3. h5页面启动安卓应用_H5唤醒App方式汇总

    H5唤醒App方式汇总 最近在做扫码之后的h5页面唤醒App的功能,做下记录 唤醒方式列表URL Schemes chrome intent ios UniversalLink / android a ...

  4. h5页面启动安卓应用_h5启动原生APP总结

    许久没有写博客了,最近有个H5启动APP原生页面的需求,中间遇上一些坑,看了些网上的实现方案,特意来总结下 一.需要判断客户端的平台以及是否在微信浏览器中访问 1.客户端判断 在启动APP时,Andr ...

  5. 在linux中启动mysql,在linux中启动mysql服务的命令

    用reboot命令重启linux服务器之后会导致mysql服务终止,也就是mysql服务没有启动.必须要重启mysql服务,否则启动jboss时会 报有关数据库mysql方面的错误. 命令如下: 第一 ...

  6. H5页面在IOS微信webview中无法校验视频文件时长问题

    因业务需求需要一个图片视频文件上传功能,需支持主流浏览器及微信钉钉内置浏览器,遂考虑用一个简单的H5页面做上传客户端.视频上传因为要控制视频长度,在其他浏览器中都校验通过,但是在微信中却出了问题 co ...

  7. qq空间h5页面,如何在微信中直接打开qq空间链接却不需要登陆qq账号密码

    我们在玩微信营销的时候,发现一个有趣的问题:在微信上打开qq页面,不需要登陆qq账号密码,这是怎么回事呢? 这个qq空间h5页面是怎么做的呢? 微信打开免登陆QQ: 如果随便一篇QQ空间文章或者说说, ...

  8. 在线H5页面生成器(持续更新中)

    1.关键词搜索 wysiwyg,static site generator,h5 creator,h5 edtitor,h5 maker 2.原理讲解(重点) https://github.com/C ...

  9. weex android app例子,weex中修改android app图标和欢迎页

    修改欢迎页背景 1.图片放到platforms/android/app/src/main/res/drawable-xxxx下面,图片必须是png格式,否则会报错:然后修改platforms/andr ...

  10. linux启动关闭脚本,Linux中启动/停止/重启/状态的startup脚本

    今天看到一个脚本,可以完成脚本的启动/停止/重启/状态,和/etc/init.d中的服务一样.但是/etc/init.d里面的服务要设置开机启动,可以使用service来管理.如果不设置开机启动且方便 ...

最新文章

  1. ROS关于cv_brige的使用
  2. win7中安装mysql_windows7下安装Mysql5.6数据库图文教程(压缩包安装)
  3. 与孩子一起学编程 python_【和孩子一起学编程】 python笔记--第五天
  4. Java集合之ArrayList源码解析
  5. MATLAB 数据分析方法(第2版)1.3 MATLAB基本语法
  6. 二维稳态热传导 代码实现_常用振动激励方式:稳态正弦 、瞬态和随机激振
  7. Android判断界面
  8. php5.6 mysql nginx_nginx1.10.3+php5.6+mysql5.7.0
  9. python代码手机壁纸_Python实现设置windows桌面壁纸代码分享
  10. Android应用开发之版本更新你莫愁
  11. 【接口测试】axios测试接口
  12. Java案例实现用户登录
  13. spotify电脑下载歌曲_Spotify教程
  14. 六种电平转换的优缺点
  15. fgo最新服务器,如何看fgo是什么服务器 | 手游网游页游攻略大全
  16. Python3爬取拉钩网职位,并分析
  17. XCode8编译失败问题
  18. 列举html5格式,前端HTML5基本格式【前端技术文章】
  19. tomcat+nginx配置htpps
  20. 反射知识点总结《Lipp学习笔记》

热门文章

  1. python如何屏幕截图_Python实现屏幕截图的两种方式
  2. 【工具】聊聊文件传输工具,网页文件传输工具Snapdrop好用不
  3. php gd库干什么的,php gd库的基础知识
  4. WordPress主题插件Modown6.1绿色版+Erphpdown11.6等多插件
  5. IDL处理葵花8Himawari-8标准HSD数据——制作大气校正数据集(卫星角度数据)
  6. 几张清晰的图讲清楚什么是Java堆碎片?(内存碎片化)
  7. 【DSP】【第二篇】了解C6678和创建工程
  8. 操作系统——内存映射文件
  9. IBM人工智能进入法律行业:推世界首位AI律师ROSS
  10. DW——验证注册页面 设计JavaScript