日期:2014-05-16 浏览次数:20401 次
package com.iame.mybrowser; import android.app.Activity; import android.app.AlertDialog; import android.content.DialogInterface; import android.graphics.Bitmap; import android.os.Bundle; import android.util.Log; import android.view.KeyEvent; import android.view.LayoutInflater; import android.view.View; import android.view.Window; import android.view.View.OnClickListener; import android.webkit.JsPromptResult; import android.webkit.JsResult; import android.webkit.URLUtil; import android.webkit.WebChromeClient; import android.webkit.WebView; import android.webkit.WebViewClient; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; public class MyBrowser extends Activity { private static final String DEBUG_TAG ="MyBrowser"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //用title bar做进度条 getWindow().requestFeature(Window.FEATURE_PROGRESS); setContentView(R.layout.main); //获取WebView final WebView webView=(WebView)findViewById(R.id.browser); //获取URL,也就是http://www.baidu.com这方面的地址 final EditText text=(EditText)findViewById(R.id.url); //确定按钮 Button go=(Button)findViewById(R.id.go); //设置支持javaScript webView.getSettings().setJavaScriptEnabled(true); //WebViewClient负责帮助WebView处理各种通知、请求事件等。想相当于程序嵌套了一个浏览器.浏览器里面的按钮支持事件,就需要WebView。 webView.setWebViewClient(new WebViewClient(){ //页面加载完成时要做的事件 @Override public void onPageFinished(WebView view, String url) { super.onPageFinished(view, url); } //页面加载时要做的事件 @Override public void onPageStarted(WebView view, String url, Bitmap favicon) { text.setText(url); super.onPageStarted(view, url, favicon); } }); //WebChromeClient负责帮助WebView处理Javascript的对话框,网站图标,网站title,加载进度等。 webView.setWebChromeClient(new WebChromeClient(){ //1.弹出的对话框 @Override public boolean onJsAlert(WebView view, String url, String message,final JsResult result) { AlertDialog.Builder b2 = new AlertDialog.Builder(MyBrowser.this); b2.setTitle(R.string.tite1); b2.setMessage(message); b2.setPositiveButton(R.string.ok,new AlertDialog.OnClickListener() { public void onClick(DialogInterface dialog, int which) { //按确定后腰执行的代码,这句很重要 result.confirm(); //MyBrowser.this.finish(); } }); //设置对话框是否取消,默认是可以取消的。 //这种方式按还回键,齐作用 //b.setCancelable(true); //这种方式按还回键,不齐作用 b2.setCancelable(false); //创建对话框,才能显示 b2.create(); b2.show(); //如果还回的是flase将会多弹出窗口,不是我们想要的结果 return true; }; //2.对话框 @Override public boolean onJsConfirm(WebView view, String url, String message, final JsResult result) { AlertDialog.Builder b3 = new AlertDialog.Builder(MyBrowser.this); b3.setTitle(R.string.tite2); b3.setMessage(message); b3.setPositiveButton(R.string.ok, new AlertDialog.OnClickListener() { public void onClick(DialogInterface dialog, int which) { result.confirm(); } }); b3.setNegativeButton(R.string.no, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { //按取消做的事件 result.cancel(); } }); b3.setCancelable(false); b3.create(); b3.show(); return true; }; //3.输入对话框 @Override public boolean onJsPrompt(WebView view, String url, String message, String defaultValue, final JsPromptResult result) { //获得环境参数 final LayoutInflater factory = LayoutInflater.from(MyBrowser.this); //导入预先设置的输入设置 final View v = factory.inflate(R.layout.javascript_prompt_dialog, null); //获得输入框标题并设置输入框标题 ((TextView) v.findViewById(R.id.prompt_message_text)).setText(message); //获得输入框平设置默认值 ((EditText) v.findViewById(R.id.prompt_input_field)).setText(defaultValue)