Пример использования WebViewCompat

Случайно я обнаружил, что есть библиотека поддержки для WebView, которая является частью AndroidX: androidx.webkit: webkit: 1.0.0

Однако я не смог найти пример кода о том, как его использовать, и JavaDoc также не сильно помогает: https://developer.android.com/reference/androidx/webkit/package-summary

Это должно быть использовано разработчиками или это внутренняя библиотека?

Ответ 1

Эта библиотека является абстракцией androidx для WebKit (так как она опирается на APK с возможностью обновления).

При использовании этих импортов:

import android.webkit.WebResourceRequest;
import android.webkit.WebResourceResponse;
import android.webkit.WebSettings;

import androidx.annotation.NonNull;

import androidx.webkit.WebViewCompat;
import androidx.webkit.SafeBrowsingResponseCompat;
import androidx.webkit.WebResourceErrorCompat;
import androidx.webkit.WebViewClientCompat;

Это работает примерно так:

private WebViewCompat mWebView;

...
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {

    this.mWebView.setWebViewClient(new WebViewClientCompat(){

        @Override
        public void onPageCommitVisible(@NonNull WebView view, @NonNull String url) {
            super.onPageCommitVisible(view, url);
        }

        @Override
        public void onReceivedError(@NonNull WebView view, @NonNull WebResourceRequest request, @NonNull WebResourceErrorCompat error) {
            super.onReceivedError(view, request, error);
        }

        @Override
        public void onReceivedHttpError(@NonNull WebView view, @NonNull WebResourceRequest request, @NonNull WebResourceResponse errorResponse) {
            super.onReceivedHttpError(view, request, errorResponse);
        }

        @Override
        public void onSafeBrowsingHit(@NonNull WebView view, @NonNull WebResourceRequest request, int threatType, @NonNull SafeBrowsingResponseCompat callback) {
            super.onSafeBrowsingHit(view, request, threatType, callback);
        }

        @Override
        public boolean shouldOverrideUrlLoading(@NonNull WebView view, @NonNull WebResourceRequest request) {
            return super.shouldOverrideUrlLoading(view, request);
        }
    });
}