调用系统自带浏览器可以使用以下方法
//调用系统自带浏览器打开网址
Uri uri = Uri.parse("http://www.baidu.com");
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);
WebView加载本地资源
WebView webView = (WebView) findViewById(R.id.webView);
webView.loadUrl("file:///android_asset/test.html");
WebView加载Web资源
webView.loadUrl("http://www.baidu.com");
覆盖WebView默认通过其他浏览器打开网页的行为,使得网页可以在webView中打开
webView.setWebViewClient(new WebViewClient(){
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
//return super.shouldOverrideUrlLoading(view, url);
}
//WebViewClient帮助WebView去处理一些页面控制和请求通知
});
启用支持javascript
WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled(true);
优先使用缓存加载
webSettings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
加载过程中显示进度条对话框
private ProgressDialog dialog;
webView.setWebChromeClient(new WebChromeClient(){
@Override
public void onProgressChanged(WebView view, int newProgress) {
//newProgress 1-100的整数
if(newProgress == 100){
//网页加载完毕,关闭ProgressDialog
closeDialog();
}else{
//网页正在加载,打开ProgressDialog
openDialog(newProgress);
}
}
private void closeDialog() {
if(dialog!=null && dialog.isShowing()){
dialog.dismiss();
dialog = null;
}
}
private void openDialog(int newProgress) {
if (dialog == null){
dialog = new ProgressDialog(MainActivity.this);
dialog.setTitle("正在加载中");
dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);//设置进度条样式
dialog.show();
}else{
dialog.setProgress(newProgress);
}
}
});
重写onKeyDown方法改写手机物理按键返回逻辑
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK){
Toast.makeText(this,webView.getUrl(),Toast.LENGTH_SHORT).show();
//判断是否存在上一页面,有则后退
if(webView.canGoBack()){
webView.goBack();//返回上一页面
return true;
}else{
System.exit(0);//退出程序
}
}
return super.onKeyDown(keyCode, event);
}
完整代码
package com.example.jialin.webviewdemo;
import android.app.ProgressDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
private WebView webView;
private ProgressDialog dialog;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// //调用系统自带浏览器打开网址
// Uri uri = Uri.parse("http://2014.qq.com");
// Intent intent = new Intent(Intent.ACTION_VIEW, uri);
// startActivity(intent);
init();
}
public void init(){
webView = (WebView) findViewById(R.id.webView);
//加载本地资源。
//webView.loadUrl("file:///android_asset/test.html");
//加载Web资源
webView.loadUrl("http://2014.qq.com");
//覆盖WebView默认通过其他浏览器打开网页的行为,使得网页可以在webView中打开
webView.setWebViewClient(new WebViewClient(){
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
//return super.shouldOverrideUrlLoading(view, url);
}
//WebViewClient帮助WebView去处理一些页面控制和请求通知
});
//启用支持javascript
WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled(true);
//优先使用缓存加载
webSettings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
webView.setWebChromeClient(new WebChromeClient(){
@Override
public void onProgressChanged(WebView view, int newProgress) {
//newProgress 1-100的整数
if(newProgress == 100){
//网页加载完毕,关闭ProgressDialog
closeDialog();
}else{
//网页正在加载,打开ProgressDialog
openDialog(newProgress);
}
}
private void closeDialog() {
if(dialog!=null && dialog.isShowing()){
dialog.dismiss();
dialog = null;
}
}
private void openDialog(int newProgress) {
if (dialog == null){
dialog = new ProgressDialog(MainActivity.this);
dialog.setTitle("正在加载中");
dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);//设置进度条样式
dialog.show();
}else{
dialog.setProgress(newProgress);
}
}
});
}
//改写手机物理按键返回逻辑
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK){
Toast.makeText(this,webView.getUrl(),Toast.LENGTH_SHORT).show();
//判断是否存在上一页面,有则后退
if(webView.canGoBack()){
webView.goBack();//返回上一页面
return true;
}else{
System.exit(0);//退出程序
}
}
return super.onKeyDown(keyCode, event);
}
}
这篇博客介绍了Android开发中WebView的基本使用,包括加载本地和Web资源,设置默认在WebView内打开网页,启用JavaScript支持,优先使用缓存,以及在加载过程中显示ProgressDialog。此外,还讨论了如何重写onKeyDown方法以自定义物理按键返回行为。
1万+

被折叠的 条评论
为什么被折叠?



