--------------------------------------------AndroidManifest.xml----------------------------------

<manifestxmlns: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-permissionandroid: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>

<actionandroid:name="android.intent.action.MAIN"/>

<categoryandroid:name="android.intent.category.LAUNCHER"/>

</intent-filter>

</activity>

</application>

</manifest>

--------------------------------------------activity_main.xml----------------------------------

<RelativeLayoutxmlns: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--------------------------------------

packagecom.ch18;

importandroid.app.Activity;

importandroid.app.AlertDialog;

importandroid.app.ProgressDialog;

importandroid.graphics.Bitmap;

importandroid.os.Bundle;

importandroid.os.Handler;

importandroid.util.Log;

importandroid.view.KeyEvent;

importandroid.webkit.JsPromptResult;

importandroid.webkit.JsResult;

importandroid.webkit.WebChromeClient;

importandroid.webkit.WebView;

importandroid.webkit.WebViewClient;

/**

*

*项目名称:com.ch18

*类名称:MainActivity

*类描述:webview

*创建人:方勇

*创建时间:2012-11-20下午10:10:05

*Copyright(c)方勇-版权所有

*/

publicclassMainActivityextendsActivity{

/*重写回退按钮*/

@Override

publicbooleanonKeyDown(intkeyCode,KeyEventevent){

if(keyCode==event.KEYCODE_BACK&&wv.canGoBack()){

wv.goBack();

returntrue;

}

returnsuper.onKeyDown(keyCode,event);

}

/*Android浏览器*/

privateWebViewwv;

/*进度条,用户体验*/

privateProgressDialogpdialog;

@Override

publicvoidonCreate(BundlesavedInstanceState){

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

findViews();

init();

setListeners();

showResults();

}

/*实例化UI*/

privatevoidfindViews(){

wv=(WebView)findViewById(R.id.wv);

}

/*初始化数据*/

privatevoidinit(){

wv.getSettings().setDefaultTextEncodingName("UTF-8");

//js可用

wv.getSettings().setJavaScriptEnabled(true);

//滚动样式为无滚动条

wv.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);

}

/*设置监听*/

privatevoidsetListeners(){

//设置url跳转到wenview

wv.setWebViewClient(newMyWebViewClient());

//js处理

wv.setWebChromeClient(newMyWebChromClient());

//html与android交互,android注入到js里面

wv.addJavascriptInterface(newJSInterface(),"a07");

}

/*显示结果*/

privatevoidshowResults(){

pdialog=newProgressDialog(this);

//pdialog.show();

wv.loadUrl("file:///android_asset/webview.html");

}

/*显示弹出对话框结果*/

privatevoidshowAlertResult(Stringmessage){

AlertDialog.Builderbuilder=newAlertDialog.Builder(this);

builder.setTitle("alert");

builder.setMessage(message);

builder.show();

}

/*处理url跳转*/

finalclassMyWebViewClientextendsWebViewClient{

@Override

publicvoidonPageStarted(WebViewview,Stringurl,Bitmapfavicon){

pdialog=ProgressDialog.show(MainActivity.this,null,"load.........");

super.onPageStarted(view,url,favicon);

}

@Override

publicvoidonPageFinished(WebViewview,Stringurl){

pdialog.dismiss();

super.onPageFinished(view,url);

}

@Override

publicvoidonReceivedError(WebViewview,interrorCode,Stringdescription,StringfailingUrl){

super.onReceivedError(view,errorCode,description,failingUrl);

}

}

/*处理javascript*/

finalclassMyWebChromClientextendsWebChromeClient{

@Override

publicbooleanonJsAlert(WebViewview,Stringurl,Stringmessage,JsResultresult){

super.onJsAlert(view,url,message,result);

if(!message.equals("")){

showAlertResult(message);

//响应html,已经关闭

result.cancel();

returntrue;

}

returnsuper.onJsAlert(view,url,message,result);

}

@Override

publicbooleanonJsConfirm(WebViewview,Stringurl,Stringmessage,JsResultresult){

returnsuper.onJsConfirm(view,url,message,result);

}

@Override

publicbooleanonJsPrompt(WebViewview,Stringurl,Stringmessage,StringdefaultValue,JsPromptResultresult){

returnsuper.onJsPrompt(view,url,message,defaultValue,result);

}

}

/*web与android交互*/

finalclassJSInterface{

privateHandlerhandler=newHandler();

privateintflag=0;

publicvoidonClick(){

handler.post(newRunnable(){

@Override

publicvoidrun(){

if(flag==0){

wv.loadUrl("javascript:changeImage01()");

flag=1;

}else{

wv.loadUrl("javascript:changeImage02()");

flag=0;

}

}

});

}

//供JS调用

publicvoidlogout(Stringstr){

Log.i("a07",str);

}

}

}

--------------------------------------------效果----------------------------------------------------

<!--EndFragment-->

更多相关文章

  1. ch019 Android(安卓)surfaceView
  2. ch022 Android(安卓)Handler
  3. Android(安卓)可编辑下拉选择框
  4. android 程序分享。。
  5. 安装Android(安卓)Studio——Installing Android(安卓)Studio
  6. Android(安卓)基本概念
  7. android Theme启动APP闪屏处理
  8. Layout属性介绍
  9. android —— 自定义控件 最简单下拉刷新,Google最新(可刷新任何控

随机推荐

  1. 迄今最好的Http请求框架
  2. button
  3. Android中Activity,View,Window之间的关系
  4. Android(安卓)Training精要(三)不同分辨率
  5. Android更新ui 的几种方式?Handler 机制(二
  6. android应用开机自动运行程序
  7. android平台架构模型
  8. 玩转Android---组件篇---数据存储之File
  9. Context与Application Context
  10. android service 之一 (start service)