アンドロイドデバイスの内部メモリまたは外部メモリにHTML Webページを読み込んで取得する必要があります。私が必要とするのは、Webビューを使用してアンドロイドでWebページをダウンロードして取得することです。アンドロイドアプリケーションでオンラインモードとオフラインモードの両方でウェブページを読み込みまたは取得する方法は?
ウェブページのダウンロードや保存に似た質問が繰り返しあります。しかし、答えのどれも私を助けませんでした。教えて!
ありがとうございます。
アンドロイドデバイスの内部メモリまたは外部メモリにHTML Webページを読み込んで取得する必要があります。私が必要とするのは、Webビューを使用してアンドロイドでWebページをダウンロードして取得することです。アンドロイドアプリケーションでオンラインモードとオフラインモードの両方でウェブページを読み込みまたは取得する方法は?
ウェブページのダウンロードや保存に似た質問が繰り返しあります。しかし、答えのどれも私を助けませんでした。教えて!
ありがとうございます。
は、このソリューションは、あなたがすべてのデータをフェッチするためのWebクローラを使用することができ、オフラインのmodとオンラインのmodでウェブサイトを閲覧したいyour.ifに適していますウェブサイトから。 Hereは、インターネットの可用性に基づいてURLまたはローカルメモリからWebサイトを読み込むことができるandroid web crawler.afterのサンプルプロジェクトです。
WebView
は、remote
とlocal
のhtmlページをロードしてレンダリングすることができ、さらに'data' scheme URL
をサポートします。
共有設定(あなたのケースでは有用ではない)のキーと値のペアで
ストアプライベートプリミティブデータ。 (お使いの場合に推奨)
内部ストレージデバイスメモリ上の
ストアプライベートデータ。
外部ストレージ共有外部ストレージに(あなたできあなたの場合での使用に推奨されません)
ストア公開データ。
SQLiteのデータベース(あなたあなたの場合での使用が、お勧めできません)
Storeはプライベート・データベース内のデータを構造化。
ネットワーク接続(あなたあなたの場合で使用することができますが、オフラインモードで動作しません)独自のネットワーク・サーバとウェブ上
ストアデータを。
あなたのWebView
に設定使用WebViewClient
のshouldInterceptRequest
方法を使用しようとする場合があります。これにより、html読み込み処理中に読み込まれるすべてのリソースを知ることができます。あなたがファイルにHTMLコンテンツを格納し、その後、内部ストレージに保存することができますあなたの条件、 を実現することができる2つのリンク上で
WebViewClient webViewClient = new WebViewClient() {
@TargetApi(VERSION_CODES.LOLLIPOP)
@Override
public WebResourceResponse shouldInterceptRequest(WebView view, WebResourceRequest request) {
WebResourceResponse response = null;
if ("GET".equals(request.getMethod())) {
try {
response = getWebResponse(view.getContext().getApplicationContext(), request.getUrl().toString());
} catch (Exception e) {
Log.e(TAG, "Error while overriding getting web response", e);
}
}
return response;
}
@SuppressWarnings("deprecation")
@Override
public WebResourceResponse shouldInterceptRequest(WebView view, String url) {
WebResourceResponse response = null;
try {
response = getWebResponse(view.getContext().getApplicationContext(), url);
} catch (Exception e) {
Log.e(TAG, "Error while overriding getting web response", e);
}
return response;
}
WebResourceResponse getWebResponse(Context context, String url) {
// YOUR IMPLEMENTATION that will save resource located at passed url
}
}
webView.setWebViewClient(webViewClient);
Get the HTML code from loaded WebView
Save String as html file android
:だから、このような何かを行うことができますオフラインモードで読み込むことができます。
キャッシュメモリにWebページを保存します。
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
私にはわからないチェックこのリンクWebView load website when online, load local file when offline
これは私にとってシンプルなwebviewキャッシング機構のようです。
を試みるこの
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);
}
方法isNetworkAvailable()アクティブなネットワーク接続をチェック:
private boolean isNetworkAvailable() {
ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);
NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
return activeNetworkInfo != null && activeNetworkInfo.isConnected();
}
webView.loadUrl( "http://www.google.com")。
最後に、あなたのAndroidManifest.xmlに以下の三つの権限を追加することを忘れないでください:。
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
あなたはWebViewのために、この設定viewer.getSettings()setCacheMode(WebSettings.LOAD_DEFAULT)を試したことがありますか? – sha