通过一个链接打开本地app,或者去下载app
来源:互联网 发布:平安知鸟考试答案技巧 编辑:程序博客网 时间:2024/04/28 18:29
以前支付宝发短信给你手机 ,然后你点开这个链接的时候会发现它自动的打开了支付宝软件 ,这个是如何做到的呢 ?
我认为实现的原理就是,这个链接通过浏览器打开,然后自动执行js方法,如果本地有支付宝软件,就去打开这个方法。。当然支付宝app也要做对应的处理了
1.app端的处理
其实这个主要的工作还是在链接js上的处理,app所要的操作就是很简单的,在android中的intent-filter提供了对应的操作,
<activity android:name=".H5CallActivity"> <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.BROWSABLE" /> <category android:name="android.intent.category.DEFAULT" /> <data android:scheme="schemedemo" android:host="pszh.com" android:pathPrefix="/test/" /> </intent-filter> </activity>
其中的scheme和hos,以及pathPrefix 和链接的必须是一致的,h5的链接格式必须是
<a href="[scheme]://[host]/[path]?[query]"> 唤起应用 </a>
和上面的一一对应,scheme (唤起协议)和host(唤起指定host)是必须的有的,然后path(协议路径)和query(参数)可以没有
然后就是activity的处理了,
Uri uri = getIntent().getData(); StringBuilder sb = new StringBuilder(); // 唤起链接 sb.append("string : ").append(getIntent().getDataString()).append("\n"); sb.append("scheme : ").append(uri.getScheme()).append("\n"); sb.append("host : ").append(uri.getHost()).append("\n"); sb.append("port : ").append(uri.getPort()).append("\n"); sb.append("path : ").append(uri.getPath()).append("\n"); // 接收唤起的参数 sb.append("name : ").append(uri.getQueryParameter("name")).append("\n"); sb.append("page : ").append(uri.getQueryParameter("page")); tv_url.setText(sb.toString());
2js的处理
对于js的应用代码呢也贴下吧,这个是通过点击 Start or DownLoad这个按钮来下载的
<a id="call-app" href="javascript:;" > Start or Download </a><br/><br/> <script type="text/javascript"> (function(){ var ua = navigator.userAgent.toLowerCase(); var t; var config = { /*scheme:必须*/ scheme_IOS: 'schemedemo://', scheme_Adr: 'schemedemo://pszh.com/test/scheme?name=google&page=1', download_url: 'http://www.baidu.com', 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("call-app").addEventListener('click', openclient, false); }, false); })() </script>
如果你不想点击打开链接就直接OK了呢,(这个呢可以直接问会js的人了)。也可以用下面的代码了
<!DOCTYPE html> <html lang="en"> <head> <title>h5跳原生</title> </head> <body></body> <script> (function(){ var ua = navigator.userAgent.toLowerCase(); var t; var config = {/*scheme:必须*/ scheme_IOS: 'schemedemo://', scheme_Adr: 'schemedemo://pszh.com/test/scheme?name=google&page=1', download_url: 'http://www.baidu.com', 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); } } openclient(); })() </script> </html>
参考文献:
http://ihongqiqu.com/2015/12/03/html-call-native-app/
0 0
- 通过一个链接打开本地app,或者去下载app
- 通过一个链接打开本地app,或者去下载app
- iOS通过链接,应用内打开APP或者跳转APPStore对应下载
- 通过链接打开app
- android中的通过网页链接打开本地app
- 通过浏览器链接打开本地应用(APP)
- android中的通过网页链接打开本地app
- js判断本地是否安装app,未安装去下载,已安装打开本地的app
- 通过url打开本地app
- 通过链接打开APP(scheme)
- 网页通过js打开本地app
- android 通过链接打开自己的app
- 微信打开链接下载APP
- Android实现通过浏览器点击链接打开本地应用(APP)
- 通过手机浏览器打开APP或者跳转到下载页面.md
- 通过一个App去调用另外一个App
- 通过一个打开APP之 Android scheme
- 移动端浏览器打开app或者跳转链接
- SAP Smartforms实现二维条码打印
- Smartform 打印二维码 …
- Switching the Modifica…
- 测试BAPI ,执行test sequence
- odoo与异步任务神器celery集成
- 通过一个链接打开本地app,或者去下载app
- java 多线程基础
- ES参考之Query DSL
- >LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
- 个人模板记录II♪(^∇^*)♪(^∇^*)♪(^∇^*)
- Hive安装部署
- Dagger2注入原理
- [poj2142] 天平The Balance
- 第三方登陆和分享要重要操作和注意的问题