Android WebView canGoBack всегда прав.

У меня есть WebView, который загружает страницы социальных сетей. Я переопределил кнопку «Назад», чтобы вызвать метод goBack в WebView до canGoBack() пор, пока canGoBack() вернет false . Затем он вызывает super.onBackPressed() . Проблема в том, что Twitter и YouTube используют Javascript таким образом, что canGoBack() возвращает true если вы не нажмете кнопку назад 4 раза очень быстро.

Я попытался проверить исходный url с текущим url, но страница имеет другой url, чем тот, который проходит.

Кто-нибудь знает способ заставить кнопку «Назад» goBack метод goBack goBack пока вы не начнете, а затем вызовите super.onBackPressed ?

Ну, это не идеально, но вы можете отслеживать историю навигации вручную, используя массив (или просто целое число, которое нужно увеличить и уменьшить), и нажимайте на него текущий url каждый раз, когда он изменяется, и вытаскивайте последний URL из него, когда вы нажимаете Назад, и если массив пуст (или целое число равно 0), вы вызываете super.onBackPressed() .
Чтобы выполнить код при изменении URL- boolean shouldOverrideUrlLoading (WebView view, WebResourceRequest request) , вы можете переопределить метод boolean shouldOverrideUrlLoading (WebView view, WebResourceRequest request) WebViewClient ( ссылка на документацию ).
Таким образом, javascript веб-страниц не может мешать тому, как вы обрабатываете кнопку «Назад».

Intereting Posts
Как добавить теги в XML на Android? Android – построение графика gps на пользовательской карте Как отладить конкретный вариант сборки проекта Android Gradle в IntelliJ IDEA? Волейбол не отвечает Android Как изменить название приложения Как протестировать макет взаимодействия с Activity onResume () с использованием кинжальных модулей и роботоэлектриков? RecyclerView & SnapHelper -> получить привязанный / целевой вид Как я могу разрешить ошибку InputEventReceiver? Не удалось связаться с поставщиком услуг: в Twitter нет сертификатов peer Попытка вызвать виртуальный метод 'android.content.res.AssetManager android.content.res.Resources.getAssets ()' в ссылке на нулевой объект Предпочтительный способ обновления sqlite db в android Junit тестирование с помощью gradle для андроидного проекта Android: как использовать более низкую minSdkVersion, чем объявлено в библиотеке (uiautomator-v18) Searchview не расширяется полная ширина Что такое phonestateintentreceiver.notifyPhoneCallState?