欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

解析Android 如何獲得已安裝應(yīng)用大小

 更新時(shí)間:2013年06月15日 11:17:55   作者:  
本篇文章是對(duì)Android獲得已安裝應(yīng)用大小的解決方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
應(yīng)用層面如何獲得已經(jīng)安裝應(yīng)用的大小?
網(wǎng)上找了一下有兩種方法:
1、直接拿到data目錄下對(duì)應(yīng)的包,然后用File.length()方法獲得。然后會(huì)發(fā)現(xiàn)和設(shè)置里顯示的大小不同。
2、通過反射調(diào)用設(shè)置里源碼的方法獲得PackageStats類的實(shí)例。
兩種方法都不想用...
后來自己找到解決辦法:
PackageManager類有個(gè)getPackageSizeInfo方法如下:
復(fù)制代碼 代碼如下:

public abstract void getPackageSizeInfo(String packageName,
            IPackageStatsObserver observer);

只是這個(gè)方法是hide的。
自己編譯一下的android2.3的Framework框架,把jar包拷出來,只需要把框架導(dǎo)入到library,設(shè)置在默認(rèn)的android的lib之上遍可以優(yōu)先使用自己編譯的框架了,其實(shí)也就是讓自己應(yīng)用層能調(diào)用框架中的接口。
framework下載:點(diǎn)擊此處
下載好后,通過添加lib后把classes.jar添加到此lib中,如圖:






然后將自己的lib up到sdk提供的Android2.3.3之上。注意不能直接使用Add External JARs直接導(dǎo)入。




下面就是直接使用方法了。

復(fù)制代碼 代碼如下:

pm.getPackageSizeInfo(packageInfo.packageName,
     new IPackageStatsObserver.Stub() {
      public void onGetStatsCompleted(PackageStats stats,
        boolean succeeded) {
       Log.v("King", stats.codeSize);
       Log.v("King", stats.dataSize);
       Log.v("King", stats.cacheSize);
      }
     });

第一個(gè)參數(shù)是包名,想必大家都能拿到。
第二個(gè)參數(shù)是實(shí)現(xiàn)AIDL生成的JAVA接口的匿名內(nèi)部類。在回調(diào)方法里即可處理程序大小數(shù)據(jù)。
stats.codeSize:應(yīng)用程序大小
stats.dataSize:數(shù)據(jù)大小
stats.cacheSize:緩存大小
一般大家可能都是用listView去顯示每個(gè)應(yīng)用的大小,而調(diào)用getPackageSizeInfo方法是不能立刻拿到值的,所以要和其他數(shù)據(jù)異步顯示。

可以通過handler講數(shù)據(jù)發(fā)送出去后,然后調(diào)用Adapter的notifyDataSetChanged()方法更新顯示應(yīng)用大小。
也許你還想點(diǎn)擊每一項(xiàng)可以可以直接跳轉(zhuǎn)到設(shè)置里的應(yīng)用管理界面,而不自己去寫卸載、清除緩存等方法。設(shè)置源碼的方法如下,可以搬過來照樣用:
復(fù)制代碼 代碼如下:

Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS,Uri.fromParts("package",包名 ,null));
// start new activity to display extended information
startActivityForResult(intent, 1);

相關(guān)文章

最新評(píng)論