1、加入权限:AndroidManifest.xml中必须使用许可"android.permission.INTERNET",否则会出Web page not available错误。 2、在要Activity中生成一个WebView组件:WebView webView = new WebView(this); 3、设置WebView基本信息: 假设訪问的页面中有Javascript,则webview必须设置支持Javascript。 webview.getSettings().setJavaScriptEnabled(true); 触摸焦点起作用 requestFocus(); 取消滚动栏 this.setScrollBarStyle(SCROLLBARS_OUTSIDE_OVERLAY); 4、设置WevView要显示的网页: 互联网用:webView.loadUrl("http://www.google.com"); 本地文件用:webView.loadUrl("file:///android_asset/XX.html"); 本地文件存放在:assets文件里 5、假设希望点击链接由自己处理。而不是新开Android的系统browser中响应该链接。 给WebView加入一个事件监听对象(WebViewClient) 并重写当中的一些方法 shouldOverrideUrlLoading:对网页中超链接button的响应。 当按下某个连接时WebViewClient会调用这种方法,并传递參数:按下的url onLoadResource onPageStart onPageFinish onReceiveError onReceivedHttpAuthRequest 6、假设用webview点链接看了非常多页以后。假设不做不论什么处理,点击系统“Back”键,整个浏览器会调用finish()而结束自身。假设希望浏览的网页回退而不是退出浏览器,须要在当前Activity中处理并消费掉该Back事件。 覆盖Activity类的onKeyDown(int keyCoder,KeyEvent event)方法。 [java] view plaincopyprint? public boolean onKeyDown(int keyCoder,KeyEvent event){ if(webView.canGoBack() && keyCoder == KeyEvent.KEYCODE_BACK){ webview.goBack(); //goBack()表示返回webView的上一页面 return true; } return false; }
8、webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
9、
* 通过WebSettings设置WebView的一些属性、状态。通过webView.getSettings获得 比如:setAllowFileAccess(能否訪问文件数据) setBuiltInZoomControls(设置是否支持缩放)、 setCacheMode(设置缓冲的模式) setJavaScriptEnabled(设置是否支持JavaScript)........ * 通过WebViewClient来自己定义网页浏览程序。专门辅助WebView处理各种通知、请求等事件的类。
通过webView.setWebChromeClient获得
方法: doUpdateVisitedHistory (更新历史记录) onFormResubmission(应用程序又一次请求网页数据) onLoadResource(载入指定地址提供的资源) onPageFinished(网页载入完成) onPageStarted(网页開始载入) onReceivedError(报告错误信息) onScaleChanged(WebView发生改变) shouldOverrideUrlLoading(控制新的连接在当前WebView中打开) * WebChromeClient专门用来辅助WebView处理JavaScript的对话框、图标、站点标题、载入进度等。 方法:onCloseWindow(关闭WebView) onCreateWindow(创建WebView) onJsAlert(处理Js中的Alert对话框)、onJsConfirm(处理Js中的Confirm对话框)、onJsPrompt(处理JS中的Prompt对话框) onProgressChanged(载入进度条改变) onReceivedIcon(网页图标更改) onReceivedTitle(网页标题更改) onRequestFocus(WebView显示焦距) package com.dan; import android.app.Activity; import android.app.AlertDialog; import android.content.DialogInterface; import android.content.DialogInterface.OnClickListener; import android.graphics.Bitmap; import android.os.Bundle; import android.view.View; import android.view.Window; import android.webkit.JsPromptResult; import android.webkit.JsResult; import android.webkit.URLUtil; import android.webkit.WebChromeClient; import android.webkit.WebSettings; import android.webkit.WebView; import android.webkit.WebViewClient; import android.widget.Button; import android.widget.EditText; public class WebActivity extends Activity { private WebView webView; private EditText urlEdt; private Button btn; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.web); urlEdt = (EditText)findViewById(R.id.edt_1); btn = (Button)findViewById(R.id.btn_1); webView = (WebView)findViewById(R.id.web); WebSettings settings = webView.getSettings(); //webView.loadUrl("http://10.0.2.2/affiliate/code/login.php"); //设置支持Js脚本 settings.setJavaScriptEnabled(true); //设置能够訪问文件 settings.setAllowFileAccess(true); //支持缩放 settings.setBuiltInZoomControls(true); //设置WebViewClient webView.setWebViewClient(new WebViewClient(){ @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return true; } @Override public void onPageFinished(WebView view, String url) { super.onPageFinished(view, url); } @Override public void onPageStarted(WebView view, String url, Bitmap favicon) { super.onPageStarted(view, url, favicon); } }); //设置WebChromeClient webView.setWebChromeClient(new WebChromeClient(){ @Override public boolean onJsAlert(WebView view, String url, String message, JsResult result) { AlertDialog.Builder alert = new AlertDialog.Builder(WebActivity.this); alert.setTitle("提示对话框"); alert.setMessage(message).setPositiveButton("确定", new OnClickListener() { public void onClick(DialogInterface dialog, int which) { } }); alert.create().show(); return true; } @Override public boolean onJsConfirm(WebView view, String url, String message, JsResult result) { return super.onJsConfirm(view, url, message, result); } @Override public boolean onJsPrompt(WebView view, String url, String message, String defaultValue, JsPromptResult result) { return super.onJsPrompt(view, url, message, defaultValue, result); } @Override public void onProgressChanged(WebView view, int newProgress) { WebActivity.this.getWindow().setFeatureInt(Window.FEATURE_PROGRESS, newProgress*100); super.onProgressChanged(view, newProgress); } @Override public void onReceivedTitle(WebView view, String title) { WebActivity.this.setTitle("中国世贸通加盟管理登录页"); super.onReceivedTitle(view, title); } }); btn.setOnClickListener(new Button.OnClickListener(){ public void onClick(View v) { String url = urlEdt.getText().toString(); if( URLUtil.isNetworkUrl(url) ){ webView.loadUrl(url); }else{ urlEdt.setHint("输入的网址错误,请又一次输入"); } } }); } } * 后退 和 前进 canGoBack 与canGoForward //后退 if( (keyCode == KeyEvent.KEYCODE_BACK) && webView.canGoBack() ){ webView.goBack(); return true; } 将Html代码通过String的形式被载入到WebView中,并且在Html中能够引用存储在设备中的图片资源等。这个方式能够很方便的实现RichTextField的效果,尤其是对某些程序提供一些本地的简单文档时,很方便。 下边是实现这个功能的源码: public void loadHTML() { final String mimeType = "text/html"; final String encoding = "utf-8"; final String html = "<h1>Header</h1><p>Custom HTML</p> <p><img src=\"file:///android_asset/image1.jpg\" /> </p>"; WebView wv = (WebView) findViewById(R.id.wv1); wv.loadDataWithBaseURL("fake://not/needed", html, mimeType, encoding, ""); } //wView.loadUrl("file:///android_asset/index.html"); -----打开本包内asset文件夹下的index.html文件 //wView.loadUrl("content://com.android.htmlfileprovider/sdcard/index.html"); -----打开本地sd卡内的index.html文件 //wView.loadUrl("http://wap.baidu.com"); -----打开指定URL的html文件 ...... webView.setInitialScale(30); //这个就是重点。你能够在这里依据需求来设置缩放比例