java
package c.c.c;
import android.app.Activity;
import android.net.Uri;
import android.os.Bundle;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuItem;
import android.webkit.JsResult;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.webkit.WebViewClient;
public class webActivity extends Activity {
WebView wv;
private String errorHtml = "";
private static final String TAG = webActivity.class.getSimpleName();
ProgressDialog pd;
Handler handler;
Intent intent = new Intent();
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.web);
无网络
/*errorHtml = "<html><body><h1>Page not find!</h1></body></html>";
wv = (WebView) findViewById(R.id.wv);
wv.getSettings().setJavaScriptEnabled(true);
wv.loadUrl("http://www.baidu.com");
Log.i(TAG, "--onCreate--");
//设置web视图的客户端
wv.setWebViewClient(new MyWebViewClient());
wv.getSettings().setDefaultTextEncodingName("UTF-8"); //设置默认的显示编码
*/
init();// 执行初始化函数
loadurl(wv, http://www.baidu.com);
handler = new Handler() {
public void handleMessage(Message msg) {// 定义一个Handler,用于处理下载线程与UI间通讯
if (!Thread.currentThread().isInterrupted()) {
switch (msg.what) {
case 0:
pd.show();// 显示进度对话框
break;
case 1:
pd.hide();// 隐藏进度对话框,不可使用dismiss()、cancel(),否则再次调用show()时,显示的对话框小圆圈不会动。
break;
}
}
super.handleMessage(msg);
}
};
}
public void init() {// 初始化
wv = (WebView) findViewById(R.id.wv);
wv.getSettings().setJavaScriptEnabled(true);// 可用JS
wv.setScrollBarStyle(0);// 滚动条风格,为0就是不给滚动条留空间,滚动条覆盖在网页上
wv.setWebViewClient(new WebViewClient() {
//
public boolean shouldOverrideUrlLoading(final WebView view,
final String url) {
loadurl(view, url);// 载入网页
return true;
}// 重写点击动作,用webview载入
});
wv.setWebChromeClient(new WebChromeClient() {
public void onProgressChanged(WebView view, int progress) {// 载入进度改变而触发
if (progress == 100) {
handler.sendEmptyMessage(1);// 如果全部载入,隐藏进度对话框
}
super.onProgressChanged(view, progress);
}
});
pd = new ProgressDialog(webActivity.this);
pd.setProgressStyle(ProgressDialog.STYLE_SPINNER);
pd.setMessage("数据载入中,请稍候!");
}
/*//无网络
protected void onResume() {
super.onResume();
Log.i(TAG, "--onResume()--");
}
public class MyWebViewClient extends WebViewClient{
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
Log.i(TAG, "-MyWebViewClient->shouldOverrideUrlLoading()--");
view.loadUrl(url);
return true;
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
Log.i(TAG, "-MyWebViewClient->onPageStarted()--");
super.onPageStarted(view, url, favicon);
}
@Override
public void onPageFinished(WebView view, String url) {
Log.i(TAG, "-MyWebViewClient->onPageFinished()--");
super.onPageFinished(view, url);
}
@Override
public void onReceivedError(WebView view, int errorCode,
String description, String failingUrl) {
super.onReceivedError(view, errorCode, description, failingUrl);
Log.i(TAG, "-MyWebViewClient->onReceivedError()--\n errorCode="+errorCode+" \ndescription="+description+" \nfailingUrl="+failingUrl);
//这里进行无网络或错误处理,具体可以根据errorCode的值进行判断,做跟详细的处理。
view.loadData(errorHtml, "text/html", "UTF-8");
}
} */
public void loadurl(final WebView view, final String url) {
new Thread() {
public void run() {
handler.sendEmptyMessage(0);
view.loadUrl(url);// 载入网页
}
}.start();
}
// 捕捉返回键
public boolean onKeyDown(int keyCode, KeyEvent event) {// 捕捉返回键
if ((keyCode == KeyEvent.KEYCODE_BACK) && wv.canGoBack()) {
wv.goBack();
return true;
} else if (keyCode == KeyEvent.KEYCODE_BACK) {
ConfirmExit();// 按了返回键,但已经不能返回,则执行退出确认
return true;
}
return super.onKeyDown(keyCode, event);
}
public void ConfirmExit() {// 退出确认
AlertDialog.Builder ad = new AlertDialog.Builder(webActivity.this);
ad.setTitle("退出");
ad.setMessage("真的要退出吗?");
ad.setPositiveButton("是", new DialogInterface.OnClickListener() {// 退出按钮
public void onClick(DialogInterface dialog, int i) {
webActivity.this.finish();// 关闭activity
}
});
ad.setNegativeButton("否", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int i) {
// 不退出不用执行任何操作
}
});
ad.show();// 显示对话框
}
/**
* 菜单项
*/
@Override
public boolean onCreateOptionsMenu(Menu menu) {
menu.add(0, 1, 0, "退出");
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == 1) {
this.finish();
System.exit(0);
}
return super.onOptionsItemSelected(item);
}
}
代码参考某文章
<!-- 网络权限-->
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />