android 获取系统缓存之

时间:2025-02-08 16:43:31

android 获取系统缓存之

今天我给大家分享一个关于获取android手机应用缓存信息的方法以及androidO以上的版本适配问题。如果不做适配兼容的话就会报错误。
以前我们在获取的方法如下:

public void getPackageSizeInfo(String packageName,  observer) {
        Context context = ();
        try {
            PackageManager pm = ();
            Method method = ()
                    .getMethod("getPackageSizeInfo", , );
            (pm, packageName, observer);
        } catch (Exception e) {
            ();
        }
    }

    private class PackageStatsObserver extends  {

        @Override
        public void onGetStatsCompleted(PackageStats pStats, boolean succeeded) throws RemoteException {
       			  ("guojingbu", "packageName = "++"---"+( + ));
        }
    }
   //使用
getPackageSizeInfo(“应用包名”,new  PackageStatsObserver ());

androidO以及以上如果再用上面的方法就会 报错误。
androidO以上我们应该用下面的方法

@RequiresApi(api = Build.VERSION_CODES.O)
    private void getPackageSizeInfo(String packageName,  observer) {
        Context context = ();
            final StorageStatsManager storageStatsManager = (StorageStatsManager) (Context.STORAGE_STATS_SERVICE);
            try {
                ApplicationInfo applicationInfo = ().getApplicationInfo(packageName, 0);
                StorageStats storageStats = (, );
                long cacheSize = ();
                long dataSize = ();
                long apkSize = ();
                ("guojingbu", cacheSize + "---" + dataSize + "---" + apkSize);
                //long size += ;
            } catch (Exception e) {
                ();
            }
        }

最后我们贴一下适配完整的方法:

private void getPackageSizeInfo(String packageName,  observer) {
        Context context = ();
        if (.SDK_INT >= Build.VERSION_CODES.O) {
            final StorageStatsManager storageStatsManager = (StorageStatsManager) (Context.STORAGE_STATS_SERVICE);
            final StorageManager storageManager = (StorageManager) (Context.STORAGE_SERVICE);
            try {
                ApplicationInfo applicationInfo = ().getApplicationInfo(packageName, 0);
                StorageStats storageStats = (, );
                long cacheSize = ();
                long dataSize = ();
                long apkSize = ();
                ("guojingbu", cacheSize + ",," + dataSize + ",," + apkSize);
            } catch (Exception e) {
                ();
            }
        } else {
            try {
                PackageManager pm = ();
                Method method = ()
                        .getMethod("getPackageSizeInfo", , );
                (pm, packageName, observer);
            }  catch (Exception e) {
                    ("guojingbu", "error");
                    ();
                }
            }
    }
    
 private class PackageStatsObserver extends  {

        @Override
        public void onGetStatsCompleted(PackageStats pStats, boolean succeeded) throws RemoteException {
       			  ("guojingbu", "packageName = "++"---"+( + ));
        }
    }

今天的内容就分享完了。主要目的也是自己做一点笔记以便以后查阅。