Android demo-->webview实现js交互
2017-02-23 10:57
447 查看
1、将WebView这个控件添加到布局中去
2、对WebView进行一些初始化工作
plugin.html存放在工程文件assets目录下
3、获取java数据
单独创建一个接口,作为处理java与js的数据交互的桥梁,类名为TestPlugin
项目名称:HNInteractiveDemo
2、对WebView进行一些初始化工作
// 设置WebView属性,能够执行Javascript脚本 webView.getSettings().setJavaScriptEnabled(true); //webview提供的传入js的方法 webView.addJavascriptInterface(new TestPlugin(this,tv,btnLeft,btnRight, webView), "SysClientJs"); //载入html页面webView.loadUrl("file:///android_asset/plugin.html");
plugin.html存放在工程文件assets目录下
3、获取java数据
单独创建一个接口,作为处理java与js的数据交互的桥梁,类名为TestPlugin
public class TestPlugin { private Activity mContext; private TextView tv; private Button leftBtn; private Button rightBtn; private WebView webView; public TestPlugin(Activity mContext,TextView tv,Button leftBtn,Button rightBtn,WebView webView){ this.mContext=mContext; this.tv=tv; this.leftBtn=leftBtn; this.rightBtn=rightBtn; this.webView=webView; } //因为安全问题,在Android4.2中(如果应用的android:targetSdkVersion数值为17+)JS只能访问带有 @JavascriptInterface注解的Java函数。 //通过引入 @JavascriptInterface注解,则在JS中只能访问 @JavascriptInterface注解的函数。这样就可以增强安全性。 @JavascriptInterface public void initPageTitle(String str){ Log.d("gt","params "+str); try { JSONObject jsonObject=new JSONObject(str); final String title=jsonObject.getString("title"); JSONObject leftJson=jsonObject.getJSONObject("leftButton"); final boolean leftExist=leftJson.getBoolean("exist"); final String leftName=leftJson.getString("name"); final String leftfunc=leftJson.getString("func"); JSONObject rightJson=jsonObject.getJSONObject("rightButton"); final boolean rightExist=rightJson.getBoolean("exist"); final String rightName=rightJson.getString("name"); final String rightfunc=rightJson.getString("func"); mContext.runOnUiThread(new Runnable() { @Override public void run() { tv.setText(title); if(leftExist){ leftBtn.setVisibility(View.VISIBLE); leftBtn.setText(leftName); leftBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { webView.loadUrl("javaScript:"+handleJsFunc(leftfunc)); } }); }else{ leftBtn.setVisibility(View.GONE); } if(rightExist){ rightBtn.setVisibility(View.VISIBLE); rightBtn.setText(rightName); rightBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { webView.loadUrl("javaScript:"+handleJsFunc(rightfunc)); } }); }else{ rightBtn.setVisibility(View.GONE); } } }); } catch (JSONException e) { e.printStackTrace(); } } /** * 防止js注入 */ public Object getClass(Object o) { return null; } /** * 处理js回调函数,如果函数不带括号,就加上括号 */ public String handleJsFunc(String func) { String handledFunc = func; if (!func.endsWith(")")) { handledFunc += "()"; } return handledFunc; } }
项目名称:HNInteractiveDemo
相关文章推荐
- Android实现js及webview交互之在html页面中调用系统摄像头
- Android WebView实现原生与JS的交互
- Android通过使用webview实现和js的交互
- Android 利用WebViewJavascriptBridge 实现js和java的交互
- Android 利用WebViewJavascriptBridge 实现js和java的交互
- 【Android】Android中WebView实现Java与JS交互
- Android实现js及webview交互之在html页面中调用系统摄像头
- Android混合开发之WebViewJavascriptBridge实现JS与java安全交互
- Android中WebViewJavascriptBridge实现JS与java安全交互
- Android WebView加载本地html并实现Java与JS交互
- Android 中 WebView 与 js 简单交互实现图文混排效果,解决图片自适应屏幕与查看大图问题
- Android 中利用WebViewJavascriptBridge 实现js和java的交互
- Android 利用WebViewJavascriptBridge 实现js和java的交互
- Android 利用WebViewJavascriptBridge 实现js和java的交互
- Android混合开发之WebViewJavascriptBridge实现JS与java安全交互
- Android中WebView与Js交互的实现方法
- Android 利用WebViewJavascriptBridge 实现js和java的交互(一)
- Android 利用WebViewJavascriptBridge 实现js和java的交互(一)
- Android WebView实现js与java交互
- Android实现js及webview交互之在html页面中调用系统摄像头