@jimbo
2015-08-22T20:05:32.000000Z
字数 2603
阅读 1567
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 stub
if (DEBUG) {
Log.d(TAG, " onLoadResource ");
}
super.onLoadResource(view, url);
}
在加载页面资源时会调用,每一个资源(比如图片)的加载都会调用一次。
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);
}
页面加载开始的时候就会调用此方法。
public void onPageFinished(WebView view, String url) {
// TODO Auto-generated method stub
if (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")
@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了,可以实现连接的页面调转。
在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,这样就完成了。