Android PackageStats给出负值
2022-09-01 03:59:49
我正在使用 PackageStats,并在打印 PackageStats 的 codeSize、cacheSize、dataSize 时,有些数据是负数。
几个问题:
- 这怎么可能?
- 考虑到apk大小约为50MB,codeSize可能是负的场景是什么?
- 还有其他方法可以可靠地用于提取上述信息吗?
此外,对于Android N,它给了我“NoSuchMethodException”。所以
- 它是否在Android N中被删除,或者有某种方法可以使用它?
- 有什么替代方案可以帮助我计算上述尺寸吗?
法典:
PackageManager packageManager = context.getPackageManager();
Method myUserId = UserHandle.class.getDeclaredMethod("myUserId");
int userID = (Integer) myUserId.invoke(packageManager);
Method getPackageSizeInfo = packageManager.getClass().getDeclaredMethod("getPackageSizeInfo", String.class, int.class,
IPackageStatsObserver.class);
getPackageSizeInfo.invoke(packageManager, context.getPackageName(), userID, new IPackageStatsObserver.Stub() {
@Override
public void onGetStatsCompleted(PackageStats pStats, boolean succeeded) throws RemoteException {
long codeSize = pStats.codeSize / MB; //long MB = 1024*1024;
long cacheSize = pStats.cacheSize / MB;
long dataSize = pStats.dataSize / MB;
long appSize = codeSize + cacheSize + dataSize;
};
}