2016-10-12 4 views
3

Ich möchte meinen Anwendungscache programmatisch in Android Marshmallow 6.0 löschen. Ich habe versucht, den folgenden Code, aber es funktioniert nicht in Marshmallow.I auf Stack-Überlauf gelesen, dass unter Code von API-Ebene ist veraltet 19. Ich CLEAR_APP_CACHE Erlaubnis in meinem Manifests.xmlAnwendungscache programmatisch in Marshmallow löschen

public void trimCache(Context context) { 
     try { 
      File dir = context.getCacheDir(); 
      if (dir != null && dir.isDirectory()) { 
       deleteDir(dir); 
      } 
     } catch (Exception e) { 
      // TODO: handle exception 
     } 
    } 

public boolean deleteDir(File dir) { 
     if (dir != null && dir.isDirectory()) { 
      String[] children = dir.list(); 
      for (int i = 0; i < children.length; i++) { 
       boolean success = deleteDir(new File(dir, children[i])); 
       if (!success) { 
        return false; 
       } 
      } 
     } 

     // The directory is now empty so delete it 
     return dir.delete(); 
    } 
+0

Wie kommt es, fügen Sie nicht Arbeiten? Ist deine App abgestürzt? Bitte erläutern Sie es, damit die Leute Ihnen besser helfen können. –

+0

@HadiSatrio Danke für die Antwort. Ich habe im Tab "Monitore" im Android Studio gesehen. Es gibt keinen Speicher frei. Und es stürzt auch meine Anwendung mit dem Fehler von nicht genügend Speicher ab. Ich habe keine Speicherkarte und ich habe nur 500MB freien Speicher in meinem Telefon. –

+0

Ich stehe vor dem gleichen Problem. Wenn jemand eine Lösung gefunden hat, bitte helfen Sie. Danke –

Antwort

0
add permission: 
<uses-permission android:name="android.permission.CLEAR_APP_CACHE" /> 

you should check for external cache dir also. 

public void trimCache(Context context) { 
     try { 
      File dir = context.getCacheDir(); 
      if (dir != null && dir.isDirectory()) { 
       deleteDir(dir); 
      } 
      File exDir = context.getExternalCacheDir(); 
      if (exDir != null && exDir.isDirectory()) { 
       deleteDir(exDir); 
      } 
     } catch (Exception e) { 
      // TODO: handle exception 
     } 
    } 
+0

Ich habe vergessen, in meine Frage hinzuzufügen, aber ich habe bereits die Erlaubnis hinzugefügt. –

+0

aber Sie haben getExternalCacheDir() nicht gelöscht –

Verwandte Themen