caching - Get Cache Directory for all installed apps in android -


i want exact size of cache directory of android installed apps. have tried this.

list<applicationinfo> listofapps = packagemanager.getinstalledapplications(packagemanager.get_meta_data);      for(applicationinfo applicationinfo : listofapps) {           try {               context context = createpackagecontext(applicationinfo.packagename,context_ignore_security);              file file = context.getcachedir();              if(file!=null){              string path = file.getabsolutepath();               long dir = file.length();              log.d("all_package", applicationinfo.packagename + "\t\t" + memoryfreedpredication.formatfilesize(string.valueof(dir)) + " \t\t"+path);}          } catch (packagemanager.namenotfoundexception e) {              e.printstacktrace();          } 

method to format size

public static string formatfilesize(string filesize) {      string[] sizes = {"b", "kb", "mb", "gb"};     double len = double.parsedouble(filesize);     int order = 0;      if (len < 1024) {         return string.format("%s %s", 1, sizes[1]);     } else {         while (len >= 1024 && order + 1 < sizes.length) {             order++;             len = len / 1024;         }     }      len = math.round(len * 100.0) / 100.0;     return string.format("%s %s", len, sizes[order]); } 

but returns 4kb

i used aidl purpose.

final packagemanager packagemanager = getpackagemanager();      final list<applicationinfo> applicationinfos = packagemanager.getinstalledapplications(packagemanager.get_meta_data);       for(final applicationinfo runningtaskinfo : applicationinfos){          try {             context context = createpackagecontext(runningtaskinfo.packagename,context_ignore_security);            // packagemanager packagemanager = context.getpackagemanager();              method getpackagesizeinfo = packagemanager.getclass().getmethod(                     "getpackagesizeinfo", string.class, ipackagestatsobserver.class);              getpackagesizeinfo.invoke(packagemanager, runningtaskinfo.processname,                     new ipackagestatsobserver.stub() {                          @override                         public void ongetstatscompleted(packagestats pstats, boolean succeeded)                                 throws remoteexception {                              //log.d("app_size123","\n"+runningtaskinfo.loadlabel(packagemanager)+"\t"+formatfilesize(string.valueof(pstats.codesize)));                             log.d("app_size123","\n"+runningtaskinfo.loadlabel(packagemanager)+"\t"+formatfilesize(string.valueof(pstats.datasize)));                             //log.d("app_size123","\n"+runningtaskinfo.loadlabel(packagemanager)+"\t"+formatfilesize(string.valueof(pstats.cachesize)));                            //log.d("app_size123","\n"+runningtaskinfo.loadlabel(packagemanager)+"\t"+formatfilesize(string.valueof(pstats.externaldatasize)+"\n"));                         }                     });          } catch (packagemanager.namenotfoundexception e) {             e.printstacktrace();         } catch (nosuchmethodexception e) {             e.printstacktrace();         } catch (illegalaccessexception e) {             e.printstacktrace();         } catch (invocationtargetexception e) {             e.printstacktrace();         }   } 

i have created 3 aidl files follows.

packagestats.aidl

interface ipackagestatsobserver { void ongetstatscompleted(in packagestats pstats, boolean succeeded); } 

ipackagedataobserver.aidl

interface ipackagedataobserver { void onremovecompleted(in string packagename, boolean succeeded); } 

packagestats.aidl

parcelable packagestats; 

Comments

Popular posts from this blog

sql server - Cannot query correctly (MSSQL - PHP - JSON) -

php - trouble displaying mysqli database results in correct order -

C++ Linked List -