android获取应用程序大小,缓存数据信息
2014-06-06 13:57
633 查看
详细参考 http://download.csdn.net/detail/w6028819321/7456649
package com.xj.appinfo.activity; import java.lang.reflect.Method; 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); } } /** * 获取文件大小 * * @param length * @return */ 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; } }
相关文章推荐
- android 调用系统方法获取应用程序信息 如缓存大小
- Android获取 应用程序大小,数据大小,缓存大小
- android 获取应用程序(包)的信息和缓存大小 PackageManager的使用
- Android开发——获取应用数据/缓存大小并清理缓存
- android 获取其他应用程序的缓存大小以及清理应用缓存
- Android获取应用程序大小和缓存的实例代码
- android获取应用程序缓存的数据
- 96利用反射获取缓存和应用程序的大小信息
- Android获取应用程序大小和缓存的实例代码
- Android应用数据、缓存的清除和获取缓存大小
- Android开发——获取应用数据/缓存大小并清理缓存
- Android中获取应用程序(包)的大小和缓存大小
- ANDROID学习 获取应用程序的缓存等信息
- Android中获取应用程序(包)的大小-----PackageManager的使用(二)
- Android中获取应用程序(包)的大小-----PackageManager的使用(二)
- Android中获取应用程序(包)的大小-----PackageManager的使用(二) .
- Android中获取应用程序(包)的信息-----PackageManager的使用
- Android中获取应用程序(包)的信息-----PackageManager的使用(一)
- Android中获取应用程序(包)的信息-----PackageManager的使用(一)
- 获取Android应用程序出错信息并将信息发送到指定邮件