Android獲取app應(yīng)用程序大小的方法
Android對(duì)這種方法進(jìn)行了封裝,我們沒有權(quán)限去調(diào)用這個(gè)方法,所以我們只能通過AIDL,然后利用Java的反射機(jī)制去調(diào)用系統(tǒng)級(jí)的方法。
下面上代碼:(注釋比較詳細(xì))
/** * 作用:-----獲取包的大小----- * @param context 上下文 * @param pkgName app的包名 * @param appInfo 實(shí)體類,用于存放App的某些信息 */ public static void getPkgSize(final Context context, String pkgName, final PhoneAppInfo appInfo) { // getPackageSizeInfo是PackageManager中的一個(gè)private方法,所以需要通過反射的機(jī)制來調(diào)用 Method method; try { method = PackageManager.class.getMethod("getPackageSizeInfo", new Class[]{String.class, IPackageStatsObserver.class}); // 調(diào)用 getPackageSizeInfo 方法,需要兩個(gè)參數(shù):1、需要檢測的應(yīng)用包名;2、回調(diào) method.invoke(context.getPackageManager(), pkgName, new IPackageStatsObserver.Stub() { @Override public void onGetStatsCompleted(PackageStats pStats, boolean succeeded) throws RemoteException { if (succeeded && pStats != null) { synchronized (PhoneAppInfo.class) { appInfo.setCatchSize(pStats.cacheSize);//緩存大小 appInfo.setDataSize(pStats.dataSize); //數(shù)據(jù)大小 appInfo.setCodeSize(pStats.codeSize); //應(yīng)用大小 appInfo.setAppSize(pStats.cacheSize + pStats.codeSize + pStats.dataSize);//應(yīng)用的總大小 Log.d("asdasdxx",appInfo.getAppSize()+""); } } } }); } catch (NoSuchMethodException | InvocationTargetException | IllegalAccessException e) { e.printStackTrace(); } }
下面是兩個(gè)AIDL文件的代碼。。。
步驟(Android Studio):
1、在main文件夾下,建立一個(gè)aidl文件夾的文件夾
2、建立一個(gè)包,包名為android.content.pm
3、結(jié)構(gòu)圖
*******PackageStats.aidl文件***************
/* //device/java/android/android/view/WindowManager.aidl ** ** Copyright 2007, The Android Open Source Project ** ** Licensed under the Apache License, Version 2.0 (the "License"); ** you may not use this file except in compliance with the License. ** You may obtain a copy of the License at ** ** http://www.apache.org/licenses/LICENSE-2.0 ** ** Unless required by applicable law or agreed to in writing, software ** distributed under the License is distributed on an "AS IS" BASIS, ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ** See the License for the specific language governing permissions and ** limitations under the License. */ package android.content.pm; parcelable PackageStats;
****************IPackageStatusObserver.aidl******************
/* ** ** Copyright 2007, The Android Open Source Project ** ** Licensed under the Apache License, Version 2.0 (the "License"); ** you may not use this file except in compliance with the License. ** You may obtain a copy of the License at ** ** http://www.apache.org/licenses/LICENSE-2.0 ** ** Unless required by applicable law or agreed to in writing, software ** distributed under the License is distributed on an "AS IS" BASIS, ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ** See the License for the specific language governing permissions and ** limitations under the License. */ package android.content.pm; import android.content.pm.PackageStats; /** * API for package data change related callbacks from the Package Manager. * Some usage scenarios include deletion of cache directory, generate * statistics related to code, data, cache usage(TODO) * {@hide} */ oneway interface IPackageStatsObserver { void onGetStatsCompleted(in PackageStats pStats, boolean succeeded); }
相關(guān)文章
Android滾動(dòng)菜單ListView實(shí)例詳解
這篇文章主要為大家詳細(xì)介紹了Android滾動(dòng)菜單ListView實(shí)例,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-10-10Android用viewPager2實(shí)現(xiàn)UI界面翻頁滾動(dòng)的效果
自學(xué)Android中,然后需要實(shí)現(xiàn)UI頁面翻頁滑動(dòng)的效果,例如頭條的功能 我這邊利用了viewPager2的翻頁功能,具體流程如下:2021-05-05Android實(shí)現(xiàn)關(guān)機(jī)后數(shù)據(jù)不會(huì)丟失問題
這篇文章主要介紹了Android實(shí)現(xiàn)關(guān)機(jī)后數(shù)據(jù)不會(huì)丟失問題,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-10-10詳解Android應(yīng)用中ListView列表選項(xiàng)欄的編寫方法
這篇文章主要介紹了Android應(yīng)用中ListView列表選項(xiàng)欄的編寫方法,講解了使用安卓自帶的ListView與自定義multiple ListView的方法,需要的朋友可以參考下2016-03-03Android實(shí)現(xiàn)登陸頁logo隨鍵盤收放動(dòng)態(tài)伸縮(完美解決鍵盤彈出遮擋控件的問題)
這篇文章主要介紹了Android實(shí)現(xiàn)登陸頁logo隨鍵盤收放動(dòng)態(tài)伸縮(完美解決鍵盤彈出遮擋控件的問題)的相關(guān)資料,本文介紹的非常詳細(xì),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-09-09Android性能優(yōu)化之線程監(jiān)控與線程統(tǒng)一詳解
這篇文章主要為大家介紹了Android性能優(yōu)化之線程監(jiān)控與線程統(tǒng)一詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-09-09Kotlin協(xié)程Dispatchers原理示例詳解
這篇文章主要為大家介紹了Kotlin協(xié)程Dispatchers原理示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08Android編程使用Intent傳遞對(duì)象的方法分析
這篇文章主要介紹了Android編程使用Intent傳遞對(duì)象的方法,結(jié)合實(shí)例形式詳細(xì)分析了Android使用Intent實(shí)現(xiàn)傳遞對(duì)象的相關(guān)技巧與注意事項(xiàng),需要的朋友可以參考下2016-01-01