UI组件——WebView部分api释义
来源:互联网 发布:java面试问题 编辑:程序博客网 时间:2024/05/01 09:33
- destroy()
销毁当前WebView,WebView有潜在的内存泄漏问题,当不需要的时候,最好销毁掉,避免内存泄漏
@Override protected void onDestroy() { super.onDestroy(); if (mMyWebView!=null) { ViewGroup rootView = (ViewGroup) mMyWebView.getRootView(); rootView.removeAllViews();//ViewGroup中的方法 mMyWebView.destroy();//销毁WebView } }
- loadUrl(String str)
str可以是Http/Https协议的URL,也可以是js的代码
webView.loadUrl("https://www.google.com");url可以是网络连接,或者本地或者SD卡的地址,如:webView.loadUrl("file:///android_asset/demo.html");webView.loadUrl("content://com.android.htmlfileprovider/sdcard/demo.html");亦或者是js代码:执行此代码无法获取js的返回值webView.loadUrl("javascript:methodName(parameterValues)")
- loadData(String data,String mimeType,String encoding)
这个方法用起来各种问题,首先data中出现中文的时候,容易出现乱码问题,其次在data中有’#’, ‘%’, ‘\’, ‘?’ 的时候也会出现很多问题,看源码就知道了,所有不建议使用
- loadDataWithBaseURL(String baseUrl, String data,String mimeType, String encoding, String historyUrl )
参数解释:基准url,当数据里面的url是绝对路径时,baseUrl自动不拼接,当数据中的url是相对路径时,baseUrl自动拼接为绝对路径
data:数据
mimeType:MIME类型
encoding:编码格式
historyUrl:没用过,都是写的null;
String baseURL = "http://api.test.qyuedai.com/";//我公司的测试地址 String data = "loadData;"+"测试中文是否乱码;"+"绝对地址加载图片:"+ "<img src = 'http://7xrgp0.com1.z0.glb.clouddn.com/CMB-anroid-tx.png'>"+ "相对地址加载:没有试验条件"; mMyWebView.loadDataWithBaseURL(baseURL,data,"text/html","UTF-8",null);
- evaluateJavascript(String script,ValueCallback resultCallback)
script:将要执行的js语句
resultCallback:执行结果的回调
此方法异步执行js语句,并返回执行结果,需要添加setJavaScriptEnabled(true)条件,并且该方法在4.4(api 19)以后才加入。此方法和loadUrl()是与js交互的重要途径。
- stopLoading()
停止加载 - reload()
- canGoBack()
能否回退 - goBack()
回退 - canGoForward()
能否向前
简单的略过。。。。。。只看重点!!!!!!
- setWebViewClient(WebViewClient client)
接受各种通知和请求的 WebViewClient
- setDownloadListener(DownloadListener listener)
下载监听,DownloadListener 只有一个开始下载的回调,不明白为什么只加一个回调
- setWebChromeClient(WebChromeClient client)
处理js对话框,图标,标题,加载进度等等
- addJavascriptInterface(Object object, String name)
这个方法真的是让WebView变得十分强大,同时也变得臭名昭著,
意思是添加js接口,可以让js调用Android里的方法。
带来的问题:webView 在api 4.0 到4.2 之间增加了 searchBoxJavaBridge_ 方法,导致webView 存在安全漏洞。
解决方法是:在4.2 以前的版本不用 addJavascriptInterface 接口,并且在4.0-4.2之间移除searchBoxJavaBridge方法;代码本人也是Google来的,只是稍加修改。。。。
//api是14-17时,移除searchBoxJavaBridge_这个接口,避免产生安全问题 private void removeSearchBoxJavaBridgeInterface() { if (Build.VERSION.SDK_INT >= 14 && Build.VERSION.SDK_INT < 17) { removeJavascriptInterface("searchBoxJavaBridge_"); } } //只有当api 大于17的时候才允许使用addJavascriptInterface方法 @Override public void addJavascriptInterface(Object object, String name) { if (Build.VERSION.SDK_INT >= 17) { super.addJavascriptInterface(object, name); } }
- getSettings()
获取WebSettings 类,来设置webview
以上只是个人感觉比较重要的api,如有错误,请留言!
阅读全文
0 0
- UI组件——WebView部分api释义
- UI组件——WebViewClient部分api解释
- UI组件——WebChromeClient部分api解释
- UI组件——WebSettings部分api解释
- UI组件——WebView使用总结
- AS3 Starling塔防教程——第八部分——UI菜单组件
- AS3 Starling塔防教程——第九部分——UI游戏组件
- 关于Ui组件之WebView详解
- android 部分 FLAG释义
- UI组件——TextView
- UI组件——GridLayout
- UI组件各个部分的分工
- react——组件API
- Git部分操作释义图
- qt浏览器部分类释义
- AngularJs的UI组件ui-Bootstrap——Datepicker Popup
- js玩具——UI组件:颜色
- js玩具——UI组件:规格
- sql之left join、right join、inner join的区别
- [leetcode]668. Kth Smallest Number in Multiplication Table
- 源码安装tensorflow
- [知了堂学习笔记]_css3特效第二篇--行走的线条&&置顶导航栏
- Android去除字符串中空格制表符换行
- UI组件——WebView部分api释义
- Sasha and Sticks CodeForces
- 电池高压安全注意事项
- 迭代
- PHP进行3des加密
- 从服务器下载mp3文件,保存到MediaStore,提取数据mp3中的信息
- Java注解--四种元注解
- python之正则表达式教程(初级)
- 0828 Web知识初了解