--------------------------------------------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);

}

}

}

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

ch018 Android webview_第1张图片

<!--EndFragment-->

更多相关文章

  1. Catalog Service - 解析微软微服务架构实例代码
  2. 介绍一个微软开源项目网站--CodePlex
  3. c语言中文本输出的函数名称是什么?
  4. 从xml中获取城市,省份名称
  5. XML入门教程-XML名称空间详细介绍
  6. 关于XML中的名称空间的示例代码分享
  7. 详解在XML文档中替换元素名称的方法(图)
  8. 具体分析微软的xml解析器
  9. 应用名称访问XML文档的代码案例详解

随机推荐

  1. Android 获取url中的参数
  2. android > ImageView 加载本地/服务器图
  3. 改变tab中indicator文本的颜色
  4. android 资源文件的种类
  5. android 初级入门
  6. Android上实现MVP模式的途径
  7. Android(安卓)使用基于位置的服务(一)
  8. Android获取ROOT权限
  9. Android搜索建议(搜索联想)
  10. Android 7.0 移除设置中的某些项(辅助功能