Tôi đang sử dụng PackageStats và in mã của PackageStats, cacheSize, dataSize, một số dữ liệu sẽ đến là âm.Android PackageStats cung cấp các giá trị âm
Một vài câu hỏi:
- Làm thế nào có thể như vậy?
- Các trường hợp khi codeSize có thể là số âm khi xem xét kích thước gói ứng dụng là khoảng 50MB?
- Bất kỳ cách nào khác có thể được sử dụng một cách đáng tin cậy để trích xuất thông tin trên?
Ngoài ra, dành cho Android N nó mang lại cho tôi "NoSuchMethodException" Vì vậy,
- Có xóa do Android N hoặc là có một số cách để sử dụng nó?
- Bất kỳ giải pháp thay thế nào có thể giúp tôi tính toán các kích thước ở trên?
Code:
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;
};
}
Bạn có thể thêm ví dụ mã bao gồm cách bạn hiển thị/kiểm tra giá trị cũng như bất kỳ phép tính nào được thực hiện trên giá trị đó không? – Zachary
Ok. Tôi không thực hiện bất kỳ phép tính nào ngoại trừ 1 trong đó tôi chia giá trị cho 1024 * 1024 để nhận giá trị bằng MB. – thepace