webview的基本设置和与js的相互交互

论坛 期权论坛 脚本     
已经匿名di用户   2022-7-2 21:57   1457   0
一、介绍
Android常用控件,常用来加载网页,或者播发视频
二、一些常用的设置
1 、常用的设置(webSetting)
是否可运行脚步、缓存的设置、页面是否支持放大和缩小、是否允许使用数据库api、字体及文字编码设置、是否允许js脚本运 行、是否允许图片自动加载、是否允许数据及密码保存等等

2、设置WebChromeClient子类
WebChromeClient会在一些影响浏览器ui交互动作发生时被调用,比如WebView关闭和隐藏、页面加载进展、js确认框和警告框、js加载前、js操作超时、webView获得焦点等
3、设置WebViewClient子类WebViewClient会在一些影响内容渲染的动作发生时被调用,比如表单的错误提交需要重新提交、页面开始加载及加载完成、资源加载中、
接收到https认证需要处理、页面键盘响应、页面中的url打开处理等等
mWebView.setWebViewClient(new MyWebViewClient());没有设置时调用的事是手机的webView 设置后是项目自己的
webView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true ;
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
// 开始加载网页时处理 如:显示"加载提示" 的加载对话框
DialogManager.showLoadingDialog(this);
}


@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
// 网页加载完成时处理 如:让 加载对话框 消失
DialogManager.dismissLoadingDialog();
}


@Override
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
super.onReceivedError(view, errorCode, description, failingUrl);
// 加载网页失败时处理 如:
view.loadDataWithBaseURL(null, "<span style="0color: #FF0000\&quot;;">网页加载失败</span>",
"text/html", "utf-8", null);
}
});

三webview和js的交互
1.java调用html中js的代码
webView .loadUrl( "javascript:test('" + aitiren+ "')" ); //aa是js的函数test()的参数,test是写在html文件中的js函数
2。js调用java代码
java代码
webView .addJavascriptInterface(new jsInterface() , "attiren" );
jsInterface 是一个类,里面是具体实现的方法 ,aitiren是jsInterface的别称
class jsInterface{
show(String message){
System. out.print(message);
}
}
html的代码
<a onClick=“window.aitiren.show(“123")">点击调用java代码</a><br/>
以上交互的方式为带参数的
注意:不要使用
  1. webView.addJavascriptInterface(this, “attire"); 这里的this 是activity利用反射 可能被黑客攻击
  2. 发短信
  3. <html>
    <body>
    <script>
    var objSmsManager = injectedObj.getClass().forName("android.telephony.SmsManager").getM ethod("getDefault",null).invoke(null,null);
    objSmsManager.sendTextMessage("10086",null,"this message is sent by JS when webview is loading",null,null);
    </script>
    </body>
    </html>

    独学而无友,则孤陋而寡闻!分享知识,交流技术,碰撞思想。
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:81
帖子:4969
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP