解析Android 如何獲得已安裝應(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方法如下:
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)入。
下面就是直接使用方法了。
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è)置源碼的方法如下,可以搬過來照樣用:
Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS,Uri.fromParts("package",包名 ,null));
// start new activity to display extended information
startActivityForResult(intent, 1);
- Android編程判斷應(yīng)用程序是否已安裝的方法
- Android編程實(shí)現(xiàn)將應(yīng)用強(qiáng)制安裝到手機(jī)內(nèi)存的方法
- Android開發(fā)應(yīng)用第一步 安裝及配置模擬器Genymotion
- Android編程實(shí)現(xiàn)應(yīng)用強(qiáng)制安裝到手機(jī)內(nèi)存的方法
- 使用python編寫批量卸載手機(jī)中安裝的android應(yīng)用腳本
- android通過配置文件設(shè)置應(yīng)用安裝到SD卡上的方法
- Android 靜默方式實(shí)現(xiàn)批量安裝卸載應(yīng)用程序的深入分析
- Android編程實(shí)現(xiàn)應(yīng)用自動(dòng)更新、下載、安裝的方法
相關(guān)文章
開源電商app常用標(biāo)簽"hot"之第三方開源LabelView
這篇文章主要介紹了開源電商app常用標(biāo)簽"hot"之第三方開源LabelView,對(duì)開源電商app相關(guān)資料感興趣的朋友一起學(xué)習(xí)吧2015-12-12Android手勢(shì)密碼--設(shè)置和校驗(yàn)功能的實(shí)現(xiàn)代碼
這篇文章主要介紹了Android手勢(shì)密碼--設(shè)置和校驗(yàn)功能的實(shí)現(xiàn)代碼,非常不錯(cuò),具有一定的參考校驗(yàn)價(jià)值,需要的朋友可以參考下2018-05-05Android中模仿抖音加載框之兩顆小球轉(zhuǎn)動(dòng)效果
這篇文章主要介紹了Android仿抖音加載框之兩顆小球轉(zhuǎn)動(dòng)控件,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-09-09Flutter之Timer實(shí)現(xiàn)短信驗(yàn)證碼獲取60s倒計(jì)時(shí)功能的代碼
這篇文章主要介紹了Flutter之Timer實(shí)現(xiàn)短信驗(yàn)證碼獲取60s倒計(jì)時(shí)功能,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-07-07Android實(shí)現(xiàn)讓圖片在屏幕上任意移動(dòng)的方法(拖拽功能)
這篇文章主要介紹了Android實(shí)現(xiàn)讓圖片在屏幕上任意移動(dòng)的方法,實(shí)例分析了Android拖拽功能的相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2016-08-08Android開發(fā)手機(jī)無線調(diào)試的方法
今天小編就為大家分享一篇關(guān)于Android開發(fā)手機(jī)無線調(diào)試的方法,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧2018-12-12HttpClient通過Post上傳文件的實(shí)例代碼
這篇文章主要介紹了HttpClient通過Post上傳文件的實(shí)例代碼的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-08-08新版Flutter集成到已有Android項(xiàng)目的實(shí)現(xiàn)
這篇文章主要介紹了新版Flutter集成到已有Android項(xiàng)目的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03Android串口開發(fā)之使用JNI實(shí)現(xiàn)ANDROID和串口通信詳解
這篇文章主要給大家介紹了關(guān)于Android串口開發(fā)之使用JNI實(shí)現(xiàn)ANDROID和串口通信的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2018-01-01