解决中文乱码问题:

1.使用getBytes(“编码方式”);;来对汉字进行重编码,得到他的字节数组。

2. 再使用new String(Bytes[],”解码方式”);对字节数组进行相应的解码。

webKit应用

webKit分三个模块:javascriptCore,webCorewebKit.

WebView浏览网页:

几个重要的地方:

WebViewClient是专门辅助WebView处理各种通知,请求等事件的类。

webChromeClient是辅助WebView处理javascript的对话框,网站图标,网站title,加载进度。

packagecom.king.android.net;

importandroid.app.Activity;
importandroid.app.AlertDialog;
importandroid.app.AlertDialog.Builder;
importandroid.content.Context;
importandroid.content.DialogInterface;
importandroid.graphics.Bitmap;
importandroid.os.Bundle;
importandroid.view.KeyEvent;
importandroid.view.LayoutInflater;
importandroid.view.View;
importandroid.view.Window;
importandroid.view.View.OnClickListener;
importandroid.webkit.JsPromptResult;
importandroid.webkit.JsResult;
importandroid.webkit.URLUtil;
importandroid.webkit.WebChromeClient;
importandroid.webkit.WebSettings;
importandroid.webkit.WebView;
importandroid.webkit.WebViewClient;
importandroid.widget.Button;
importandroid.widget.EditText;
importandroid.widget.TextView;

importcom.king.android.R;

