2013-08-13 13 views

risposta

0

Per cancellare i dati dell'applicazione, provare in questo modo. Penso che ti aiuterà.

public void clearApplicationData() 
{ 
    File cache = getCacheDir(); 
    File appDir = new File(cache.getParent()); 
    if (appDir.exists()) { 
     String[] children = appDir.list(); 
     for (String s : children) { 
      if (!s.equals("lib")) { 
       deleteDir(new File(appDir, s));Log.i("TAG", "**************** File /data/data/APP_PACKAGE/" + s + " DELETED *******************"); 
      } 
     } 
    } 
} 

public static 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; 
      } 
     } 
    } 
    return dir.delete(); 
} 
4

Questo è uno scenario divertente. Nella Manifest.Permission documentation

public static final String CLEAR_APP_CACHE

aggiunte a livello di API 1 Consente ad un'applicazione di cancellare le cache di tutte applicazioni installate sul dispositivo.

Costante Valore: "android.permission.CLEAR_APP_CACHE"

in modo da poter ottenere il permesso di cancellare la cache di tutte le applicazioni. Ma non credo ci sia alcun metodo nell'SDK per usare questa autorizzazione. Quindi puoi semplicemente mantenere il permesso e non fare nulla con esso. Strano da Google.

EDIT: This la discussione su google potrebbe essere di interesse. Dianne Hackborn dice specificatamente che l'autorizzazione di cui sopra non dovrebbe essere presente nell'SDK, dal momento che l'API per usarlo non è presente.

+0

Non è possibile utilizzare questa autorizzazione da https://developer.android.com/reference/android/Manifest.permission.html#CLEAR_APP_CACHE - Livello di protezione: sistema | firma – AndroidCoolestRulest

9

ho trovato questo:

import java.io.File; 

import android.app.Activity; 
import android.content.Context; 
import android.os.Bundle; 

public class HelloWorld extends Activity { 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle *) { 
     super.onCreate(*); 
     setContentView(R.layout.main); 
    } 

    @Override 
    protected void onStop(){ 
     super.onStop(); 
    } 

    //Fires after the OnStop() state 
    @Override 
    protected void onDestroy() { 
     super.onDestroy(); 
     try { 
     trimCache(this); 
     } catch (Exception e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
     } 
    } 

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

    public static 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(); 
    } 

} 

può essere utile a voi.

+0

Ho 30 pagine nel mio progetto. Se voglio cancellare la cache come dovrei farlo. Devo aggiungere questo codice in tutte le mie classi o in una classe. – Vijay

+0

puoi estendere l'attività in una classe con questi metodi e quindi importare quella classe in tutte le attività. –

+0

Questo snippet può cancellare la cache di tutte le applicazioni installate sul dispositivo? –

Problemi correlati