我是靠谱客的博主 爱笑西牛,最近开发中收集的这篇文章主要介绍JS 如何唤醒 AppAndroid,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

通常我们有这样的需求,需要使用 js 的方式,打开 Android App 的指定某个页面,如果存在就打开,否则引导到下载页面。那么如何实现 js 唤醒 Android 页面呢?详情请见下面的方案:

#一、什么是 URL Scheme

我们先看一下一个 Url 的构成:

[scheme:][//authority][path][?query][#fragment]

https://www.taobao.com/shop那么 scheme 就是 https , authority 就是 www.taobao.com, path 就是 shop;

常见的 App Scheme 有:

APP微信支付宝淘宝微博QQ知乎短信
URL Schemeweixin://alipay://taobao://sinaweibo://mqq://zhihu://sms://

我们常常使用的 scheme 格式为:

     行为(应用的某个功能)
            |
scheme://[path][?query]
   |               |
应用标识       功能需要的参数


那么我们如果通过 scheme 的方式打开 android app 呢?此时就需要使用到 Android 相关的知识了。

#二、AndroidManifest.xml

在要打开的Activity中加入intent-filter

<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:host="webawakeapp.com"
        android:pathPrefix="/test"
        android:scheme="wakeapp" />
</intent-filter>

对 intent-filter 中的 data 进行简单介绍:

<data
    android:host="string"
    android:mimeType="string"
    android:path="string"
    android:pathPattern="string"
    android:pathPrefix="string"
    android:port="string"
    android:scheme="string"/>

其构造出来的url为:

scheme://host:port/path or pathPrefix or pathPattern

如何获取传递的参数?

在上述的 Activity 中加入如下代码:

Intent intent = getIntent();
Uri uri = intent.getData();
if (uri != null) {
    //如果url经过encode需要在此处进行decode:   url = java.net.URLDecoder.decode(originUrl, "utf-8");
    String url = uri.getQueryParameter("url"); //此处的url是自定义的参数
    String name = uri.getQueryParameter("name");

}


#三、在浏览器中唤醒 APP

唤醒 app 的方式常用的有:

  1. 使用 a 标签利用浏览器唤醒 app
  2. 新建一个隐藏的 iframe ,地址指向需要打开的 url
  3. 使用 window.location 或者 window.location.href 刷新当前页面
  4. 动态创建一个 script 脚本,在这个脚本中新建一个 a 标签并打开
// 打开url的方式
var urlOpen = {
  // 在ios支持不好
  iframe: function (url) {
    var iframe = document.createElement("iframe");
    iframe.style.display = "none";
    iframe.src = url;
    document.body.appendChild(iframe);
  },
  location: function (url) {
    window.location.href = url;
  },
  href: function (url) {
    var a = document.createElement("a");
    a.style.display = "none";
    a.href = url;
    document.body.appendChild(a);
    a.click();
  },
  script: function (url) {
    var script = document.createElement("script");
    script.setAttribute("type", "test/javascript");
    script.innerHTML =
      "(function(){" +
      'var a = document.createElement("a");' +
      'a.style.display = "none";' +
      'a.href = "' +
      url.replace(/"/g, '\"') +
      '";' +
      "document.body.appendChild(a);" +
      "a.click();" +
      "})()";
    document.body.appendChild(script);
  },
  open: function (url) {
    window.open(url);
  },
};

最后

以上就是爱笑西牛为你收集整理的JS 如何唤醒 AppAndroid的全部内容,希望文章能够帮你解决JS 如何唤醒 AppAndroid所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(49)

评论列表共有 0 条评论

立即
投稿
返回
顶部