Wie lösche ich den Cache anderer Anwendungen aus unserer Android-App?

Ich versuche, eine Android-App zu entwickeln, mit der andere Anwendungs-Cache-Daten gelöscht werden können. Ich habe versucht, alle Blogs zu durchsuchen, aber keines davon hat für mich funktioniert. Ich kann den Cache meiner Anwendung mit folgendem Code leeren

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));
                        Toast.makeText(DroidCleaner.this, "Cache Cleaned", Toast.LENGTH_LONG).show();
                        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();
}

Mein Manifestcode

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

Ich habe den Code auf 2.2, 2.3 und 4.0 getestet

und nachdem ich den Beitrag im folgenden Link gesehen habeAndroid: Cache aller Apps leeren?

Ich habe meinen Code in geändert

PackageManager  pm = getPackageManager();
// Get all methods on the PackageManager
Method[] methods = pm.getClass().getDeclaredMethods();
for (Method m : methods) {
    if (m.getName().equals("freeStorage")) {
        // Found the method I want to use
        try {
            long desiredFreeStorage = 8 * 1024 * 1024 * 1024; // Request for 8GB of free space
        m.invoke(pm, desiredFreeStorage , null);
    } catch (Exception e) {
        // Method invocation failed. Could be a permission problem
    }
    break;
   }
}

Ich möchte den Cache einer anderen Anwendung leeren. Kann mir ein beliebiger Körper helfen? Bitte korrigieren Sie mich, wenn ich falsch liege? Vielen Dank im Voraus.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage