2016-08-01 24 views
0

Ich habe folgenden Code verwendet, um meinen App-Cache zu löschen.Android Clearing-App-Cache löscht Anbieter auch

public void clearApplicationData() { 

     File cacheDirectory = getCacheDir(); 
     File applicationDirectory = new File(cacheDirectory.getParent()); 
     if (applicationDirectory.exists()) { 
      String[] fileNames = applicationDirectory.list(); 
      for (String fileName : fileNames) { 
       if (!fileName.equals("lib")) { 
        deleteFile(new File(applicationDirectory, fileName)); 
       } 
      } 
     } 
    } 

    public static boolean deleteFile(File file) { 
     boolean deletedAll = true; 
     if (file != null) { 
      if (file.isDirectory()) { 
       String[] children = file.list(); 
       for (int i = 0; i < children.length; i++) { 
        deletedAll = deleteFile(new File(file, children[i])) && deletedAll; 
       } 
      } else { 
       deletedAll = file.delete(); 
      } 
     } 
     return deletedAll; 
    } 

Sobald ich den Code lösche bedeutet es löscht den Anbieter, die ich in Manifest deklariert. Gibt es eine Möglichkeit, den Cache zu löschen, ohne den Inhaltsanbieter zu löschen?

Antwort

1

Sie können dies vermeiden, indem nicht-Datenbank-Ordner

if (!fileName.equals("lib")&&!fileName.equals("files")&&!fileName.equals("database")) { 
        deleteFile(new File(applicationDirectory, fileName)); 
       } 
+0

Löschen ja, danke mir den richtigen Weg zu zeigen, –