Я работал над гибридным приложением для Android.В настоящее время WebView в нашем приложении указывает на приложение AngularJS 1.5.7.Когда пользователь нажимает кнопку внутри приложения, которая изменяет маршрут, я ожидал, что функция shouldOverrideUrlLoading будет вызываться внутри моего WebViewClient.Однако, это не так.Похоже, что mustOverrideUrlLoading не попадает на изменения маршрута Angualar.
В этом случае я пробежал следующие кроличьи норы:
onPageFinished - переопределение этой функции вWebViewClient работает, однако он не вызывается до тех пор, пока не будет достигнут новый маршрут.Что добавляет время загрузки приложения и создает нестабильный опыт.`@Override public void onPageFinished (представление WebView, URL-адрес строки) {
if (url.endsWith("/#/")) {
signOut();
} else if (url.endsWith("/login")) {
// TODO: show some sort of failure message?
Log.i("Login Route", "The webview just attempted to go to the login route.");
signOut();
} else if (url.endsWith("/security")) {
Intent intent = new Intent(getApplicationContext(), SecurityActivity.class);
startActivity(intent);
}
}`
shouldInterceptRequest - переопределение этой функции позволяет отслеживать запросы.Однако к тому времени, когда запросы поступают из приложения AngularJS, веб-представление снова показывает новый маршрут, предоставляя прерывистый пользовательский опыт.
onLoadResource - то же самое
JavaScriptInterface - В настоящее время я настроил интерфейс JavaScript для отслеживания изменений window.location.Похоже, что это ловит изменения маршрута быстрее, чем любой из вышеперечисленных вариантов, однако, все еще есть проблеск быстрого мерцания веб-страницы, на которую я не хочу идти.Вы можете найти, как сделать соединение Javascript в этом сообщении
Любые предложения будут с благодарностью!Спасибо.