--------------------------------------------AndroidManifest.xml----------------------------------
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.ch18"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="10"
android:targetSdkVersion="15" />
<!-- 网络访问权限 -->
<uses-permission android:name="android.permission.INTERNET" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/title_activity_main" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
--------------------------------------------activity_main.xml----------------------------------
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<WebView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/wv"
tools:context=".MainActivity" />
</RelativeLayout>
--------------------------------------------MainActivity.java--------------------------------------
package com.ch18;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
import android.view.KeyEvent;
import android.webkit.JsPromptResult;
import android.webkit.JsResult;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.webkit.WebViewClient;
/**
*
* 项目名称:com.ch18
* 类名称:MainActivity
* 类描述:webview
* 创建人:方勇
* 创建时间:2012-11-20 下午10:10:05
* Copyright (c) 方勇-版权所有
*/
public class MainActivity extends Activity {
/* 重写回退按钮 */
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == event.KEYCODE_BACK && wv.canGoBack()) {
wv.goBack();
return true;
}
return super.onKeyDown(keyCode, event);
}
/* Android浏览器 */
private WebView wv;
/* 进度条,用户体验 */
private ProgressDialog pdialog;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findViews();
init();
setListeners();
showResults();
}
/* 实例化UI */
private void findViews() {
wv = (WebView) findViewById(R.id.wv);
}
/* 初始化数据 */
private void init() {
wv.getSettings().setDefaultTextEncodingName("UTF-8");
// js可用
wv.getSettings().setJavaScriptEnabled(true);
// 滚动样式为无滚动条
wv.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
}
/* 设置监听 */
private void setListeners() {
// 设置url跳转到wenview
wv.setWebViewClient(new MyWebViewClient());
// js处理
wv.setWebChromeClient(new MyWebChromClient());
// html与android交互,android注入到js里面
wv.addJavascriptInterface(new JSInterface(), "a07");
}
/* 显示结果 */
private void showResults() {
pdialog = new ProgressDialog(this);
// pdialog.show();
wv.loadUrl("file:///android_asset/webview.html");
}
/* 显示弹出对话框结果 */
private void showAlertResult(String message) {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("alert");
builder.setMessage(message);
builder.show();
}
/* 处理url跳转 */
final class MyWebViewClient extends WebViewClient {
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
pdialog = ProgressDialog.show(MainActivity.this, null, "load.........");
super.onPageStarted(view, url, favicon);
}
@Override
public void onPageFinished(WebView view, String url) {
pdialog.dismiss();
super.onPageFinished(view, url);
}
@Override
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
super.onReceivedError(view, errorCode, description, failingUrl);
}
}
/* 处理javascript */
final class MyWebChromClient extends WebChromeClient {
@Override
public boolean onJsAlert(WebView view, String url, String message, JsResult result) {
super.onJsAlert(view, url, message, result);
if (!message.equals("")) {
showAlertResult(message);
//响应html,已经关闭
result.cancel();
return true;
}
return super.onJsAlert(view, url, message, result);
}
@Override
public boolean onJsConfirm(WebView view, String url, String message, JsResult result) {
return super.onJsConfirm(view, url, message, result);
}
@Override
public boolean onJsPrompt(WebView view, String url, String message, String defaultValue, JsPromptResult result) {
return super.onJsPrompt(view, url, message, defaultValue, result);
}
}
/* web与android交互 */
final class JSInterface {
private Handler handler = new Handler();
private int flag = 0;
public void onClick() {
handler.post(new Runnable() {
@Override
public void run() {
if (flag == 0) {
wv.loadUrl("javascript:changeImage01()");
flag = 1;
} else {
wv.loadUrl("javascript:changeImage02()");
flag = 0;
}
}
});
}
// 供JS调用
public void logout(String str) {
Log.i("a07", str);
}
}
}
--------------------------------------------效果----------------------------------------------------