5

WebView を備えたアプリがあり、インターネットに初めて接続したときにアプリが Web サイトを保存して、それ以上の接続が不要になるようにしたいと考えています。一部の人々が WebView ページをキャッシュに保存していることを知っています。私はいくつかの調査を行い、このようないくつかの答えを見つけまし

しかし、問題は、これを行う方法に関するサンプル コードが必要になることです。ウェブページの .html ファイルを Android の外部ストレージに保存する方法の例を教えてください。

これは、現時点で Web ページをロードするための唯一のコードです。

//Connecting to UI elements
webView = (WebView) findViewById(R.id.webView1);

//Loading WebView URL
webView.loadUrl("https://www.easistent.com/urniki/izpis/263/16515/0/0/1");

サンプルコードが必要です。このオンラインで多くのドキュメントとガイド、例を見てきましたが、何も機能しません。誰かがコメント付きの例を教えてくれたら、本当に感謝しています。

4

2 に答える 2

1

@yeradis(ネットワークが利用できない場合でも WebView コンテンツを保存して表示するにはどうすればよいですか? ):

おそらくキャッシュを使用するのが最善の方法です...そのためには、 http://developer.android.com/reference/android/webkit/WebSettings.htmlを確認する必要があります

「WebView の設定状態を管理します。WebView が最初に作成されると、一連のデフォルト設定が取得されます。これらのデフォルト設定は、getter 呼び出しから返されます。WebView.getSettings() から取得された WebSettings オブジェクトは、 WebView.WebView が破棄された場合、WebSettings のメソッド呼び出しは IllegalStateException をスローします。"

特に:

public static final int **LOAD_CACHE_ONLY**

以降: API レベル 1 ネットワークを使用せず、キャッシュからのみロードします。一緒に使うsetCacheMode(int). Constant Value: 3 (0x00000003)

または

public static final int **LOAD_CACHE_ELSE_NETWORK**

導入されたバージョン: API レベル 1 有効期限が切れていても、コンテンツが存在する場合はキャッシュを使用します (例: history nav)。キャッシュに存在しない場合は、ネットワークからロードします。一緒に使うsetCacheMode(int). Constant Value: 1 (0x00000001)

更新 1:

うーん、「すべての人生のくだらないコード」たとえば:

public static InputStream fetch(String url) throws MalformedURLException,
        IOException {
    DefaultHttpClient httpClient = new DefaultHttpClient();
    HttpGet request = new HttpGet(url);
    HttpResponse response = httpClient.execute(request);
    return response.getEntity().getContent();
}


private static String convertStreamToString(InputStream is)
        throws IOException {

    StringWriter writer = new StringWriter();
    IOUtils.copy(is, writer, "UTF-8");
    return writer.toString();
}

そのため、InputStream fetch(String url) で URL をフェッチし、そのストリームを private static String convertStreamToString(InputStream is) で String に変換して、そのストリームをファイルに保存し、後でそのコンテンツを webview にロードできます...後で読む。

アップデート2:

または、いくつかのJavaシリアライゼーションを実行できます...これがAndroid xDで機能するかどうかを思い出せません

Java Serialization API の秘密を発見してください http://java.sun.com/developer/technicalArticles/Programming/serialization/

于 2013-09-06T12:25:16.360 に答える