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个字符。)
修改:
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);
}
});
}
}