栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 移动开发 > Android

Android获取app应用程序大小的方法

Android 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Android获取app应用程序大小的方法

Android对这种方法进行了封装,我们没有权限去调用这个方法,所以我们只能通过AIDL,然后利用Java的反射机制去调用系统级的方法。

下面上代码:(注释比较详细)


 public static void getPkgSize(final Context context, String pkgName, final PhoneAppInfo appInfo) {
  // getPackageSizeInfo是PackageManager中的一个private方法,所以需要通过反射的机制来调用
  Method method;
  try {
   method = PackageManager.class.getMethod("getPackageSizeInfo",
     new Class[]{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 {
if (succeeded && pStats != null) {
 synchronized (PhoneAppInfo.class) {
  appInfo.setCatchSize(pStats.cacheSize);//缓存大小
  appInfo.setDataSize(pStats.dataSize); //数据大小
  appInfo.setCodeSize(pStats.codeSize); //应用大小
  appInfo.setAppSize(pStats.cacheSize + pStats.codeSize + pStats.dataSize);//应用的总大小
  Log.d("asdasdxx",appInfo.getAppSize()+"");
 }
}
      }
     });
  } catch (NoSuchMethodException | InvocationTargetException | IllegalAccessException e) {
   e.printStackTrace();
  }
 }

下面是两个AIDL文件的代码。。。

步骤(Android Studio):

1、在main文件夹下,建立一个aidl文件夹的文件夹

2、建立一个包,包名为android.content.pm

3、结构图

   *******PackageStats.aidl文件***************


package android.content.pm;
parcelable PackageStats;

****************IPackageStatusObserver.aidl******************


package android.content.pm;
import android.content.pm.PackageStats;

oneway interface IPackageStatsObserver {
 void onGetStatsCompleted(in PackageStats pStats, boolean succeeded);
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/164026.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号