跟着教程去写获得缓存的逻辑。但是死活不出现。查了一下log说我参数不对。

然后看了看源码。和教程的不一样。多了一个参数。UserHandle.myUserId()。查了一下,发写法

新写法:

Method myUserId = UserHandle.class.getDeclaredMethod("myUserId");  //先获得这个userid(我也不太清楚是干嘛的,稍后我查查)

int userID = (Integer) myUserId.invoke(pm,null);  //pm是packagemanager。自己getpackagemanager就好了

getPackageSizeInfoMethod.invoke(pm,info.packageName,userID,new MyDataObserver());  //info.packagename是包名  mydataobserver是实现类。自己完成回调函数

//回调函数参考

private class MyDataObserver extends IPackageStatsObserver.Stub {

@Override
public void onGetStatsCompleted(PackageStats pStats, boolean succeeded)
throws RemoteException {
final long cache = pStats.cacheSize;
long code = pStats.codeSize;
long data = pStats.dataSize;
String packageName = pStats.packageName;
final ApplicationInfo appinfo;
try {
appinfo = pm.getApplicationInfo(packageName, 0);

runOnUiThread(new Runnable() {
public void run() {
tv_scan_status.setText("正在扫描:" + appinfo.loadLabel(pm));
if (cache > 0) {
TextView tv = new TextView(getApplicationContext());
tv.setText(appinfo.loadLabel(pm)
+ "-缓存大小:"
+ Formatter.formatFileSize(
getApplicationContext(), cache));
tv.setTextColor(Color.BLACK);
ll_container.addView(tv, 0);
}
}
});
} catch (NameNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

}

转载于:https://www.cnblogs.com/lemniscate317/p/5267212.html

PackageManager.getPackageSizeInfo||UserHandle.myUserId()相关推荐

  1. Android 查询及设置悬浮窗权限(AppOpsManager )

    需求确认: 最近产品在系统升级方面加了一个强制升级的需求,安装完成后需要通过dialog提示用户重启,如果当即拒绝,一个小时后继续弹出此dialog. 问题场景: 首先想到的是通过AlarManage ...

  2. java.lang.NoSuchMethodException: getPackageSizeInfo

    在手机卫士中,有缓存清理的功能,代码如下 private void getAppCacheSize(String packageName) {Class clazz = pm.getClass();/ ...

  3. 利用IPackageManager接口进行缓存垃圾清理(释放存储)

    利用IPackageManager接口进行缓存垃圾清理 获取IPackageManager getPackageSizeInfo方法介绍 freeStorageAndNotify方法释放存储空间 cl ...

  4. Android10.0 四大组件与进程启动间关系

    原文地址:https://skytoby.github.io/2019/Android%E5%9B%9B%E5%A4%A7%E7%BB%84%E4%BB%B6%E4%B8%8E%E8%BF%9B%E7 ...

  5. Android10.0 ContentProvider原理分析

    原文地址:https://skytoby.github.io/2019/ContentProvider%E5%8E%9F%E7%90%86%E5%88%86%E6%9E%90/ 基于Android10 ...

  6. 【Android 安全】DEX 加密 ( Application 替换 | 分析 ContentProvider 组件中调用 getApplication() 获取的 Application )

    文章目录 一. ContentProvider 创建过程分析 二. ActivityThread 中的 H 处理 BIND_APPLICATION 消息 三. ActivityThread 中的 ha ...

  7. Android 插件化原理解析——插件加载机制

    上文 Activity生命周期管理 中我们地完成了『启动没有在AndroidManifest.xml中显式声明的Activity』的任务:通过Hook AMS和拦截ActivityThread中H类对 ...

  8. android6.0源码分析之AMS服务源码分析

    activitymanagerservice服务源码分析 1.ActivityManagerService概述 ActivityManagerService(以下简称AMS)作为Android中最核心 ...

  9. android settings源代码分析(2)

    通过前一篇文章  Android settings源代码分析(1)  分析,大概知道了Settings主页面是如何显示,今天主要分析"应用"这一块google是如何实现的. 应用对 ...

  10. Android开发中常见的设计模式

    对于开发人员来说,设计模式有时候就是一道坎,但是设计模式又非常有用,过了这道坎,它可以让你水平提高一个档次.而在android开发中,必要的了解一些设计模式又是非常有必要的.对于想系统的学习设计模式的 ...

最新文章

  1. 面试官再问你 HashMap 底层原理,就把这篇文章甩给他看
  2. 谷歌浏览器扩展开发笔记
  3. 7-36 旅游规划 (25 分(Dijkstra)
  4. 【追加功能】OFFICE插件管理工具重整后再上路,更好用易用。
  5. 如何做到服务器虚拟化_尽可能地做到无服务器,但不止于此
  6. 1.4.在TypeScript中使用JQuery
  7. wx.checkjsapi是写在config里面吗_用Python写一个程序,解密游戏内抽奖的秘密
  8. 信度spss怎么做_实用干货!信度分析超全步骤总结!
  9. react-native获取农历日期和二十四节气
  10. 转载:联想小新进入BIOS方法
  11. linux驱动开发简单示例
  12. tar.gz和tar.xz的解压方法及解压命令说明
  13. php链接mysql 老是die_php连接MySQL时, 为什么die(错误信息: . $conn-connect_error) 不返回错误信息?...
  14. 华为操作系统鸿蒙 hms生态系统,华为HMS生态系统服务是什么 鸿蒙操作系统机会来了...
  15. 你真的足够了解Wi-Fi吗?
  16. 海蜘蛛路由免费版也可以看流量
  17. 【Rust】我该用什么软件开发 Rust | 常用支持 Rust 的编辑器推荐
  18. Linux切换管理员
  19. Excel如何批量为空白单元格填充下方非空数据值
  20. MapReduce和YARN区别

热门文章

  1. Centos / Ubuntu /linux/mac JAVA 环境变量设置
  2. VBS 控制 Windos 系统音量 及视频播放
  3. android activity使用,Android Activity使用拾遗
  4. 阶段5 3.微服务项目【学成在线】_day02 CMS前端开发_19-CMS前端页面查询开发-页面原型-Table组件测试...
  5. 阶段5 3.微服务项目【学成在线】_day02 CMS前端开发_15-webpack研究-webpack-dev-server-程序调试...
  6. 20. Valid Parentheses[E]有效的括号
  7. 网站限制IP访问应该怎么办
  8. [试题]Python大赛部分答案
  9. HDU2072 tri树/map/set/字符串hash
  10. 20169217 2016-2017-2 《网络攻防实践》第四周学习总结