获取应用程序缓存信息

/**
 * 获取应用程序缓存的工具类
 * 
 * 
 */
public class CacheUtil {

	/**
	 * 根据包名获取某个应用的CacheInfo,这里涉及到了AIDL
	 * 需要权限:android.permisson.GET_PACKAGE_SIZE
	 * 
	 * @param context
	 * @param pkgName
	 * @return
	 */
	public static CacheInfo getCacheInfoByPkgName(Context context,
			String pkgName) {

		try {
			final CacheInfo cacheInfo=new CacheInfo();
			
			PackageManager pm = context.getPackageManager();
			
			//getPackageSizeInfo这个方法是PackageManager私有的,只能通过反射调用
			Method method = PackageManager.class.getMethod("getPackageSizeInfo", new Class[]{String.class,IPackageStatsObserver.class});
			
			method.invoke(pm, new Object[] { pkgName,new IPackageStatsObserver.Stub() {

				public void onGetStatsCompleted(PackageStats pStats,boolean succeeded) throws RemoteException {
						
					long cacheSize = pStats.cacheSize;
					long codeSize = pStats.codeSize;
					long dataSize = pStats.dataSize;
					
					cacheInfo.setCacheSize(cacheSize);
					cacheInfo.setCodeSize(codeSize);
					cacheInfo.setDataSize(dataSize);
				}
			} });
			
			return cacheInfo;
			
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}
	
	
    /**
	 * 调用系统Setting方法,根据包名清理某个应用的缓存
	 * @param context
	 * @param pkgName
	 */
	public static void clearCacheByPkgName(Context context,String pkgName){
		
		Intent intent = new Intent();
		
		intent.setAction("android.intent.action.VIEW");
		intent.addCategory("android.intent.category.DEFAULT");
		intent.addCategory("android.intent.category.VOICE_LAUNCH");
		intent.putExtra("pkg", pkgName);
		
		context.startActivity(intent);
		
	}
}


public class CacheInfo {

	private long codeSize;// 应用大小
	private long cacheSize;// 缓存大小
	private long dataSize;// 数据大小

	public long getCodeSize() {
		return codeSize;
	}

	public void setCodeSize(long codeSize) {
		this.codeSize = codeSize;
	}

	public long getCacheSize() {
		return cacheSize;
	}

	public void setCacheSize(long cacheSize) {
		this.cacheSize = cacheSize;
	}

	public long getDataSize() {
		return dataSize;
	}

	public void setDataSize(long dataSize) {
		this.dataSize = dataSize;
	}

}

需要的.aidl文件,下载地址: http://download.csdn.net/detail/liu537192/7990035

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值