1, the mobile phone in the cache is generally placed in the mobile phone data/data/project/cache, the cache file is not readable and not writable, so can not be directly obtained 2, in the source to find Mpm.getpackagesizeinfo (package name, Mstatsobserver ); 3, Getpackagesizeinfo method has been hidden, can only use reflection to obtain: Need to import these two aidl files
Ipackagestatsobserver.aidl and Packagestats.aidl
1?? Gets the Packagemanager Manager object, public static void Getcachesize (final Activity context, String packname,final Ongetcachesizelistener listener) {Packagemanager pm = Context.getpackagemanager (); 2?? Use reflection//1. Class Class<? Extends packagemanager> clazz = Pm.getclass (); 2. Method method = Clazz.getdeclaredmethod ("Getpackagesizeinfo", new class[] {String.class,ipackagestatsobserv Er.class}); 3.objpm has acquired the Task Manager //in order to get to the callback, define an interface Ipackagestatsobserver.stub mstub = new Ipackagestatsobserver.stub () { @Override public void ongetstatscompleted (Packagestats pstats, Boolean succeeded) throws RemoteException { //callback result final long CacheSize = pstats.cachesize; //because the UI interface has been modified, it cannot be run in a child thread , create a UI thread that modifies context.runonuithread (new Runnable () { in the main thread @Override public void Run () { //TODO Auto-generated method Stub listener.getcachesize (cacheSize);//callback The result to the user }}); //4. Invoke method.invoke (PM, New Object[]{pacKname,mstub}); } 3?? Define an interface public class Getappcachemessageutils {
public interface ongetcachesizelistener{
void Getcachesize (Long cacheSize);}
How to get the phone's cache