Кэшировать набор веб-страниц в веб-просмотре android - PullRequest
0 голосов
/ 26 мая 2020

Я разрабатываю веб-приложение, и я также буду использовать приложение WebView в Android. Я хочу кэшировать некоторый набор страниц, чтобы предоставить моим пользователям автономный доступ. Прямо сейчас кэшируются только те страницы, которые я посещаю один раз, но я хочу предварительно кэшировать набор страниц, чтобы пользователи могли работать в автономном режиме.

Код, который я сейчас использую:

private WebView webView = null;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    this.webView = (WebView)
            findViewById(R.id.webview);

    webView.setWebViewClient(new WebViewClient());
    WebSettings webSettings = webView.getSettings();

    String appCachePath;
    appCachePath = getApplicationContext().getCacheDir().getAbsolutePath();
    // Enable responsive layout
    webSettings.setUseWideViewPort(true);
    // Zoom out if the content width is greater than the width of the viewport
    webSettings.setLoadWithOverviewMode(true);
    webSettings.setJavaScriptEnabled(true);
    webSettings.setDomStorageEnabled(true);
    webSettings.setAppCachePath(appCachePath);
    webSettings.setAppCacheEnabled(true);
    webSettings.setCacheMode(WebSettings.LOAD_DEFAULT);

    ConnectivityManager cm = (ConnectivityManager) this.getSystemService(Activity.CONNECTIVITY_SERVICE);
    if(cm.getActiveNetworkInfo() == null || !cm.getActiveNetworkInfo().isConnected())
    {
        Log.i("B","INSIDE NO NETWORK");
        appCachePath = getApplicationContext().getCacheDir().getAbsolutePath();
        webSettings.setAppCachePath(appCachePath);

        webSettings.setCacheMode(WebSettings.LOAD_CACHE_ONLY);
        webView.loadUrl("https://www.example.com");
    }
    else
    {
        Log.i("A","INSIDE YES NETWORK");
        webView.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT);
        webView.loadUrl("https://www.example.com");
    }
 }

1 Ответ

0 голосов
/ 26 мая 2020
public class XXXWebViewClient extends WebViewClient {
    @Override
    public WebResourceResponse shouldInterceptRequest(WebView view, String url) {
        if ("https://www.example.com".equals(url)) {
            String mimeType;//the resource response's MIME type, for example text/html
            String encoding;//the resource response's encoding
            Inputstream is;//cache of pages
            ...
            return new WebResourceResponse(mimeType,codeing,is);
        }
        return null;
    }
}
...