2016-04-28 2 views
2

Ich versuche eine Android-App zu entwickeln, die andere Anwendungs-Cache-Daten löschen könnte. Ich habe versucht, alle Blogs zu durchsuchen, aber keiner von ihnen hat für mich funktioniert. Ich bin in der Lage meiner Anwendung Cache durch den folgenden Code
Wie andere Anwendungen Cache von einer anderen Android-App in Marshmallow löschen?

Referenz zu löschen:
How to delete other applications cache from our android app?

private static final long CACHE_APP = Long.MAX_VALUE; 
private CachePackageDataObserver mClearCacheObserver; 

btnCache.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      clearCache(); 
     } 
    });//End of btnCache Anonymous class 

void clearCache() 
{ 
    if (mClearCacheObserver == null) 
    { 
     mClearCacheObserver=new CachePackageDataObserver(); 
    } 

    PackageManager mPM=getPackageManager(); 

    @SuppressWarnings("rawtypes") 
    final Class[] classes= { Long.TYPE, IPackageDataObserver.class }; 

    Long localLong=Long.valueOf(CACHE_APP); 

    try 
    { 
     Method localMethod= 
      mPM.getClass().getMethod("freeStorageAndNotify", classes); 

     /* 
     * Start of inner try-catch block 
     */ 
     try 
     { 
     localMethod.invoke(mPM, localLong, mClearCacheObserver); 
     } 
     catch (IllegalArgumentException e) 
     { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
     } 
     catch (IllegalAccessException e) 
     { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
     } 
     catch (InvocationTargetException e) 
     { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
     } 
     /* 
     * End of inner try-catch block 
     */ 
    } 
    catch (NoSuchMethodException e1) 
    { 
     // TODO Auto-generated catch block 
     e1.printStackTrace(); 
    } 
}//End of clearCache() method 

private class CachePackageDataObserver extends IPackageDataObserver.Stub 
{ 
    public void onRemoveCompleted(String packageName, boolean succeeded) 
    { 

    }//End of onRemoveCompleted() method 
}//End of CachePackageDataObserver instance inner class 


Und auch ein Paket in Ihrem src Ordner mit dem Namen android.content.pm innerhalb dieses Pakets erstellen erstellen eine Datei mit dem Namen IPackageDataObserver .aidl und fügen Sie den folgenden Code ein


und in Ihrem Manifest stellen Sie sicher, verwenden Sie den folgenden Code

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

Above erfolgreich gelöscht Codes bis Lollipop aber, wenn dieser Code in Marshamallow ausführen, dann ist es alle Daten nicht klar. Warum es ist ??????????????

Alle Vorschläge werden akzeptiert. oder eine andere Art zu lösen. Vielen Dank.

+0

Ich habe das gleiche Problem. Wenn Sie irgendeine Lösung finden, teilen Sie sie mir bitte mit –

Antwort

0

Da dies eine nicht-offizielle Methode ist und Google die Signaturstufe der Methode nun auf Signatur | system @ Marshamallow angehoben hat.