您现在的位置是:首页 > 文章详情

Android--获取apk大小

日期:2018-08-29点击:412
版权声明:本文为博主原创文章,转载请标明出处。 https://blog.csdn.net/chaoyu168/article/details/82226830
//获取apk大小 public static String getPkgSize(final Context context, String pkgName) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException { // getPackageSizeInfo是PackageManager中的一个private方法,所以需要通过反射的机制来调用 Method method = PackageManager.class.getMethod("getPackageSizeInfo", String.class, IPackageStatsObserver.class); // 调用 getPackageSizeInfo 方法,需要两个参数:1、需要检测的应用包名;2、回调 method.invoke(context.getPackageManager(), pkgName, new IPackageStatsObserver.Stub() { @Override public void onGetStatsCompleted(PackageStats pStats, boolean succeeded) throws RemoteException { // 子线程中默认无法处理消息循环,自然也就不能显示Toast,所以需要手动Looper一下 Looper.prepare(); // 从pStats中提取各个所需数据 // Toast.makeText(context, "缓存大小=" + Formatter.formatFileSize(context, pStats.cacheSize) + // "\n数据大小=" + Formatter.formatFileSize(context, pStats.dataSize) + // "\n程序大小=" + Formatter.formatFileSize(context, pStats.codeSize), // Toast.LENGTH_LONG).show(); // 遍历一次消息队列,弹出Toast long totalsize1 = pStats.cacheSize + pStats.dataSize + pStats.codeSize; DecimalFormat df=new DecimalFormat("0.00"); totalsize = df.format(Double.valueOf(totalsize1 /1024/ 1024D)); Looper.loop(); } }); return totalsize; }

添加权限:

<uses-permission android:name="android.permission.GET_PACKAGE_SIZE"/> 

目录结构为上图:

1、创建包:android.content.pm

2、创建两个AIDL文件IPackageStatsObserver.aidl 、PackageStats.aidl

AIDL下载地址:https://download.csdn.net/download/chaoyu168/10636731

原文链接:https://yq.aliyun.com/articles/631433
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章