html5写链接打开ios和android本地应用

1、在html中设置链接

href=”[scheme]://[host]/[path]?[query]”

scheme可以自己在app内部设置成任意的,把android和ios的设置成一样的

2、若本地应用存在,直接打开app;若不存在,计时一段时间跳到appstore

需要判断ios还是android平台下的浏览器,需要判断微信浏览器

<code class="hljs" javascript="">var openApp = function () {
    var btnOpenApp = document.getElementById(open-app);
    btnOpenApp.onclick = function () {
        //打开本地应用函数
        var open=function(url){
            var timeout;     
                function try_to_open_app() {
                    timeout = setTimeout(function(){
                    window.location.href=url;
                    console.log(22)
                       }, 10);
                }
                try_to_open_app();
        }
 
        if (/android/i.test(navigator.userAgent)) {
            //alert(This is Android'browser.);//这是Android平台下浏览器
            if (/MicroMessenger/i.test(navigator.userAgent)) {
                alert(This is MicroMessenger browser,请使用本地浏览器打开);//这是微信平台下浏览器
            }
            else {
                open(andorid应用市场url);
            }
        }
 
        if (/(iPhone|iPad|iPod|iOS)/i.test(navigator.userAgent)) {
            //alert(This is iOS'browser.);//这是iOS平台下浏览器
            if (/MicroMessenger/i.test(navigator.userAgent)) {
                alert(微信内置浏览器不支持打开本地应用,请点击右上角使用本地浏览器打开);//这是微信平台下浏览器
            }
            else {
                open(ios应用市场url);
            }
        }
    };
}</code>

  Android配置

<activity android:name=".ui.UploadActivity" android:screenOrientation="portrait">
            <intent-filter>
                <data android:scheme="http" android:host="192.168.167.33" android:port="8088" android:path="/mi-tracker-web/download.html"/>
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />
            </intent-filter>
        </activity>
<a  href="http://192.168.167.33:8088/mi-tracker-web/download.html">
            Open Application</a>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
    <script type="text/javascript">
<span >    </span>window.location="market://search?q=com.singtel.travelbuddy.android";</script>
String str = "market://details?id=" + getPackageName();
 Intent localIntent = new Intent("android.intent.action.VIEW");
 localIntent.setData(Uri.parse(str));
 startActivity(localIntent);

HTML配置示例

<a href="myapp://com.myapp/?params1=123&params2=EFDAFDA">Open app</a><br/>

<a href="market://search?q=我的app">Open Market</a><br/>

<a href="market://details?>Open Market Details</a><br/>

<script type="text/javascript">

window.location.href="myapp://com.myapp/?params1=123&params2=EFDAFDA";

</script>

Android获取参数:

Uri uri = getIntent().getData();  String test1= uri.getQueryParameter("arg0");  String test2= uri.getQueryParameter("arg1");
webView.setWebViewClient(new WebViewClient(){
  @Override
  public boolean shouldOverrideUrlLoading(WebView view, String url) {
      Uri uri=Uri.parse(url);
          if(uri.getScheme().equals("m")&&uri.getHost().equals("my.com")){
              String arg0=uri.getQueryParameter("arg0");
              String arg1=uri.getQueryParameter("arg1");
             
          }else{
              view.loadUrl(url);
          }
      return true;
  }
});