3 回答

TA貢獻(xiàn)1816條經(jīng)驗(yàn) 獲得超4個(gè)贊
不幸的是,目前尚無(wú)官方方法可以做到這一點(diǎn)。但是,如果您將和AIDL導(dǎo)入我們的項(xiàng)目并生成存根,則可以調(diào)用PackageManager的hidden getPackageSize方法。然后,您可以使用反射來(lái)調(diào)用: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);
}
});
顯然這是一個(gè)很大的漏洞,不應(yīng)將其用于公共應(yīng)用程序。

TA貢獻(xiàn)1821條經(jīng)驗(yàn) 獲得超5個(gè)贊
您可以通過(guò)獲取apk文件的路徑并檢查其長(zhǎng)度來(lái)簡(jiǎn)化操作:
final PackageManager pm = context.getPackageManager();
ApplicationInfo applicationInfo = pm.getApplicationInfo(appInfo.getPackage(), 0);
File file = new File(applicationInfo.publicSourceDir);
int size = file.length();
- 3 回答
- 0 關(guān)注
- 631 瀏覽
添加回答
舉報(bào)