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
Post a Comment