Android获取 应用程序大小,数据大小,缓存大小
发布日期:2021-08-21 02:35:27 浏览次数:9 分类:技术文章

本文共 5172 字,大约阅读时间需要 17 分钟。

      在项目中创建,android.content.pm 包名。里面创建两个aidl文件。PackageStats.aidl  和 IPackageStatsObserver.aidl。

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;

 

IPackageStatsObserver.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);}

 

1  import android.app.Activity; 2 import android.content.pm.IPackageStatsObserver; 3 import android.content.pm.PackageManager; 4 import android.content.pm.PackageStats; 5 import android.os.Bundle; 6 import android.os.Handler; 7 import android.os.Message; 8 import android.widget.TextView; 9 10 public class MainActivity extends Activity {11     12     private TextView tv;13     private static final String ATTR_PACKAGE_STATS = "PackageStats";14 15     @Override16     public void onCreate(Bundle savedInstanceState) {17         super.onCreate(savedInstanceState);18         19         tv = new TextView(this);20         21         setContentView(tv);22         23         getpkginfo("com.xj.notebook");24     }25 26     private Handler mHandler = new Handler() {27         public void handleMessage(Message msg) {28             switch (msg.what) {29             case 1:30                 String infoString = "";31                 PackageStats newPs = msg.getData().getParcelable(32                         ATTR_PACKAGE_STATS);33                 if (newPs != null) {34                     infoString += "应用程序大小: " + formatFileSize(newPs.codeSize);35                     infoString += "\n数据大小: " + formatFileSize(newPs.dataSize);36                     infoString += "\n缓存大小: " + formatFileSize(newPs.cacheSize);37                 }38                 tv.setText(infoString);39                 break;40             default:41                 break;42             }43         }44     };45 46     public void getpkginfo(String pkg) {47         PackageManager pm = getPackageManager();48         try {49             Method getPackageSizeInfo = pm.getClass().getMethod(50                     "getPackageSizeInfo", String.class,51                     IPackageStatsObserver.class);52             getPackageSizeInfo.invoke(pm, pkg, new PkgSizeObserver());53         } catch (Exception e) {54         }55     }56 57     class PkgSizeObserver extends IPackageStatsObserver.Stub {58         public void onGetStatsCompleted(PackageStats pStats, boolean succeeded) {59             Message msg = mHandler.obtainMessage(1);60             Bundle data = new Bundle();61             data.putParcelable(ATTR_PACKAGE_STATS, pStats);62             msg.setData(data);63             mHandler.sendMessage(msg);65         }66     }67 68     /**69      * 获取文件大小70      */71     public static String formatFileSize(long length) {72         String result = null;73         int sub_string = 0;74         if (length >= 1073741824) {75             sub_string = String.valueOf((float) length / 1073741824).indexOf(76                     ".");77             result = ((float) length / 1073741824 + "000").substring(0,78                     sub_string + 3) + "GB";79         } else if (length >= 1048576) {80             sub_string = String.valueOf((float) length / 1048576).indexOf(".");81             result = ((float) length / 1048576 + "000").substring(0,82                     sub_string + 3) + "MB";83         } else if (length >= 1024) {84             sub_string = String.valueOf((float) length / 1024).indexOf(".");85             result = ((float) length / 1024 + "000").substring(0,86                     sub_string + 3) + "KB";87         } else if (length < 1024)88             result = Long.toString(length) + "B";89         return result;90     }91 }

 

 

转载地址:https://blog.csdn.net/weixin_33708432/article/details/86321764 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:M面经Prepare: Positive-Negative partitioning preserving order
下一篇:POJ 1742 Coins ( 单调队列解法 )

发表评论

最新留言

网站不错 人气很旺了 加油
[***.192.178.218]2024年03月05日 03时42分03秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

oracle12c官方文档中文版_三分钟让你真正读懂oracle12c 中cdb pdb概念及原理 2019-04-21
windows tcp端口占满_TCP与UDP分析、三次握手四次断开、DDOS 2019-04-21
php70w mysql.x8664_LAMP环境的搭建(三)----PHP7的安装 2019-04-21
二分查找的平均查找长度_二分查找 2019-04-21
所有controller interceptor_阿里二面:filter、interceptor、aspect应如何选择?很多人中招... 2019-04-21
mysql 主码和外码_关系数据库中,外码(ForeignKey)是()。_学小易找答案 2019-04-21
mysql数据生产数据分析_基于MySQL玩转SQL数据分析课程 互联网数据分析师-SQL数据分析实战视频教程... 2019-04-21
mysql数控不小心被删_mysql 数据库信息不小心被删除了, 请问能恢复么 2019-04-21
python mysqldb 安装_python MySQLdb安装和使用 2019-04-21
oracle重启 日志_超详细的数据库主机及数据库日志收集总结 2019-04-21
python语句分为复合语句与_对Python中for复合语句的使用示例讲解 2019-04-21
linux终端安装mingw编译器_C/C++编译器MinGW的安装与配置 2019-04-21
lua 区间比较_TI-Lua 系列教程2.4.1: 条件分支 2019-04-21
mysql同时多表插入_MySQL多表同时插入 2019-04-21
postman delete 请求传递数组_Postman请求方法 2019-04-21
基于mysql学生签到_Java swing mysql学生签到考勤系统附带完整源码及开发视频 2019-04-21
go mysql 多并发_MySQL并发处理-Go语言中文社区 2019-04-21
mysql定义变量字符串类型_mysqli_stmt :: bind_param():类型定义字符串中的元素数量与绑定变量的数量不匹配... 2019-04-21
mysql测试数据100w_利用MySQL存储过程批量插入100W条测试数据 2019-04-21
python 内存溢出能捕获吗_Python内存泄漏和内存溢出的解决方案 2019-04-21