[关闭]
@jimbo 2015-08-22T20:05:32.000000Z 字数 2603 阅读 1567

android-使用webview来开发混合应用

android webview 混合应用


1.关于WebViewClient的使用方法

1. shouldOverrideUrlLoading(Webview view, String url)

  1. public boolean shouldOverrideUrlLoading(WebView view, String url) {
  2. view.loadUrl(url);
  3. return true;
  4. }

在点击请求的时候就会调用才方法,当返回false的时候就会把打开url的任务交给系统,返回true的时候就会用当前的webview来打开该url。

2. onReceivedSslError(WebView view, SslErrorHandler handler, android.net.http.SslError error)

  1. public void onReceivedSslError(WebView view, SslErrorHandler handler, android.net.http.SslError error) {
  2. handler.proceed();
  3. }

重写此方法webview可以处理https的请求。

3. shouldOverrideKeyEvent(WebView view, KeyEvent event)

  1. public boolean shouldOverrideKeyEvent(WebView view, KeyEvent event) {
  2. return super.shouldOverrideKeyEvent(view, event);
  3. }
  4. }

重写此方法才能够处理在浏览器中的按键事件。

4. onLoadResource(WebView view, String url)

  1. public void onLoadResource(WebView view, String url) {
  2. // TODO Auto-generated method stub
  3. if (DEBUG) {
  4. Log.d(TAG, " onLoadResource ");
  5. }
  6. super.onLoadResource(view, url);
  7. }

在加载页面资源时会调用,每一个资源(比如图片)的加载都会调用一次。

5. onPageStarted(WebView view, String url, Bitmap favicon)

  1. public void onPageStarted(WebView view, String url, Bitmap favicon) {
  2. // TODO Auto-generated method stub
  3. if (DEBUG) {
  4. Log.d(TAG, " onPageStarted ");
  5. }
  6. if (url.endsWith(".apk")) {
  7. download(url);//下载处理
  8. }
  9. super.onPageStarted(view, url, favicon);
  10. }

页面加载开始的时候就会调用此方法。

6. onPageFinished(WebView view, String url)

  1. public void onPageFinished(WebView view, String url) {
  2. // TODO Auto-generated method stub
  3. if (DEBUG) {
  4. Log.d(TAG, " onPageFinished ");
  5. }
  6. super.onPageFinished(view, url);
  7. }

页面结束的时候就会调用此方法。

2.在webview里面使用webviewclient

我们想要实现在页面内来跳转各个页面,那么怎么来实现呢?
通过上面的webviewclient的方法我们不难发现这个方法shouleOverrideUrlLoading()方法来完成这个任务。
首先我们要重写这个方法

  1. class webViewClient extends WebViewClient {
  2. public static shouldOverrideUrlLoading(WebView webview, String url) {
  3. webview.loadUrl(url);
  4. //必须修改返回值为true才行
  5. return true;
  6. }
  7. }

然后在webview里面调用setWebViewClient()方法。

  1. public class MainActivity extends Activity {
  2. private WebView webView = null;
  3. @SuppressLint("SetJavaScriptEnabled")
  4. @Override
  5. protected void onCreate(Bundle savedInstanceState) {
  6. super.onCreate(savedInstanceState);
  7. setContentView(R.layout.activity_main);
  8. webView = (WebView) findViewById(R.id.myWebview);
  9. //设置该webview的权限
  10. webView.getSettings().setAllowFileAccess(true);
  11. //设置webview的javaScript权限
  12. webView.getSettings().setJavaScriptEnabled(true);
  13. //加载指定的url
  14. webView.loadUrl("file:///android_asset/index.html");
  15. // 设置Web视图
  16. webView.setWebViewClient(new webViewClient());
  17. }

这样就ok了,可以实现连接的页面调转。

3.按回退键可以实现页面返回

在webview里面实现跳转后怎么实现回退键返回上一个页面呢?
当然,我们肯定要来监听onKeyDown()方法

  1. @Override
  2. // 设置回退
  3. // 覆盖Activity类的onKeyDown(int keyCoder,KeyEvent event)方法
  4. public boolean onKeyDown(int keyCode, KeyEvent event) {
  5. if ((keyCode == KeyEvent.KEYCODE_BACK) && webView.canGoBack()) {
  6. webView.goBack(); // goBack()表示返回WebView的上一页面
  7. return true;
  8. }
  9. finish();// 结束退出程序
  10. return false;
  11. }

ok,这样就完成了。

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注