3 回答
TA贡献1816条经验 获得超4个赞
不幸的是,目前尚无官方方法可以做到这一点。但是,如果您将和AIDL导入我们的项目并生成存根,则可以调用PackageManager的hidden getPackageSize方法。然后,您可以使用反射来调用:PackageStatsIPackageStatsObservergetPackageSize
PackageManager pm = getPackageManager();
Method getPackageSizeInfo = pm.getClass().getMethod(
"getPackageSizeInfo", String.class, IPackageStatsObserver.class);
getPackageSizeInfo.invoke(pm, "com.android.mms",
new IPackageStatsObserver.Stub() {
@Override
public void onGetStatsCompleted(PackageStats pStats, boolean succeeded)
throws RemoteException {
Log.i(TAG, "codeSize: " + pStats.codeSize);
}
});
显然这是一个很大的漏洞,不应将其用于公共应用程序。
TA贡献1821条经验 获得超4个赞
您可以通过获取apk文件的路径并检查其长度来简化操作:
final PackageManager pm = context.getPackageManager();
ApplicationInfo applicationInfo = pm.getApplicationInfo(appInfo.getPackage(), 0);
File file = new File(applicationInfo.publicSourceDir);
int size = file.length();
- 3 回答
- 0 关注
- 563 浏览
添加回答
举报