首页 > 代码库 > 查询android中各个应用的缓存
查询android中各个应用的缓存
如何查询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中各个应用的缓存
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。