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

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

/*** 作用:-----获取包的大小-----* @param context 上下文* @param pkgName app的包名* @param appInfo 实体类,用于存放App的某些信息*/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() {@Overridepublic 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文件***************

/* //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);
}

新人学习中,也不太会总结,有做的不对的地方希望各位大神指出,谢谢。

Android--获取App应用程序的大小相关推荐

  1. 格式android id,android 获取APP的唯一标识applicationId的实例

    使用getIdentifier()方法可以方便的获各应用包下的指定资源ID. 方式一 int indentify = getResources().getIdentifier("com.te ...

  2. android 获取MP4文件的图片大小

    今天,简单讲讲怎么获取MP4视频的每一帧的图片大小. android使用 MediaMetadataRetriever 获取视频文件的 总时长 和视频的分辨率. 根据该方式获取视频信息可以看出不仅仅可 ...

  3. Android app 标签,android 获取APP的唯一标识applicationId的实例

    使用getIdentifier()方法可以方便的获各应用包下的指定资源ID. 方式一 int indentify = getResources().getIdentifier("com.te ...

  4. Android 获取App应用、缓存、数据等大小适配8.0(仿微信存储空间)

    一.前言 二.效果预览 三.实现步骤 (1)开启权限 (2)AIDL文件导入 (3)引用工具类 (4)使用方式 四.功能分解 (1)单例模式 (2)设置监听数据获取回调 (3)开始获取数据 五.Dem ...

  5. Android 获取app 地址,获取手机设备信息、app版本信息、ip地址

    获取手机设备的相关信息,如IMEI.IMSI.型号.厂商等.通过plus.device获取设备信息管理对象. 获取当前运行环境信息.与其它程序进行通讯等.通过plus.runtime可获取运行环境管理 ...

  6. android获取app内存信息,Android 获取内存信息(RAM,ROM)

    一.RAM,ROM简单介绍 RAM为运行内存,比如,360手机助手的悬浮窗,经常提示的运行内存超过80%之类的,指的都是运行内存.一般大小为几个G. ROM为存储数据的内存,比如,爱奇艺APP在视频页 ...

  7. AppInfoUtil 获取App应用程序信息工具类

    这段时间在写快速开发框架,抽空总结了一下网上的获取App信息的工具,相对来说比较灵活. 参数为Context context 能够获取应用名称,应用包名,版本号,版本名称,签名,应用图标 packag ...

  8. android 模拟器目录,Android 获取APP 文件目录 模拟器检测

    1. 获取app 目录 context.getFilesDir() Android 6.0的分身应用为了能与原应用区分开来,会更改手机的UserId,默认手机的UserId为0. 获取到的App应用位 ...

  9. Android 获取 App 累积时长

    code小生 一个专注大前端领域的技术平台公众号回复Android加入安卓技术群 作者:淮左明都 链接:https://www.jianshu.com/p/ec8627fe3fd7 声明:本文已获淮左 ...

  10. Android 获取App可用内存

    以下就是获取App 内存的代码: int M = 1024*1024;Runtime r = Runtime.getRuntime();LogUtil.fussenLog().d("最大可用 ...

最新文章

  1. 云效(原RDC)如何构建一个基于Maven的Java项目
  2. 在URL地址栏中显示ico
  3. 【Matlab 控制】利用 Matlab Function 绘制分段函数
  4. python templates_python templates在哪
  5. C++含有无符号类型的表达式的计算
  6. 模拟银行转账(java+mysql+tomcat +JDBC+ druid连接池 + Servlet + Ajax)
  7. Python UI自动化 编程(一) UIAutomation
  8. 氨基酸序列碎裂by离子-生物信息学笔记
  9. ES查询结果全局高亮
  10. android音视频播放技术背景,Android音视频开发-入门(一)
  11. 苹果开发者账号申请的一些事
  12. arcgis快速生成图框_arcgis图框的制作
  13. Dev C++ 英文模式改成中文模式
  14. 微信小程序商城(微店)系统部署及搭建 电商类
  15. twitter如何以图搜图_没有完整图时,如何使用图深度学习?你需要了解流形学习2.0版本...
  16. 浅谈网络地址转换(NAT)技术与内网、外网
  17. 基于springboot的中国国家图书馆管理系统项目(管理功能)
  18. matlab diary on,matlab-dlmwrite跟diary输出数据
  19. 局域网下Windows暴露redis
  20. 高频交易真的提高了市场流动性吗?

热门文章

  1. 软考信息系统项目管理师_历年真题_2020下半年错题集_上午综合知识题---软考高级之信息系统项目管理师036
  2. 大数据之-Hadoop3.x_MapReduce_排序概述---大数据之hadoop3.x工作笔记0114
  3. 大数据之-Hadoop完全分布式_集群群起_同时启动上万台集群机器---大数据之hadoop工作笔记0037
  4. k8s高可用集群_搭建高可用集群(部署haproxy和安装docker以及其他组件)---K8S_Google工作笔记0056
  5. C#程序读取MAC地址的方法
  6. JSF学习笔记--JSF简介,JSF第一个应用程序
  7. 视讯稳定对接出现的问题
  8. 经典线程同步 信号量Semaphore
  9. web.xml 配置404和500错误的自定义页面
  10. ON_COMMAND和ON_MESSAGE的区别