zoukankan      html  css  js  c++  java
  • 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 id="applink1" 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 style="white-space:pre">    </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?id=com.myapp">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;
      }
    });

  • 相关阅读:
    Oracle 10g 改机器名后监听不能启动 解决方案 TNS12541 TNS12545
    14.3.1 IMPDP 命令行选项
    14.3.2 调用IMPDP —— 导入表空间
    三十岁之前不必在乎的事
    正则表达式
    GridLayout and GridData
    非UI线程更新界面
    整理用Java实现数字转化成字符串左边自动补零方法
    stackLayout
    读写properties文件
  • 原文地址:https://www.cnblogs.com/tmlee/p/5192734.html
Copyright © 2011-2022 走看看