WebView
来源:互联网 发布:linux怎么开机进入系统 编辑:程序博客网 时间:2024/06/08 09:47
- loadUrl()
- loadData()
- loadDataWithBaseURL()
- capturePicture()
- goBack()
- goForward()
- stopLoading()
- reload()
webView_main = (WebView) findViewById(R.id.webView_main);
webView_main.loadUrl("http://www.qq.com");
webView_main = (WebView) findViewById(R.id.webView_main);
// webView_main.loadData(data, "text/html","utf-8");//这个方法中虽然设置了字符集,但是运行效果中发现依然中文会显示乱码。为了解决这个问题,建议使用loadDataWithBaseURL()方法。
webView_main.loadDataWithBaseURL(null, data, "text/html", "utf-8", null);
3、如果html中包含有超级链接地址,WebView能顺利执行吗?运行后发现,所有的javascript都不会执行。因为WebView 在默认情况下不支持javascript。如何让执行javascript呢?让WebView支持javascript的两个步骤:
- 使用 WebView 组件的WebSettings对象的setJavaScriptEnabled()方法。这种做法是让 WebView 能支持绝大多数的javascript语言。但是依然不支持alert等警告对话框语句。
- 使用 WebView 组件的setWebChromeClient()方法。这种做法是让 WebView 也支持显示alert等警告对话框。
基本代码:webView_main.getSettings().setJavaScriptEnabled(true);// 支持运行javascript
webView_main.setWebChromeClient(new WebChromeClient());// 支持运行特殊的javascript(例如:alert())
webView_main.setWebViewClient(new WebViewClient());// 当点击超链地址后不会新打开浏览器来访问,而是始终在本app中浏览页面
经过运行后发现,WebView中的超链地址在点击后,会跳出该应用程序,而弹出新的浏览器去访问该网页。如果解决呢?调用webview对象的setWebViewClient()方法即可解决。
webView_main.setWebViewClient(new WebViewClient());
【注意:】WebView除了可以加载服务器端的网页,还可以加载本地资产目录中的网页文件。网页文件格式为:"file:///android_asset/文件名称"。
二、WebKit例如:// 加载本地资产目录下的网页文件webView_main.loadUrl("file:///android_asset/网页文件名称.html")。
方法
描述
setJavaScriptEnabled(boolean flag)
设置是否支持Javascript
setBlockNetworkImage(boolean flag)
设置是否阻止网络图片加载
setBuiltInZoomControls(boolean enabled)
将HTML文本内容加载到WebView中
setCacheMode(int mode)
设置缓存模式
setDefaultFontSize(int size)
设置默认字体大小
setFixedFontFamily(String font)
设置固定使用的字体
setDefaultTextEncodingName(String encoding)
设置解码时默认的字符集
setSupportZoom(boolean support)
设置是否支持变焦
setAllowFileAccess(boolean allow)
设置是否允许访问WebView中文件。就是file:///android_asset和file:///android_res路径下的资产和资源文件。默认允许访问。
方法
描述
onJsAlert()
处理Javascript中Alert对话框
onJsConfirm()
处理Javascript中Confirm对话框
onJsPrompt()
处理Javascript中Prompt对话框
onProgressChanged()
加载进度条改变
onCloseWindow()
关闭WebView
onCreateWindow()
创建WebView
onReceivedIcon()
Icon图标改变
onReceivedTitle()
网页Title改变
onRequestFocus()
WebView显示焦点
方法
描述
shouldOverrideUrlLoading()
新的链接在当前WebView中打开
onPageStarted()
网页开始加载
onPageFinished()
网页加载完毕
doUpdateVisitedHistory()
更新访问历史记录的数据库
onLoadResource()
加载指定Url地址提供的资源
onFormResubmission()
应用程序重新请求网页数据
onScaleChanged()
WebView发生改变
Java代码中也可以直接调用Javascript方法。代码如下:
webView_main.loadUrl("javascript:方法名()");
【备注:】调用页面地址:http://m.weather.com.cn/m/pn12/weather.htm?id=101010100T
webView_main = (WebView) findViewById(R.id.webView_main);webView_main.getSettings().setJavaScriptEnabled(true);webView_main.setWebChromeClient(new WebChromeClient());webView_main.setWebViewClient(new WebViewClient());webView_main.loadUrl("http://m.weather.com.cn/m/pn12/weather.htm?id=101010100T");
publicclass MainActivity extends Activity {
privateEditText editText_main_url;
privateWebView webView_main;
private String url = "";
@Override
protectedvoid onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editText_main_url = (EditText) findViewById(R.id.editText_main_url);
webView_main = (WebView) findViewById(R.id.webView_main);
// 让webview对象支持解析javascript语句
webView_main.getSettings().setJavaScriptEnabled(true);
// 让webview对象支持解析alert()等特殊的javascript语句
webView_main.setWebChromeClient(new WebChromeClient());
// 如果不使用该句代码,在点击超链地址后,会跳出程序,而弹出浏览器访问网页。
webView_main.setWebViewClient(new WebViewClient());
}
publicvoid clickButton(View view) {
switch (view.getId()) {
// 浏览器中后退键监听
caseR.id.button_main_goback:
webView_main.goBack();
break;
// 浏览器前进键监听
caseR.id.button_main_goforward:
webView_main.goForward();
break;
// 当输入网址后,点击该按钮,可以执行访问
caseR.id.button_main_submit:
url = editText_main_url.getText().toString();
if ((url == null) || url.equals("")) {
Toast.makeText(MainActivity.this, "请输入url地址!", Toast.LENGTH_LONG).show();
} else {
if (url.indexOf("http://") != 0) {
url = "http://" + url;
}
webView_main.loadUrl(url);
}
break;
// 浏览器停止加载键监听
caseR.id.button_main_stop:
webView_main.stopLoading();
break;
// 浏览器刷新键监听
default:
break;
}
}
}
- 概念:MIME意为多功能Internet邮件扩展,它设计的最初目的是为了在发送 电子邮件时附加多媒体数据,让邮件客户程序能根据其类型进行处理。然而当它被HTTP协议支持之后,它的意义就更为显著了。它使得HTTP传输的不仅是普通的文本,而变得丰富多彩。
- 每个MIME类型由两部分组成,前面是数据的大类别,例如声音audio、图象image等,后面定义具体的种类。
- 常见的MIME类型(通用型):
- 超文本标记语言文本 .html text/html
- xml文档 .xml text/xml
- XHTML文档 .xhtml application/xhtml+xml
- 普通文本 .txt text/plain
- RTF文本 .rtf application/rtf
- PDF文档 .pdf application/pdf
- Microsoft Word文件 .word application/msword
- PNG图像 .png image/png
- GIF图形 .gif image/gif
- JPEG图形 .jpeg,.jpg image/jpeg
- au声音文件 .au audio/basic
- MIDI音乐文件 mid,.midi audio/midi,audio/x-midi
- RealAudio音乐文件 .ra, .ram audio/x-pn-realaudio
- MPEG文件 .mpg,.mpeg video/mpeg
- AVI文件 .avi video/x-msvideo
- GZIP文件 .gz application/x-gzip
- TAR文件 .tar application/x-tar
- 任意的二进制数据 application/octet-stream
- WebView
- WebView
- WebView
- webView
- webView
- webview
- webview
- WebView
- webview
- webview
- webview
- WebView
- webView
- webview
- webView
- webview
- WebView
- WebView
- 下载记录
- python问题:IndentationError:expected an indented block错误解决
- 图片平铺展开成背景颜色
- Android实现对图片的缩放、剪切、旋转、存储
- RabbitMQ学习(六)之远程过程调用(RPC)(java)
- WebView
- rbenv 管理多个版本Ruby
- Java中位运算(移位、位与、或、异或、非)
- cannot Go to definition in visual studio code
- spring注解:@Repository、@Service、@Controller
- TextField控件详解
- angularjs系列之轻松使用$q进行异步编程
- JS正则表达式的RegExp对象和括号的使用等需要注意的
- C#、filestream、streamwriter,html方式生成excel