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 = "++"---"+( + ));
}
}
今天的内容就分享完了。主要目的也是自己做一点笔记以便以后查阅。