Я разрабатываю приложение Android, которое содержит WebView. Я пытаюсь переопределить метод действия onKeyDown.
Я хочу вызывать метод javascript каждый раз при нажатии backButton телефона, и если метод не определен, я хочу выполнить другую встроенную инструкцию (я хочу закрыть действие) .
В этом смысл: изначально я делаю это
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (event.getAction() == KeyEvent.ACTION_DOWN) {
switch (keyCode) {
case KeyEvent.KEYCODE_BACK:
if (true) {
webView.evaluateJavascript( "try{pageGoBack();}" +
"catch{window.JSInterface.noBackFunction();}",null);
webView.clearCache(true);
}
return true;
}
}
return super.onKeyDown(keyCode, event);
}
И для на каждой jsp стороне сервера я хочу реализовать что-то вроде этого:
<script>
function pageGoBack() {
---do something to go back---
}
}
</script>
...
Этот метод должен иметь одно и то же имя "pageGoBack" для каждого jsp, но может иметь различный внутренний код
Это факт: перед тем, как загрузить один из этих jsp с помощью pageGoBack
метод все работает (ошибка 'undefined' перехватывается и выполняется метод JSInterface).
Когда я загружаю одну из этих страниц, метод «остается в кэше (???)» и всегда выполняется (также на тех страницах без него).
(Посмотрите, что я тоже добавлено webView.clearCache(true);
но проблема остается)
Спасибо -