美文网首页
Android与H5交互,向H5注入APP账号密码免登录等。

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

作者: 苏坡坡要吃婆婆酥 | 来源:发表于2018-11-23 17:41 被阅读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;
            }
        }
    

    相关文章

      网友评论

          本文标题:Android与H5交互,向H5注入APP账号密码免登录等。

          本文链接:https://www.haomeiwen.com/subject/lzzjqqtx.html