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 веб-страниц не может мешать тому, как вы обрабатываете кнопку «Назад».