栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Android js交互这一篇就够

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Android js交互这一篇就够

完整代码:TestJs: android js交互sample 1.Android调用JS

a.不需要获取返回值

java:

webView.loadUrl("javascript:add(1 , 3)");

js:

        function add(p1 , p2) {
            var r = p1 + p2;
            alert(r);
        }
webView.setWebChromeClient(new WebChromeClient());//支持js弹出alert

b.需要获取返回值

java:

webView.evaluateJavascript("javascript:guid()", value -> {
                    Toast.makeText(this , "js返回的uuid == " + value , Toast.LENGTH_SHORT).show();
                });

js:

        function guid() {
            return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
            var r = Math.random() * 16 | 0,
            v = c == 'x' ? r : (r & 0x3 | 0x8);
            return v.toString(16);
            });
        }
2.JS调用Android

Android需要支持Javascript,并且添加,可以不传this,我传了因为要关闭activity

        webView.getSettings().setJavascriptEnabled(true);//如果访问的页面中要与Javascript交互,则webview必须设置支持Javascript
        ...
        //此处 AppInterface 即 window.AppInterface.getUserId(para); 的 AppInterface
        //webView.loadUrl之后调用
        webView.addJavascriptInterface(new AndroidJs(this) , "AppInterface");

AndroidJs.java

import android.app.Activity;
import android.util.Log;
import android.webkit.JavascriptInterface;
import android.widget.Toast;

public class AndroidJs {
    Activity activity;
    public AndroidJs(Activity activity){
        this.activity = activity;
    }
    //js调用android关闭界面
    @JavascriptInterface
    public void back(String para) {
        Toast.makeText(activity , para , Toast.LENGTH_SHORT).show();
        Log.i("thisweb" , "para == " + para);
        activity.finish();
    }

    //js调用android获取userid
    @JavascriptInterface
    public String getUserId(String para) {
        Toast.makeText(activity , para , Toast.LENGTH_SHORT).show();
        return "android给你userid";
    }
}

需要返回值就return "xxx",不需要就不返回。定义成void方法。

js:

        function back(para) {
            // window.AppInterface.back("xx");
            window.AppInterface.back(para);
        }

        function getUserId(para) {
            var r = window.AppInterface.getUserId(para);
            alert(r);
        }
3.Android注入js并调用

注入时机只要是onpagefinished之后都可以

注入:

 String jscode = "javascript:function customalert() {var b = guid();if(b){alert(b);}}";
 webView.loadUrl(jscode);

调用:

webView.loadUrl("javascript:customalert()");

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/389796.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号