Android--获取App应用程序的大小
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应用程序的大小相关推荐
- 格式android id,android 获取APP的唯一标识applicationId的实例
使用getIdentifier()方法可以方便的获各应用包下的指定资源ID. 方式一 int indentify = getResources().getIdentifier("com.te ...
- android 获取MP4文件的图片大小
今天,简单讲讲怎么获取MP4视频的每一帧的图片大小. android使用 MediaMetadataRetriever 获取视频文件的 总时长 和视频的分辨率. 根据该方式获取视频信息可以看出不仅仅可 ...
- Android app 标签,android 获取APP的唯一标识applicationId的实例
使用getIdentifier()方法可以方便的获各应用包下的指定资源ID. 方式一 int indentify = getResources().getIdentifier("com.te ...
- Android 获取App应用、缓存、数据等大小适配8.0(仿微信存储空间)
一.前言 二.效果预览 三.实现步骤 (1)开启权限 (2)AIDL文件导入 (3)引用工具类 (4)使用方式 四.功能分解 (1)单例模式 (2)设置监听数据获取回调 (3)开始获取数据 五.Dem ...
- Android 获取app 地址,获取手机设备信息、app版本信息、ip地址
获取手机设备的相关信息,如IMEI.IMSI.型号.厂商等.通过plus.device获取设备信息管理对象. 获取当前运行环境信息.与其它程序进行通讯等.通过plus.runtime可获取运行环境管理 ...
- android获取app内存信息,Android 获取内存信息(RAM,ROM)
一.RAM,ROM简单介绍 RAM为运行内存,比如,360手机助手的悬浮窗,经常提示的运行内存超过80%之类的,指的都是运行内存.一般大小为几个G. ROM为存储数据的内存,比如,爱奇艺APP在视频页 ...
- AppInfoUtil 获取App应用程序信息工具类
这段时间在写快速开发框架,抽空总结了一下网上的获取App信息的工具,相对来说比较灵活. 参数为Context context 能够获取应用名称,应用包名,版本号,版本名称,签名,应用图标 packag ...
- android 模拟器目录,Android 获取APP 文件目录 模拟器检测
1. 获取app 目录 context.getFilesDir() Android 6.0的分身应用为了能与原应用区分开来,会更改手机的UserId,默认手机的UserId为0. 获取到的App应用位 ...
- Android 获取 App 累积时长
code小生 一个专注大前端领域的技术平台公众号回复Android加入安卓技术群 作者:淮左明都 链接:https://www.jianshu.com/p/ec8627fe3fd7 声明:本文已获淮左 ...
- Android 获取App可用内存
以下就是获取App 内存的代码: int M = 1024*1024;Runtime r = Runtime.getRuntime();LogUtil.fussenLog().d("最大可用 ...
最新文章
- 云效(原RDC)如何构建一个基于Maven的Java项目
- 在URL地址栏中显示ico
- 【Matlab 控制】利用 Matlab Function 绘制分段函数
- python templates_python templates在哪
- C++含有无符号类型的表达式的计算
- 模拟银行转账(java+mysql+tomcat +JDBC+ druid连接池 + Servlet + Ajax)
- Python UI自动化 编程(一) UIAutomation
- 氨基酸序列碎裂by离子-生物信息学笔记
- ES查询结果全局高亮
- android音视频播放技术背景,Android音视频开发-入门(一)
- 苹果开发者账号申请的一些事
- arcgis快速生成图框_arcgis图框的制作
- Dev C++ 英文模式改成中文模式
- 微信小程序商城(微店)系统部署及搭建 电商类
- twitter如何以图搜图_没有完整图时,如何使用图深度学习?你需要了解流形学习2.0版本...
- 浅谈网络地址转换(NAT)技术与内网、外网
- 基于springboot的中国国家图书馆管理系统项目(管理功能)
- matlab diary on,matlab-dlmwrite跟diary输出数据
- 局域网下Windows暴露redis
- 高频交易真的提高了市场流动性吗?
热门文章
- 软考信息系统项目管理师_历年真题_2020下半年错题集_上午综合知识题---软考高级之信息系统项目管理师036
- 大数据之-Hadoop3.x_MapReduce_排序概述---大数据之hadoop3.x工作笔记0114
- 大数据之-Hadoop完全分布式_集群群起_同时启动上万台集群机器---大数据之hadoop工作笔记0037
- k8s高可用集群_搭建高可用集群(部署haproxy和安装docker以及其他组件)---K8S_Google工作笔记0056
- C#程序读取MAC地址的方法
- JSF学习笔记--JSF简介,JSF第一个应用程序
- 视讯稳定对接出现的问题
- 经典线程同步 信号量Semaphore
- web.xml 配置404和500错误的自定义页面
- ON_COMMAND和ON_MESSAGE的区别