Web ページを読み込むアプリがあり、オンラインで動作します。自分のページに cache.manifest ファイルを追加しました。これは、Android フォンでブラウザを使用している場合や、デスクトップでテストしている場合に完璧に機能するようです。
アプリを開いていくつかのページを開くと、それらがキャッシュされます。
その後、すべての Wifi と 3G 接続を無効にして、アプリを再度開きます。その時点で、以前に開いたページは表示できますが、開いていないページには「Web ページが利用できません」というエラーが表示されます。
したがって、これはキャッシュが行われていることを意味しますが、webviewclient は実際には cache.manifest ファイルに表示されているすべてのものをキャッシュしていません。
サンプルページはこちらにあります: http://www.mobileevolution.be/apps/FitceCongress/android/gsm/home.php
マニフェストには次の情報が含まれています。
CACHE MANIFEST
# 30-05-2013 20h11 1152gg2dfdfdfd
CACHE:
committees.php
congressprogram.php
home.php
../../congressprogram.xml
../../partnerprogram.xml
information.php
partnerprogram.php
sponsors.php
style/style.css
registration.php
http://fonts.googleapis.com/css?family=Roboto:300,400,500,700,900
http://themes.googleusercontent.com/static/fonts/roboto/v8/Hgo13k-tfSpn0qi1SFdUfT8E0i7KZn-EPnyo3HZu7kw.woff
http://themes.googleusercontent.com/static/fonts/roboto/v8/2UX7WLTfW3W8TclTUvlFyQ.woff
http://themes.googleusercontent.com/static/fonts/roboto/v8/RxZJdnzeo3R5zSexge8UUT8E0i7KZn-EPnyo3HZu7kw.woff
http://themes.googleusercontent.com/static/fonts/roboto/v8/d-6IYplOFocCacKzxwXSOD8E0i7KZn-EPnyo3HZu7kw.woff
http://themes.googleusercontent.com/static/fonts/roboto/v8/mnpfi9pxYH-Go5UiibESIj8E0i7KZn-EPnyo3HZu7kw.woff
http://themes.googleusercontent.com/static/fonts/roboto/v8/Hgo13k-tfSpn0qi1SFdUffY6323mHUZFJMgTvxaG2iE.eot
http://themes.googleusercontent.com/static/fonts/roboto/v8/5YB-ifwqHP20Yn46l_BDhA.eot
http://themes.googleusercontent.com/static/fonts/roboto/v8/RxZJdnzeo3R5zSexge8UUfY6323mHUZFJMgTvxaG2iE.eot
http://themes.googleusercontent.com/static/fonts/roboto/v8/d-6IYplOFocCacKzxwXSOPY6323mHUZFJMgTvxaG2iE.eot
http://themes.googleusercontent.com/static/fonts/roboto/v8/mnpfi9pxYH-Go5UiibESIvY6323mHUZFJMgTvxaG2iE.eot
このフォーラムの他のスレッドによると、Android のキャッシュ設定は正しいようです。
webView1.getSettings().setJavaScriptEnabled(true); // enable javascript
cm = (ConnectivityManager) this.getSystemService(Activity.CONNECTIVITY_SERVICE);
if(cm != null && cm.getActiveNetworkInfo() != null && cm.getActiveNetworkInfo().isConnected()){
webView1.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT);
}
else{
webView1.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ONLY);
}
webView1.getSettings().setDomStorageEnabled(true);
webView1.getSettings().setAppCacheMaxSize(1024 * 1024 * 8);
String appCachePath = getApplicationContext().getCacheDir()
.getAbsolutePath();
webView1.getSettings().setAppCachePath("/data/data/be.mobileevolution.fitcecongress/cache");
//webView1.getSettings().setAppCachePath(appCachePath);
webView1.getSettings().setAllowFileAccess(true);
webView1.getSettings().setAppCacheEnabled(true);
次のように webviewclient を作成しています。
webView1.setWebViewClient(new WebViewClient(){
次のスレッドは私のものと同じ問題だと思いますが、本当の答えはありませんでした: Webview not loading offline cached data
cache.manifest 内のすべてのファイルがアプリにダウンロードされていない理由を説明している人はいますか? または、webview で cache.manifest がまったく機能せず、キャッシュがアプリによってネイティブに行われた可能性がありますか? しかし、ブラウザでは問題なく動作します!
ありがとう、Grts、Lars