・戻るボタン押されたときに、前のページに戻す
ActivityのonKeyDownのオーバライドする @Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (event.getAction() == KeyEvent.ACTION_DOWN
&& keyCode == KeyEvent.KEYCODE_BACK
&& webview.canGoBack() == true) {
webview.goBack();
return true;
}
return super.onKeyDown(keyCode, event);
}
・ロードするURLに応じて処理をさせる
WebViewClientを継承してonLoadResourceに処理実装する。それをWebViewにセット。 webview.setWebViewClient(new MyWebViewClient());
・・・
public class MyWebViewClient extends WebViewClient {
@Override
public void onLoadResource(WebView view, String url) {
if(!url.startsWith("http://example.com")) {
Toast.makeText(getApplicationContext(), "外部サイトす。" , Toast.LENGTH_SHORT).show();
}
}
}
example.com以外のサイトでは外部サイトとToast表示させる。例としては微妙だけど。。WebViewClientで他にもいろいろできそう。onPageStartedとかonPageFinishedなどある。
上の例はonLoadResourceじゃなくてonPageStartedのがいいのかな。呼ばれる順番は下記のとおり。
05:37:39.808: DEBUG/MyWebViewClient(977): onPageStarted
05:37:39.888: DEBUG/MyWebViewClient(977): onLoadResource
05:37:40.938: DEBUG/MyWebViewClient(977): onPageFinished
以上、とりあえずメモ。
※追記
リダイレクト時(a.php→a.html)の挙動。
06:24:27.138: DEBUG/MyWebViewClient(1108): onPageStarted a.php
06:24:27.184: DEBUG/MyWebViewClient(1108): onLoadResource a.php
06:24:27.257: DEBUG/MyWebViewClient(1108): onPageStarted a.html
06:24:27.397: DEBUG/MyWebViewClient(1108): onPageFinished a.html
リダイレクト元URLのonPageFinishedは呼ばれず、リダイレクト先URLではonLoadResourceは呼ばれない。