/**

*描述:浏览网页
*作者:Andy.Liu
*时间:2012-7-26上午07:28:17
*
*/
public classWebViewActivity extendsActivity{

ContextmContext;
ButtonbtnConn;
EditTextetUrl;
WebViewwvShow;
@Override
protected voidonCreate(BundlesavedInstanceState){

super.onCreate(savedInstanceState);
mContext=WebViewActivity. this;
setContentView(R.layout.webview_layout);

btnConn=(Button)findViewById(R.id.btn_conn);
etUrl=(EditText)findViewById(R.id.ed_show);
wvShow=(WebView)findViewById(R.id.wv_view);

btnConn.setOnClickListener( newOnClickListener(){

@Override
public voidonClick(Viewv){

try{
Stringurl=etUrl.getText().toString();
if(URLUtil.isNetworkUrl(url)){
wvShow.loadUrl(url);
} else{
etUrl.setText("输入网址错误,请重新输入");
}} catch(Exceptione){
}

}});


下面是主要知识点:

//设置javascript脚本

WebSettingswebSettings=wvShow.getSettings();
webSettings.setJavaScriptEnabled(true);
//设置可以访问文件
webSettings.setAllowFileAccess(true);
//设置支持缩放
webSettings.setBuiltInZoomControls(true);

/**
*设置WebViewClient
*WebViewClient是专门辅助WebView处理各种通知,请求等事件的类。
**/
wvShow.setWebViewClient(webViewClient);
/**
*webChromeClient是辅助WebView处理javascript的对话框,网站图标,网站title,加载进度。
**/
wvShow.setWebChromeClient(webChromeClient);


}

@Override
publicbooleanonKeyDown(intkeyCode,KeyEventevent){
if(KeyEvent.KEYCODE_BACK==keyCode){
//返回前一个页面
wvShow.goBack();
returntrue;
}

returnsuper.onKeyDown(keyCode,event);
}

privateWebViewClientwebViewClient=newWebViewClient(){
publicbooleanshouldOverrideUrlLoading(WebViewview,Stringurl){
view.loadUrl(url);
returntrue;
}
publicvoidonPageFinished(WebViewview,Stringurl){
super.onPageFinished(view,url);
}

publicvoidonPageStarted(WebViewview,Stringurl,Bitmapfavicon){
super.onPageStarted(view,url,favicon);
}
};

privateWebChromeClientwebChromeClient=newWebChromeClient(){
//处理js中的alert
publicbooleanonJsAlert(WebViewview,Stringurl,Stringmessage,finalJsResultresult){
Builderbuilder=newBuilder(mContext);
builder.setTitle("提示对话框");
builder.setMessage(message);
builder.setPositiveButton(android.R.string.ok,newAlertDialog.OnClickListener(){

@Override
publicvoidonClick(DialogInterfacedialog,intwhich){
//点击确定按键之后,继续执行网页中的操作
result.confirm();
}});
builder.setCancelable(false);
builder.create();
builder.show();
returntrue;
};
publicbooleanonJsConfirm(WebViewview,Stringurl,Stringmessage,finalandroid.webkit.JsResultresult){
Builderbuilder=newBuilder(mContext);
builder.setTitle("带选择的对话框");
builder.setMessage(message);
builder.setPositiveButton(android.R.string.ok,newAlertDialog.OnClickListener(){

@Override
publicvoidonClick(DialogInterfacedialog,intwhich){
//点击确定按键之后,继续执行网页中的操作
result.confirm();
}});
builder.setNegativeButton(android.R.string.cancel,newAlertDialog.OnClickListener(){

@Override
publicvoidonClick(DialogInterfacedialog,intwhich){
//点击取消
result.cancel();
}});
builder.setCancelable(false);
builder.create();
builder.show();
returntrue;
};
@Override
//处理javascript中的prompt
//message为网页中对话框的提示内容
//defaultValue在没有输入时,默认显示的内容
publicbooleanonJsPrompt(WebViewview,Stringurl,Stringmessage,StringdefaultValue,finalJsPromptResultresult){
//自定义一个带输入的对话框由TextView和EditText构成
finalLayoutInflaterfactory=LayoutInflater.from(mContext);
finalViewdialogview=factory.inflate(R.layout.prom_dialog,null);
((TextView)dialogview.findViewById(R.id.TextView_PROM)).setText(message);
((EditText)dialogview.findViewById(R.id.EditText_PROM)).setText(defaultValue);

Builderbuilder=newBuilder(mContext);
builder.setTitle("带输入的对话框");
builder.setView(dialogview);
builder.setPositiveButton(android.R.string.ok,
newAlertDialog.OnClickListener(){
publicvoidonClick(DialogInterfacedialog,intwhich){
//点击确定之后,取得输入的值,传给网页处理
Stringvalue=((EditText)dialogview.findViewById(R.id.EditText_PROM)).getText().toString();
result.confirm(value);
}
});
builder.setNegativeButton(android.R.string.cancel,
newDialogInterface.OnClickListener(){
publicvoidonClick(DialogInterfacedialog,intwhich){
result.cancel();
}
});
builder.setOnCancelListener(newDialogInterface.OnCancelListener(){
publicvoidonCancel(DialogInterfacedialog){
result.cancel();
}
});
builder.show();
returntrue;
};
@Override
//设置网页加载的进度条
publicvoidonProgressChanged(WebViewview,intnewProgress)
{
WebViewActivity.this.getWindow().setFeatureInt(Window.FEATURE_PROGRESS,newProgress*100);
super.onProgressChanged(view,newProgress);
}

@Override
//设置应用程序的标题title
publicvoidonReceivedTitle(WebViewview,Stringtitle)
{
WebViewActivity.this.setTitle(title);
super.onReceivedTitle(view,title);
}
};

}

需要注意webView的几个地方

更多相关文章

  1. Service显示启动和隐式启动
  2. 说说 Android(安卓)中的通知(Notification)
  3. android图形图像函数汇集
  4. Android(安卓)自定义dialog(封装好的)
  5. 【读书笔记-《Android游戏编程之从零开始》】4.Android(安卓)游
  6. Android(安卓)的第三方报表组件,AChartEngine 案列demo
  7. 颜色选择器【ColorPickerPreference】自定义Preference 对话框
  8. Android游戏引擎《Rokon》:主要类和方法的介绍文档
  9. cocos2d-x在android真机上设置帧率无效的问题

随机推荐

  1. Android(安卓)各种基础控件布局
  2. Android(安卓)Studio(五):修改Android(安
  3. android中java与js通信(可以用html来做页
  4. android 复制、剪切、粘贴
  5. Android全屏显示的两种方式
  6. android前后摄像头切换
  7. Android自定义进度条
  8. TabHost布局及新浪式TabHost布局
  9. Android——天气预报(酷欧天气)(第二篇)
  10. 开始开发Android的使用Eclipse