Я использую PackageStats и при печати PackageStats codeSize, cacheSize, dataSize, некоторые данные поступают как отрицательные.
Несколько вопросов:
- Как это возможно?
- Каковы сценарии, когда codeSize может быть отрицательным, учитывая, что размер apk составляет около 50 МБ?
- Любые другие способы, которые могут быть надежно использованы для извлечения выше информации?
Кроме того, для 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;
};
}