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

来源:互联网 发布:Windows切换目录 编辑:程序博客网 时间:2024/06/05 11:37

标签(空格分隔): android webview 混合应用


1.关于WebViewClient的使用方法

1. shouldOverrideUrlLoading(Webview view, String url)

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

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

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

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

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

3. shouldOverrideKeyEvent(WebView view, KeyEvent event)

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

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

4. onLoadResource(WebView view, String url)

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

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

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

public void onPageStarted(WebView view, String url, Bitmap favicon) {            // TODO Auto-generated method stub            if (DEBUG) {                Log.d(TAG, " onPageStarted ");            }           if (url.endsWith(".apk")) {                    download(url);//下载处理             }            super.onPageStarted(view, url, favicon);        }

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

6. onPageFinished(WebView view, String url)

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

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

2.在webview里面使用webviewclient

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

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

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

public class MainActivity extends Activity {    private WebView webView = null;    @SuppressLint("SetJavaScriptEnabled")    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        webView = (WebView) findViewById(R.id.myWebview);        //设置该webview的权限        webView.getSettings().setAllowFileAccess(true);        //设置webview的javaScript权限        webView.getSettings().setJavaScriptEnabled(true);        //加载指定的url        webView.loadUrl("file:///android_asset/index.html");        // 设置Web视图        webView.setWebViewClient(new webViewClient());    }

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

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

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

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

ok,这样就完成了。

1 0
原创粉丝点击