ch018 Android webview
--------------------------------------------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-->
更多相关文章
- Catalog Service - 解析微软微服务架构实例代码
- 介绍一个微软开源项目网站--CodePlex
- c语言中文本输出的函数名称是什么?
- 从xml中获取城市,省份名称
- XML入门教程-XML名称空间详细介绍
- 关于XML中的名称空间的示例代码分享
- 详解在XML文档中替换元素名称的方法(图)
- 具体分析微软的xml解析器
- 应用名称访问XML文档的代码案例详解