list<packageinfo> packages = Getpackagemanager (). getinstalledpackages (0);
Public Pkgsizeobserver pkgsizeobserver = new Pkgsizeobserver ();
try {Method Method;method = This.getpackagemanager (). GetClass (). GetMethod ("Getpackagesizeinfo", new class[] { String.class,ipackagestatsobserver.class}); Method.invoke (This.getpackagemanager (), PackageInfo.packageName, Pkgsizeobserver);} catch (Nosuchmethodexception e) {//TODO auto-generated catch Blocke.printstacktrace ();} catch (Illegalaccessexception E {//TODO auto-generated catch Blocke.printstacktrace ();} catch (IllegalArgumentException e) {//TODO auto-generated catch Blocke.printstacktrace ();} catch ( InvocationTargetException e) {//TODO auto-generated catch Blocke.printstacktrace ();} Synchronized (pkgsizeobserver) {try {pkgsizeobserver.wait ();} catch (Interruptedexception e) {e.printstacktrace ()}} Totalapp = pkgsizeobserver.cachesize + pkgsizeobserver.codesize+ pkgsizeobserver.datasize;
<span style= "font-family:arial, Helvetica, Sans-serif;" >PkgSizeObserver.class</span>
Aidl file Bindler mechanism service class public class Pkgsizeobserver extends Ipackagestatsobserver.stub {public long cachesize = 0; public long datasize = 0;public long codesize = 0;/*** * callback function, * * @param pStatus * , return data encapsulated in Packagestats object * @par AM succeeded * for callback success */@Overridepublic void ongetstatscompleted (Packagestats pstats, Boolean succeeded) throws remoteexception {//TODO auto-generated Method Stubif (succeeded) {cachesize = pstats.cachesize;//cache Size DataSize = PSTATS.D Atasize; Data size codesize = pstats.codesize; Application size synchronized (this) {This.notifyall ();}}}}
How Android Gets the system application size