首页 > 代码库 > WebViewJavascriptBridge Android端 乱码问题(webview与页面js交互 传输参数乱码)
WebViewJavascriptBridge Android端 乱码问题(webview与页面js交互 传输参数乱码)
场景:Android 项目中webview 加载 远程html url地址,并显示。点击html 按钮后,通过js 传送参数给 webview 。原生Android代码中即可获取参数并做处理(根据业务而定)。在传输中遇到乱码问题。
乱码主要针对于中文。
WebViewJavascriptBridge 交互使用就不重复了,可以参考 http://www.cnblogs.com/whoislcj/p/6104015.html
html端js 代码:
function setupWebViewJavascriptBridge(callback) { if (window.WebViewJavascriptBridge) { return callback(WebViewJavascriptBridge); } if (window.WVJBCallbacks) { return window.WVJBCallbacks.push(callback); } window.WVJBCallbacks = [callback]; var WVJBIframe = document.createElement(‘iframe‘); WVJBIframe.style.display = ‘none‘; WVJBIframe.src = http://www.mamicode.com/‘wvjbscheme://__BRIDGE_LOADED__‘;>
在Android中引用的 WebViewJavascriptBridge js 需要修改,找到代码
原来:
function callHandler(handlerName, data, responseCallback) { if (arguments.length == 2 && typeof data == ‘function‘) { responseCallback = data; data = null; } _doSend({ handlerName:handlerName, data:data }, responseCallback); }
修改后:
function callHandler(handlerName, data, responseCallback) { if (arguments.length == 2 && typeof data =http://www.mamicode.com/= ‘function‘) {> else{ data = http://www.mamicode.com/btoa(unescape(encodeURIComponent( JSON.stringify( data ) ))); //红色部分为修改 加密> _doSend({ handlerName:handlerName, data:data }, responseCallback); }
Android代码中获取到data
首先需要引用两个
import java.net.URLDecoder;import android.util.Base64;
// testObjcCallback1 与js 中的定义 保持一致
webView.registerHandler("testObjcCallback1", new WVJBWebView.WVJBHandler() { @Override public void request(Object data, WVJBWebView.WVJBResponseCallback callback) { callback.callback("Response from testJavaCallback!"); //data 这里可以使单一参数,如果是多个参数,可以写成json {"command":"invest","result":1} {‘command‘: ‘choujiang‘, ‘result‘: 1}; String str = data.toString(); //先Base64解码 byte[] mmmm = Base64.decode(str, Base64.DEFAULT); String s = new String(mmmm); //在进行url解码 String ee = URLDecoder.decode(s, "UTF-8");
js 中加密,在Android中取出后解密,这样就不会有乱码了。
测试下吧。
解决如下:
WebViewJavascriptBridge Android端 乱码问题(webview与页面js交互 传输参数乱码)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。