Android获取 应用程序大小,数据大小,缓存大小
在项目中创建,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);
}
import android.app.Activity;
import android.content.pm.IPackageStatsObserver;
import android.content.pm.PackageManager;
import android.content.pm.PackageStats;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.widget.TextView; public class MainActivity extends Activity { private TextView tv;
private static final String ATTR_PACKAGE_STATS = "PackageStats"; @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); tv = new TextView(this); setContentView(tv); getpkginfo("com.xj.notebook");
} private Handler mHandler = new Handler() {
public void handleMessage(Message msg) {
switch (msg.what) {
case 1:
String infoString = "";
PackageStats newPs = msg.getData().getParcelable(
ATTR_PACKAGE_STATS);
if (newPs != null) {
infoString += "应用程序大小: " + formatFileSize(newPs.codeSize);
infoString += "\n数据大小: " + formatFileSize(newPs.dataSize);
infoString += "\n缓存大小: " + formatFileSize(newPs.cacheSize);
}
tv.setText(infoString);
break;
default:
break;
}
}
}; public void getpkginfo(String pkg) {
PackageManager pm = getPackageManager();
try {
Method getPackageSizeInfo = pm.getClass().getMethod(
"getPackageSizeInfo", String.class,
IPackageStatsObserver.class);
getPackageSizeInfo.invoke(pm, pkg, new PkgSizeObserver());
} catch (Exception e) {
}
} class PkgSizeObserver extends IPackageStatsObserver.Stub {
public void onGetStatsCompleted(PackageStats pStats, boolean succeeded) {
Message msg = mHandler.obtainMessage(1);
Bundle data = new Bundle();
data.putParcelable(ATTR_PACKAGE_STATS, pStats);
msg.setData(data);
mHandler.sendMessage(msg);
}
} /**
* 获取文件大小
*/
public static String formatFileSize(long length) {
String result = null;
int sub_string = 0;
if (length >= 1073741824) {
sub_string = String.valueOf((float) length / 1073741824).indexOf(
".");
result = ((float) length / 1073741824 + "000").substring(0,
sub_string + 3) + "GB";
} else if (length >= 1048576) {
sub_string = String.valueOf((float) length / 1048576).indexOf(".");
result = ((float) length / 1048576 + "000").substring(0,
sub_string + 3) + "MB";
} else if (length >= 1024) {
sub_string = String.valueOf((float) length / 1024).indexOf(".");
result = ((float) length / 1024 + "000").substring(0,
sub_string + 3) + "KB";
} else if (length < 1024)
result = Long.toString(length) + "B";
return result;
}
}
<uses-permission android:name="android.permission.GET_PACKAGE_SIZE"/>
Android获取 应用程序大小,数据大小,缓存大小的更多相关文章
- Android学习--跨程序共享数据之内容提供其探究
什么是内容提供器? 跨程序共享数据之内容提供器,这是个什么功能?看到这个名称的时候最能给我们提供信息的应该是“跨程序”这个词了,是的重点就是这个词,这个内容提供器的作用主要是用于在不同的引用程序之间实 ...
- Android获取应用程序的信息
1.获取应用程序的版本号: private String getAppVersionName() { String versionName = ""; try { PackageM ...
- android 获取Bitmap位图所占用的内存大小
今天在看Universal-Image-Loader源码的时候,在对图片的超过用户在所设的阈值的时候,系统会调用GC将LinkHashMap比较靠底层的图片引用去掉,这里涉及到一个技术单个图片的文图大 ...
- android 获取http请求json数据
package com.my.gethttpjsondata; import java.io.BufferedReader;import java.io.ByteArrayOutputStream;i ...
- android——实现跨程序访问数据
使用之前的SQLite存储的应用程序.首先需要在这个应用程序中创建内容提供器,右击com.example.administrator.exp7包→New→Other→Content Provider, ...
- Android获取OneNET云平台数据
尝试HttpURLConnection "get"方式获取了www.baidu.com的数据后,试着获取OneNET云平台的设备数据(设备数据已成功上传至云平台) .java文件 ...
- Android 获取meta-data中的数据
在 Android 的 Mainfest 清单文件中,Application,Activity,Recriver,Service 的节点中都有这个的存在.很多时候我们可以通过 meta-data 来配 ...
- Android中获取应用程序(包)的大小-----PackageManager的使用(二)
通过第一部分<<Android中获取应用程序(包)的信息-----PackageManager的使用(一)>>的介绍,对PackageManager以及 AndroidMani ...
- Android中获取应用程序(包)的信息----PackageManager
本节内容是如何获取Android系统中应用程序的信息,主要包括packagename.label.icon.占用大小等.具体分为两个 部分,计划如下: 第一部分: 获取应用程序的packagena ...
随机推荐
- Nunit2.5.10快速上手(笔记)
1.下载Nunit:http://www.nunit.org/index.php?p=download,下载MSI格式的安装包: 2.安装Nunit,根据提示安装即可,没有什么需要配置的,直接下一步就 ...
- 【DB2】DbVisualizer编译存储过程
之前我一直以为DbVisualizer是不可以编译存储过程的,现在才发现是可以的,编译如下: 只需要在编译的时候注意使用--/与/将存储过程包为起来编辑即可.
- 如何监控Tomcat服务器
如何监控Tomcat服务器 发表于:2009-06-25来源:作者:点击数:2651 标签:tomcatTomcat服务器 在进行 性能测试 时,一般都需要对应用服务器进行监控,监控的指标包括应用服务 ...
- 批量删除git分支
本篇文章由:http://xinpure.com/bulk-delete-git-branching/ 批量删除git分支 使用 git 时候,经常会发现,不知不觉就创建了大量的分支.那么,麻烦事就来 ...
- Lintcode---二叉树的层次遍历(原型)
给出一棵二叉树,返回其节点值的层次遍历(逐层从左往右访问) 您在真实的面试中是否遇到过这个题? Yes 样例 给一棵二叉树 {3,9,20,#,#,15,7} : 3 / \ 9 20 / \ 15 ...
- django学习笔记【001】django版本的确定&创建一个django工程
2.3 查看当前的django版本 python3. -m django --version 2.3.1 创建一个django工程 django-admin startproject mysite 在 ...
- Atitit.词法分析的理论原理 part2
Atitit.词法分析的理论原理 part2 1. 转换图1 1.1. 转换图是由程序流程图改进而成的.同样,转换图也可以等价地转换为程序流程图3 1.2. 2.2.3 构造词法分析器(2)流程程 ...
- Sublime Text 2 入门与总结
Sublime Text 2 入门与总结 首语 : 考完试,但又没什么兴趣做课程设计,蛋疼的弄点软件入门的介绍,希望给各位还在吃香蕉的程序猿带来一点启示... 代码编辑器,就像武侠中的武 ...
- JS事件类型详解
一般事件 onclick IE3.N2 鼠标点击时触发 此事件 ondblclick IE4.N4 鼠标双击时触发 此事件 onmousedown IE4.N4 按下鼠标时触发 此事件 onmouse ...
- Python 函数常用方法总结
一.函数的定义与优势: 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段.函数能提高应用的模块性,和代码的重复利用率. Python提供了许多内建函数,比如print(),但也可以自己 ...