美文网首页
JS和Android 交互

JS和Android 交互

作者: Mlethe | 来源:发表于2020-10-13 15:13 被阅读0次

一、Android调用js的方法

1、设置webview对js的支持

WebSettings webSettings = webView.getSettings();
// 设置编码
webSettings.setDefaultTextEncodingName("utf-8");
// 设置支持调用JavaScript方法
webSettings.setJavaScriptEnabled(true);

2、在html中添加 evaluateNativeToJS 方法

<!DOCTYPE html>
<html>
    <head></head>
    <body>
        <script type="text/javascript">
            /**
             * Android调用js的方法
             *
             * @param json json格式字符串(Android工程师和前端工程师约定的数据格式)
             */
            function evaluateNativeToJS(json) {
                // 处理数据
            }
        </script>
    </body>
</html>

3、在Android中调用 evaluateNativeToJS 方法

webView.evaluateJavascript("javascript:evaluateNativeToJS('{\"action\": \"login\",\"data\": {}}')", new ValueCallback<String>() {
    @Override
    public void onReceiveValue(String value) {
        // value js方法返回值
    }
});

二、js调用Android的方法

1、创建js调用的接口(添加js要调用的方法 evaluateJsToNative)

class JsCallNativeInterface {
    /**
     * js调用Android的方法
     *
     * @param json json格式字符串(Android工程师和前端工程师约定的数据格式)
     */
    @JavascriptInterface
    public void evaluateJsToNative(String json) {
        // 处理数据
    }
}

2、设置webview对js的支持

WebSettings webSettings = webView.getSettings();
// 设置编码
webSettings.setDefaultTextEncodingName("utf-8");
// 设置支持调用JavaScript方法
webSettings.setJavaScriptEnabled(true);
// 为webView添加js调用的接口(可以添加多个)
webView.addJavascriptInterface(new JsCallNativeInterface(), "callNative");

3、js调用 evaluateJsToNative方法

<!DOCTYPE html>
<html>
    <head></head>
    <body>
        <button type="button" onclick="share()">js调用Android</button>
        <script type="text/javascript">
            function share() {
                // js调用Android的方法
                window.callNative.evaluateJsToNative('{\
                    "action": "share",\
                    "data": {"targeturl":"https://nact.sxyj.net/miao_share?type=invite"}\
                }')
            }
        </script>
    </body>
</html>

相关文章

网友评论

      本文标题:JS和Android 交互

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