Android与H5交互,向H5注入APP账号密码免登录等。

2018-11-23  本文已影响0人  苏坡坡要吃婆婆酥
image.png

需求类型:Android调用JS代码

  1. loadUrl()方法 (本文方法)

需求描述:Android端嵌套了3个H5页面,APP登录之后,免去H5登录。

JS代码:

var getUserInfo= function(value){
    var username = value["userid"];
    var password = value["password"];
    alert("username");
    alert(username);
    alert("password");
    alert(password);
  $.ajax({
   url:"http://bossxie.qianyankeji.net/index.php/index/publics/uplogin.html",
    type:"post",
    data:{'username':username,'password':password},
    success:function(json){
      var parsedInfo = $.parseJSON(json);
      console.log(parsedInfo);
      if(parsedInfo.status == 1){
        // layer.msg(parsedInfo.msg);
         window.localStorage.userInfo = json;
         var boss = $.parseJSON(window.localStorage.userInfo);
         console.log("boss");
         console.log(boss);
         if (parsedInfo.info.type == 1) {
           location.href = "firm.html";
         } else if(parsedInfo.info.type == 2) {
          location.href = "student.html";
         } else{
         }
      }else if(parsedInfo.status == 0){
        alert(parsedInfo.msg);
      }
    }
  })
}

Android代码:

try {
                //写在WebViewClient的onPageFinished方法里面
                //因为JS代码里面的参数类型是JSONObject,所以我下面这么写。具体可根据JS代码里面的类型改变。
                JSONObject json = new JSONObject();
                json.put("userid", "13112345678");
                json.put("password", "111111");
                webView.loadUrl("javascript:getUserInfo(" + json + ")");
            } catch (JSONException e) {
                e.printStackTrace();
            }

     -------------------------------------------------------------------

       //支持App内部javascript交互。这个一定要记得设置。
        webView.getSettings().setJavaScriptEnabled(true);


需求类型:JS调用Android代码

  1. 通过addJavascriptInterface()添加对象印射方法 (本文方法)

需求描述:Android端嵌套了3个H5页面,只要是APP打开的H5就隐藏H5页面里面的标题栏。

JS代码:

var isApp;
if (window.localStorage.getItem('isApp')) {
    isApp = (window.localStorage.getItem('isApp') === 'true') ? true : false;
} else {
    isApp = window.fromApp ? true : false;
    window.localStorage.setItem('isApp', String(isApp));
}
// alert('window.fromApp='+window.fromApp);
// alert('isApp='+isApp);
console.log(isApp ? 'APP环境' : '非APP环境');

Android代码:

//前端判断fromApp这个对象是否为空,我们随便返回不让为空就行
 webview.addJavascriptInterface(new Object(), "fromApp");


public class Object {
        @JavascriptInterface
        // 这个fromApp为属性名
        public int fromApp() {
            return 1;
        }
    }
上一篇下一篇

猜你喜欢

热点阅读