如何获取手机的缓存

1、  手机中的缓存一般放在手机中data/data/的项目/cache当中,cache文件是可不读不可写,所以不能直接获取

2、可以在源码中找到  mPm.getPackageSizeInfo(包名, mStatsObserver);

3、getPackageSizeInfo的方法已经被隐藏了,只能采用反射来获取:需要导入这两个aidl文件

IPackageStatsObserver.aidl 和 PackageStats.aidl

1?? 获取到packagemanager管理器对象,

public static void getCacheSize(final Activity context, String packName,final                        OnGetCacheSizeListener listener) {

PackageManager pm = context.getPackageManager();

2?? 使用反射

// 1. class

Class<? extends PackageManager> clazz = pm.getClass();

// 2. method

Method method = clazz.getDeclaredMethod("getPackageSizeInfo",

new Class[] {String.class,IPackageStatsObserver.class});

// 3. obj  pm

已经获取到了任务管理器

//为了获取到回调,定义了一个接口

IPackageStatsObserver.Stub mStub = new IPackageStatsObserver.Stub() {

@Override

public void onGetStatsCompleted(PackageStats pStats, boolean succeeded)

throws RemoteException {

//回调结果

final long cacheSize = pStats.cacheSize;

//因为修改了UI界面,所以不能在子线程中运行,创建一个UI线程使其在主线程中修改

context.runOnUiThread(new Runnable() {

@Override

public void run() {

// TODO Auto-generated method stub

listener.getCacheSize(cacheSize);//把结果回调给用户

}

});

// 4. invoke

method.invoke(pm, new Object[]{packName,mStub});

3?? 定义一个接口

public class GetAppCacheMessageUtils {
public interface OnGetCacheSizeListener{
void getCacheSize(long cacheSize);

}

时间: 2024-10-13 18:02:35

如何获取手机的缓存的相关文章

手机APP缓存的获取和清理功能的实现

package com.loaderman.appcachedemo; import android.content.pm.IPackageDataObserver; import android.content.pm.IPackageStatsObserver; import android.content.pm.PackageManager; import android.content.pm.PackageStats; import android.os.Bundle; import an

android 安卓APP获取手机设备信息和手机号码的代码示例

下面我从安卓开发的角度,简单写一下如何获取手机设备信息和手机号码 准备条件:一部安卓手机.手机SIM卡确保插入手机里.eclipse ADT和android-sdk开发环境 第一步:新建一个android工程(JinshanTest), 并需要在工程的AndroidManifest.xml文件中,添加权限 <uses-permission android:name="android.permission.READ_PHONE_STATE"/> 图例: 第二步:新建一个工具类

Android 获取手机总内存和可用内存等信息

在android开发中,有时候我们想获取手机的一些硬件信息,比如android手机的总内存和可用内存大小.这个该如何实现呢? 通过读取文件"/proc/meminfo"的信息能够获取手机Memory的总量,而通过ActivityManager.getMemoryInfo(ActivityManager.MemoryInfo)方法可以获取当前的可用Memory量. "/proc/meminfo"文件记录了android手机的一些内存信息,在命令行窗口里输入"

Android之——获取手机安装的应用程序

转载请注明出处:http://blog.csdn.net/l1028386804/article/details/47114331 前几篇有关Android的博文中,向大家介绍了几个项目中常用的实用功能,那么在这篇博文中,我将向大家介绍如何获取Android手机中已经安装的手机应用程序,实用过金山手机卫士或者360手机卫士的童鞋都知道,这些软件都可以获取到当前手机中安装的应用程序.那么,这些功能是如何实现的呢?就让我们一起来看看这些功能具体是如何实现的吧. 一.原理 原理很简单,我们通过Andr

【小功能2】android获取手机信息(号码,内存,CPU,分辨率,MAC,IP,SD卡,IMEI,经纬度,信号强度等等)

为了实现一个功能,需要搜集手机信息,自己先在网上找了相关信息进行了汇总,主要是汇集手机的信息,一般想要的信息在手机设置->关于手机->状态消息里面包含了手机的各种信息,下面的代码中也主要显示了那些信息,但是源码的方法我还没有看,先把总结的贴出来.先上图(太多就截取几个).  上代码啦,太多了,就写主要代码了. // 获取Android手机中SD卡存储信息 获取剩余空间 public void getSDCardInfo() { // 在manifest.xml文件中要添加 /* * <u

Android LazyList 从网络获取图片并缓存

原文地址   本文内容 环境 演示 LazyList 从网络获取图片并缓存 参考资料 本文是 Github 上的一个演示,通过网络获取歌手专辑的缩略图,并显示在 ListView 控件中.该演示具备将缩略图缓存到手机外存的功能,所以叫"Lazy",这样就不用每次都通过网络重新获取. 该演示仅仅是获得缩略图,但在另一篇文章中,作者根据这个 LazyList,做了一个相对完整的演示(包括歌曲名称.歌手名.时长.缩略图等信息),如图 3 所示. 环境 Windows 2008 R2 64 位

Android远程图片获取和本地缓存

对于客户端——服务器端应用,从远程获取图片算是经常要用的一个功能,而图片资源往往会消耗比较大的流量,对 应用来说,如果处理不好这个问题,那会让用户很崩溃,不知不觉手机流量就用完了,等用户发现是你的应用消耗掉了他手机流量的话,那么可想而知你的应用将面 临什么样的命运. AD:2014WOT全球软件技术峰会北京站 课程视频发布 另外一个问题就是加载速度,如果应用中图片加载速度很慢的话,那么用户同样会等到崩溃. 那么如何处理好图片资源的获取和管理呢? 异步下载 本地缓存 异步下载 大家都知道,在and

windowsphone中获取手机位置信息

首先在界面中加入一个textblock控件以显示信息 1 using System; 2 using System.Collections.Generic; 3 using System.IO; 4 using System.Linq; 5 using System.Runtime.InteropServices.WindowsRuntime; 6 using Windows.Foundation; 7 using Windows.Foundation.Collections; 8 using

Android学习笔记-获取手机内存,SD卡存储空间。

前面介绍到如何保存数据到手机内存或者SD卡,但是问题是,在保存以前,我们还需要对他们的空间(可用空间),进行判断,才可以进行后续操作,所以,本节我们就介绍如何获取手机内存以及Sd卡的空间. //这时获取手机内存的 // File path = Environment.getDataDirectory(); //这时获取SD卡的空间 File path = Environment.getExternalStorageDirectory(); StatFs stat = new StatFs(pat