2012-10-22 8 views
9

非常に簡単なWebViewがアプリケーションにあり、「ようこそ」ダイアログが表示されます。WebViewキャッシュをクリアする101の方法 - いずれも機能しません。

私はそうのようで応答するサーバーの言語間で送信します。

Map<String, String> noCacheHeaders = new HashMap<String, String>(2); 
noCacheHeaders.put("Pragma", "no-cache"); 
noCacheHeaders.put("Cache-Control", "no-cache"); 
noCacheHeaders.put("Accept-Language", Locale.getDefault().toString()); 
mWebView.loadUrl("www.fake.com", noCacheHeaders); 

これは正常に動作します - 私は、デバイスの言語を変更する場合しかし、私は同様に変更するWebView言語をしたい、私ができます"Accept-Language"の値がデバッグ時に正しく変更されていますが、コンテンツがWebViewで変更されていないことを確認してください。私は以下で説明するキャッシングを止める方法を探しました。言語の変更後にサイトの読み込みを異なるようにする効果はありません。

サーバーがキャッシュの問題ではないことを確認するために、私は「App Data」をクリアしてからWebViewコンテンツを変更します。 AppがWebViewデータを格納していることを証明する決定的な証拠。

私は以下に挙げたさまざまな提案に従ってきました。そのうちの一つは、実際の内容を変更されていない私のWebView:クラッシュ原因hereから

:ちょうどこの上

mWebView.clearCache(true); 
mContext.deleteDatabase("webview.db"); 
mContext.deleteDatabase("webviewCache.db"); 

をそれ自身の(両方loadURL前に、それの後、およびonProgress = 100) :hereから

mWebView.clearCache(true); 

mWebView.getSettings().setAppCacheMaxSize(0); 

私もこれを試しました:

mWebView.getSettings().setAppCacheEnabled(false); 

すべて同じ結果になります。私のWebViewは、デバイス言語をドイツ語から英語に切り替える際に、ドイツのウェブサイトの内容を保持していました。

Map<String, String> noCacheHeaders = new HashMap<String, String>(2); 
    noCacheHeaders.put("Pragma", "no-cache"); 
    noCacheHeaders.put("Cache-Control", "no-cache"); 
    noCacheHeaders.put("Accept-Language", Locale.getDefault().toString()); 

    mWebView.getSettings().setAppCacheEnabled(false); 
    mWebView.clearCache(true); 
    mWebView.getSettings().setAppCacheMaxSize(0); 

    mWebView.setWebChromeClient(new WebChromeClient() { 
      public void onProgressChanged(WebView view, int progress) {     
       mProgress.setProgress(progress); 
       try { 
        getActivity().setProgress(progress); 
        if(progress == 100) { 
         mProgress.setVisibility(View.GONE); 
         mWebView.clearCache(true); 
        } 
       } catch(Exception e) { 
        e.printStackTrace(); 
       } 
      } 
    }); 
    mWebView.loadUrl("www.fake.com", noCacheHeaders); 
    mWebView.clearCache(true);  

反復手順: - 英語内容

  1. アプリ
  2. オープンWebViewのをインストールします。ここ

    は一緒にすべてのコードです。ドイツ

  3. から
  4. 強制停止のApp
  5. デバイスの変更言語
  6. オープンのApp & WebViewの- 英語内容。
  7. 強制停止のApp
  8. クリアのAppデータ
  9. オープンのApp & WebViewの- ドイツ語コンテンツ。
+0

タイトルを愛してください!あなたはもっと正しいことができませんでした。 – DroidT

答えて

10
CookieSyncManager.createInstance(this);   
CookieManager cookieManager = CookieManager.getInstance();   
cookieManager.removeAllCookie(); 
+0

素晴らしい...なぜサーバーが言語をセッションにリンクしているのかは私の外です。 – Graeme

+7

なぜあなたが 'CookieSyncManager'のインスタンスを作成しているのか、そして' CookieManager'を使って実際にクッキーを削除している理由を具体的に説明してください。 – ohcibi

+0

素晴らしい!最終的に答えが働いています!!! THX – kyp

関連する問題