標籤:android style blog io color sp div on 問題
如何查詢android手機中各個應用的緩衝,很多手機衛士都有這個功能,但是從官方文檔中找不到相應的api,那麼問題就來了。。。如何?這個功能?android開源的好處就是你可以翻系統源碼,找到系統中設定的源碼,系統設定中的應用詳情裡面就有緩衝大小。從源碼中可以看到Setting應用是調用的PackageManager中的getPackageSizeInfo方法,該方法接受兩個參數,一個是包名,一個是名為IPackageStatsObserver的aidl對象,那麼我們匯入IPackageStatsObserver這個aidl到我們的工程下面,發現IPackageStatsObserver還需要一個名為PackageStats的aidl,同樣匯入。
研究PackageManager發現getPackageSizeInfo方法只能系統調用,如何解決?反射唄,好了問題解決了代碼如下:
1 public class CleanCatchActivity extends Activity { 2 @Override 3 protected void onCreate(Bundle savedInstanceState) { 4 5 super.onCreate(savedInstanceState); 6 setContentView(R.layout.activity_cleancache); 7 PackageManager pm = getPackageManager(); 8 Class pckclass = PackageManager.class; 9 try {10 Method method = pckclass.getMethod("getPackageSizeInfo", String.class,IPackageStatsObserver.class);11 method.invoke(pm, "cn.chai.mobilesafe",ipso);12 } catch (Exception e) {13 e.printStackTrace();14 }15 16 17 }18 19 IPackageStatsObserver.Stub ipso = new IPackageStatsObserver.Stub() {20 21 @Override22 public void onGetStatsCompleted(PackageStats pStats, boolean succeeded)23 throws RemoteException {24 25 System.out.println(pStats.cacheSize);26 System.out.println(pStats.dataSize);27 }28 };29 30 31 }
從onGetStatsCompleted這個回調方法中的packagestats方法就可以得到該應用的所有緩衝資訊。
查詢android中各個應用的緩衝