如何获取手机的缓存手机缓存「如何获取手机的缓存」

   日期:2025-01-18     作者:ftnq7       评论:0    移动:http://fq7oa.kub2b.com/mobile/news/1521.html
核心提示:1、 手机中的缓存一般放在手机中data/data/的项目/cache当中,cache文件是可不读不可写,所以不能直接获取 2、可以在源码中找
   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{
 
特别提示:本信息由相关用户自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。

举报收藏 0打赏 0评论 0
 
更多>同类最新资讯
0相关评论

相关文章
最新文章
推荐文章
推荐图文
最新资讯
点击排行
{