带有房间数据库的网页。

时间:2019-12-04 10:52:34

标签: android webview android-room

如何在房间数据库中保存用webView阅读的网页内容。

我想保存缓存不是数据库的选项,我找不到任何其他选项,也没有可以将网页内容保存在数据库中以供脱机查看的任何示例..>!

那么,有什么帮助,例子或建议吗?

先谢谢..!

也许有可能完全可以向我提供信息,因为我有一个任务,并且我不知道我是否正在考虑这种情况...!

我看到了这个选项,但是就像我说的那样保存了缓存,没有一个示例可以将其保存在Room数据库中。

WebView webView = new WebView( context );
webView.getSettings().setAppCacheMaxSize( 5 * 1024 * 1024 ); // 5MB
webView.getSettings().setAppCachePath( getApplicationContext().getCacheDir().getAbsolutePath() );
webView.getSettings().setAllowFileAccess( true );
webView.getSettings().setAppCacheEnabled( true );
webView.getSettings().setJavaScriptEnabled( true );
webView.getSettings().setCacheMode( WebSettings.LOAD_DEFAULT ); // load online by default

if ( !isNetworkAvailable() ) { // loading offline
webView.getSettings().setCacheMode( WebSettings.LOAD_CACHE_ELSE_NETWORK );
}

webView.loadUrl( "http://www.google.com" );

1 个答案:

答案 0 :(得分:1)

您需要做的是从URL中以字符串形式下载html内容,并将其保存在会议室数据库中。您可以像下面这样使用okhttp

                String url = "https://google.com";
                OkHttpClient client = new OkHttpClient();
                Request request = new Request.Builder()
                        .url(url)
                        .build();

                client.newCall(request).enqueue(new Callback() {

                    @Override
                    public void onFailure(Call call, IOException e) {

                    }
                    @Override
                    public void onResponse(Call call, Response response) throws IOException {
                        if (response.isSuccessful()) {

                            final String aFinalString = response.body().string();
//Save this string in your room database



                        } else {
                        }
                    }
                });

要显示您刚刚下载的网页,您可以尝试

webView.loadData(yourData, "text/html; charset=utf-8", "UTF-8");

其中yourData是从Room DB检索到的字符串