我正在使用PackageStats并在打印PackageStats的codeSize,cacheSize,dataSize时,一些数据将变为负数.
几个问题:
另外,对于Android N,它给了我"NoSuchMethodException".所以,
码:
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;
};
}
Run Code Online (Sandbox Code Playgroud) 我无法获得Android应用程序(或包)使用的总数据量,因为官方API支持已被删除:
http://groups.google.com/group/android-developers/browse_thread/thread/df94daae34336aad/f96a8425549c6637(这仍然是目前的情况吗?)
获取已安装的应用程序大小(不支持的hack - 不要使用它)
那么有什么方法可以获得当前的sqlite数据库大小?我找到了一个getMaxSize方法或getPageSize,但我无法找到总页数.
我正在尝试获取应用程序包占用的大小.每个应用程序在内部/外部存储中都有一个位置.
我想计算以下目录的大小,我该怎么做?我知道我可以在Oreo(API 26)设备上使用StorageStateManager,但是如何在oreo设备之前实现这一点.
应用目录: /Android/data/myapplicationpackage
我正在尝试使用PackageStats,但它总是给我零.使用此代码的实际方法是什么?
我使用了以下代码,它给了我全部零.
PackageStats stats = new PackageStats(context.getPackageName());
long codeSize = stats.codeSize + stats.externalCodeSize;
long dataSize = stats.dataSize + stats.externalDataSize;
long cacheSize = stats.cacheSize + stats.externalCacheSize;
long appSize = codeSize + dataSize + cacheSize;
Run Code Online (Sandbox Code Playgroud) 我正在寻找一种方法来计算已安装的 Android 应用程序/包的大小。我在 ApplicationInfo 和 PackageInfo 对象中都找不到此信息。从 ApplicationInfo 我可以获得数据和应用程序本身的路径。数据是一个目录结构,但是当尝试递归读取它时,我得到了一个空指针。有没有更好的方法来做到这一点?任何示例代码?