安卓开发资料整理

Android 与 JS 交互数据上限问题【Refusing t

2017-07-25  本文已影响705人  HelloXWorld

第一篇android笔记。

Hello,简书! Hello,Android!Hello , World!

需求:android向H5传输图片,原生获取图片之后,最终转为base64后,通过js桥传送给H5

mWebView.post(new Runnable() {
    @Override
    public void run() {
        mWebView.loadUrl("javascript:jsFunc('" + msg + "')");
     }
});

问题:有时候图片过大,又想高质量的传送,可能遇到下面这只八哥
LOG:05-23 13:33:33.111 21015-21015/com.not.boring:lose W/chromium: [WARNING:navigator_impl.cc(315)] Refusing to load URL as it exceeds 2097152 characters.
(拒绝加载URL超过2097152个字符。)

资料:https://stackoverflow.com/questions/38066503/android-webview-send-base64-url-to-javascript-refusing-to-load-url-as-it-exceed

修改:

    void callJsMethod(final String msg) {
         // 19级之前用loadUrl
        if(Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) {
            mWebView.post(new Runnable() {
                @Override
                public void run() {
                    mWebView.loadUrl("javascript:jsFunc('" + msg + "')");
                }
            });
        }else{
            // 19级以后用evaluateJavascript
            mWebView.post(new Runnable() {
                @RequiresApi(api = Build.VERSION_CODES.KITKAT)
                @Override
                public void run() {
                    mWebView.evaluateJavascript("javascript:jsFunc('" + msg + "')", new ValueCallback<String>() {
                        @Override
                        public void onReceiveValue(String value) {
                                 // 如果不需要JS返回数据,该回调方法参数可以写成null
                        }
                    });
                 // 这么写
                 /// mWebView.evaluateJavascript("javascript:jsFunc('" + msg + "')", null);
                }
            });
        }
    }
上一篇下一篇

猜你喜欢

热点阅读