@jimbo
        
        2015-08-22T12:05:32.000000Z
        字数 2603
        阅读 1652
    android webview 混合应用
public boolean shouldOverrideUrlLoading(WebView view, String url) {view.loadUrl(url);return true;}
在点击请求的时候就会调用才方法,当返回false的时候就会把打开url的任务交给系统,返回true的时候就会用当前的webview来打开该url。
public void onReceivedSslError(WebView view, SslErrorHandler handler, android.net.http.SslError error) {handler.proceed();}
重写此方法webview可以处理https的请求。
public boolean shouldOverrideKeyEvent(WebView view, KeyEvent event) {return super.shouldOverrideKeyEvent(view, event);}}
重写此方法才能够处理在浏览器中的按键事件。
public void onLoadResource(WebView view, String url) {// TODO Auto-generated method stubif (DEBUG) {Log.d(TAG, " onLoadResource ");}super.onLoadResource(view, url);}
在加载页面资源时会调用,每一个资源(比如图片)的加载都会调用一次。
public void onPageStarted(WebView view, String url, Bitmap favicon) {// TODO Auto-generated method stubif (DEBUG) {Log.d(TAG, " onPageStarted ");}if (url.endsWith(".apk")) {download(url);//下载处理}super.onPageStarted(view, url, favicon);}
页面加载开始的时候就会调用此方法。
public void onPageFinished(WebView view, String url) {// TODO Auto-generated method stubif (DEBUG) {Log.d(TAG, " onPageFinished ");}super.onPageFinished(view, url);}
页面结束的时候就会调用此方法。
我们想要实现在页面内来跳转各个页面,那么怎么来实现呢? 
通过上面的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")@Overrideprotected 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);//加载指定的urlwebView.loadUrl("file:///android_asset/index.html");// 设置Web视图webView.setWebViewClient(new webViewClient());}
这样就ok了,可以实现连接的页面调转。
在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,这样就完成了。