(原)android4.2以后获取应用程序和缓存大小的方法(源码有改变)
以前获取应用的大小是用
PackageManager mPackageManager= getPackageManager();
try {Method getPackageSizeInfoMethod = PackageManager.class.getDeclaredMethod("getPackageSizeInfo", String.class,
IPackageStatsObserver.class);
getPackageSizeInfoMethod.invoke(mPackageManager, packageInfo.packageName,new MyObserver());
} catch (Exception e) {
}
class MyObserver extends IPackageStatsObserver.Stub {
@Override
public void onGetStatsCompleted(PackageStats pStats, boolean succeeded)
throws RemoteException {
long cacheSize = pStats.cacheSize;
String packageName = pStats.packageName;
String formatFileSize = Formatter.formatFileSize(
getApplicationContext(), cacheSize);
System.out.println(packageName + ":" + formatFileSize);
}
}
但在4.2后 PackageManager.getPackageSizeInfo(String packageName, IPackageStatsObserver observer)不可用,
改为PackageManager.getPackageSizeInfo(String packageName, int userHandle, IPackageStatsObserver observer),
至于增加的参数userHandle的解释是:The user whose size information should be retrieved。
这个userHandle怎么来? 通过系统类的UserHandle.myUserId()获取;
Method myUserId = UserHandle.class.getDeclaredMethod("myUserId");
int userID = (Integer) myUserId.invoke(mPackageManager,null);
获取了以后就可以使用新的getPackageSizeInfo函数了。
getPackageSizeInfoMethod.invoke(mPackageManager,packageInfo.packageName, userID, new MyObserver()
);
(原)android4.2以后获取应用程序和缓存大小的方法(源码有改变)的更多相关文章
- 从原子类和Unsafe来理解Java内存模型,AtomicInteger的incrementAndGet方法源码介绍,valueOffset偏移量的理解
众所周知,i++分为三步: 1. 读取i的值 2. 计算i+1 3. 将计算出i+1赋给i 可以使用锁来保持操作的原子性和变量可见性,用volatile保持值的可见性和操作顺序性: 从一个小例子引发的 ...
- ASP.NET程序读取二代身份证(附源码)
原文:ASP.NET程序读取二代身份证(附源码) 一般来说winform应用程序解决这个问题起来时很容易的,web应用程序就麻烦一点了. 这里我说说我的解决思路: 一.你必要有联机型居民身份证阅读器一 ...
- Android中获取应用程序(包)的大小-----PackageManager的使用(二)
通过第一部分<<Android中获取应用程序(包)的信息-----PackageManager的使用(一)>>的介绍,对PackageManager以及 AndroidMani ...
- Android实现获取应用程序相关信息列表的方法
本文所述为Androdi获取手机应用列表的方法,比如获取到Android应用的软件属性.大小和应用程序路径.应用名称等,获取所有已安装的Android应用列表,包括那些卸载了的,但没有清除数据的应用程 ...
- 告别硬编码-发个获取未导出函数地址的Dll及源码
还在为找内核未导出函数地址而苦恼嘛? 还在为硬编码通用性差而不爽吗? 还在为暴搜内核老蓝屏而痛苦吗? 请看这里: 最近老要用到内核未导出的函数及一些结构,不想再找特征码了,准备到网上找点符号文件解析的 ...
- 工作5年的Java程序员,才学会阅读源码,可悲吗?
最近一位5年开发经验的群友与我聊天 他说:最近慢慢的尝试去看spring的源码,学习spring,以前都只是会用就行了,但是越是到后面,发现只懂怎么用还不够,在面试的时候经常被问到一些开源框架的源码问 ...
- 微信小程序 跳一跳 外挂 C# winform源码
昨天微信更新了,出现了一个小游戏“跳一跳”,玩了一下 赶紧还蛮有意思的 但纯粹是拼手感的,玩了好久,终于搞了个135分拿了个第一名,没想到过一会就被朋友刷下去了,最高的也就200来分把,于是就想着要是 ...
- 微信小程序初探(二):阅读官方demo源码
阅读demo有助于理解逻辑,而且demo源码中应该包含了框架开发人员想要表达的意思的精华,先从app.js着手来阅读. 附带贴下说明: https://mp.weixin.qq.com/debug/w ...
- 《编写高质量代码:改善C#程序的157个建议》源码下载
==== 目录 前 言第一部分 语言篇第1章 基本语言要素 / 2建议1:正确操作字符串 / 2建议2:使用默认转型方法 / 6建议3:区别对待强制转型与as和is / 9建议4:TryParse比P ...
随机推荐
- 使用 OAuth2-Server-php 在 Yii 框架上搭建 OAuth2 Server
原文转自 http://www.cnblogs.com/ldms/p/4565547.html Yii 有很多 extension 可以使用,在查看了 Yii 官网上提供的与 OAuth 相关的扩展后 ...
- 关于ref的一点理解
先写一段代码 class Test { public int Count { get; set; } } static void Main(string[] args) { Test test = } ...
- java基础小知识
1.1常量: 基本数据类型常量 字符常量 整数常量的表现形式:一进制的形式来表示(二进制,八进制,十进制,十六进制) 生活中:十进制(0-9) ,星期(七进制(0-6)) ,时间(十二进制(0-11 ...
- android环境配置
1.计算机右键点击属性 2.点击高级系统设置 3.选择高级——>选择环境变量 4.点击系统变量下的新建 1)新建ANDROID_HOME:你的sdk所在的目录 2)新建JAVA_HOME:C:\ ...
- 数据解析(XML和JSON数据结构)
一 解析 二 XML数据结构 三 JSON 数据结构 一 解析 1 定义: 从事先规定好的格式中提取数据 解析的前提:提前约定好格式,数据提供方按照格式提供数据.数据获取方则按照 ...
- win10删除或更改需要SYSTEM或Administrators权限的文件夹
有时候我们需要删除一些系统文件夹或者文件,但是却经常会出现如下提示: 遇到这些情况,我们可以采用如下的解决手段. 一.右键单击需要更改或删除的文件夹,选择属性. 二.在弹出的窗口菜单里,选择“安全”选 ...
- commonJS
摘自阮一峰博客:http://javascript.ruanyifeng.com/nodejs/module.html 目录 概述 module对象 module.exports属性 exports变 ...
- Ruby 方法
Ruby 方法 Ruby 方法与其他编程语言中的函数类似.Ruby 方法用于捆绑一个或多个重复的语句到一个单元中. 方法名应以小写字母开头.如果您以大写字母作为方法名的开头,Ruby 可能会把它当作常 ...
- shh(struts+spring+Hibernate)的搭建
一.Struts 一.struts的流程 (1)首先,用户在地址栏中输入你的项目访问路径,然后这个请求会发送到服务器,服务器先找到要web.xml的,给web.xml中配置了一个filter过滤器,过 ...
- 2016HUAS_ACM暑假集训4B - 递推
这种数学推理题目题意极其明显,在做的时候,可以多写几组,这样找起规律来会容易些.概括起来就是:题意简单暴力,案例毫无价值. 一个三角形最多可以把一个平面分成两部分,两个三角形最多是8(2+6)部分,而 ...