9
votes

Android: CART CACHE PROGRAMMATIF

Comment effacer le cache de chaque application dans mon téléphone Android Programmmatiquement? L'effacement de la cache est-il autorisé par programme à Android? Si accepté, comment? J'essaie déjà de la faire rechercher et je ne trouve pas la réponse dont j'ai besoin


0 commentaires

3 Réponses :


0
votes

Pour effacer les données d'application, veuillez essayer de cette façon. Je pense que ça va vous aider.

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


0 commentaires

4
votes

C'est un scénario amusant. Dans le manifeste.permission Documentation

chaîne finale statique publique Clear_app_Cache

ajouté au niveau API 1 permet une application d'effacer les caches de tous Applications installées sur l'appareil.

valeur constante: "android.permission.clear_app_cache"

Vous pouvez donc obtenir la permission d'effacer le cache de toutes les applications. Mais je ne pense pas qu'il y ait une méthode dans le SDK d'utiliser cette permission. Donc, vous pouvez simplement tenir la permission et ne rien faire avec elle. Étrange de Google.

Edit: Cette discussion Google pourrait intéresser. Dianne Hackorn dit spécifiquement que la permission ci-dessus ne devrait pas être présente dans le SDK, puisque l'API à utiliser n'est pas là.


1 commentaires

Vous ne pouvez pas utiliser cette permission, de développeur.android.com/reference/andrroid.com / ... - Niveau de protection: Système | Signature



11
votes

J'ai trouvé celui-ci:

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

}


3 commentaires

J'ai 30 pages dans mon projet. Si je veux effacer le cache, comment devrais-je faire cela. Je dois ajouter ce code dans toutes mes classes ou n'importe laquelle une classe.


Vous pouvez étendre activité dans une classe avec ces méthodes, puis importer cette classe dans toutes les activités.


Cet extrait peut-il effacer le cache de toutes les applications installées sur l'appareil?