获取安装的应用程序的大小应用程序、大小

由网友(淡忘了、过去)分享简介:我试图找出如何让一个安装的应用程序的大小。什么已经失败'S:- 新建文件(/数据/应用/ some.apk') - 报告不正确的大小- PackageManager.getPackageSizeInfo(字符串的packageName,IPackageStatsObserver观察员) - 为 @hide...

我试图找出如何让一个安装的应用程序的大小。 什么已经失败'S: - 新建文件(/数据/应用/ some.apk') - 报告不正确的大小 - PackageManager.getPackageSizeInfo(字符串的packageName,IPackageStatsObserver观察员) - 为 @hide ,并依赖于一些不起眼的 IPackageStatsObserver 的结果,所以我不能通过反射调用它。

I'm trying to figure out how to get the size of an installed app. What's already failed: - new File('/data/app/some.apk') - reports incorrect size - PackageManager.getPackageSizeInfo(String packageName, IPackageStatsObserver observer) - is @hide and relies on some obscure IPackageStatsObserver for result so I can't call it via reflection.

推荐答案

不幸的是,目前no官方的way要做到这一点。但是,你的可以的调用PackageManager's隐藏的getPackageSize方法如果导入的PackageStats和IPackageStatsObserver AIDLs到我们的项目中,并生成存根。然后,您可以使用反射来调用getPackageSize:

Unfortunately there is currently no official way to do that. However, you can call the PackageManager's hidden getPackageSize method if you import the PackageStats and IPackageStatsObserver AIDLs into our project and generate the stubs. You can then use reflection to invoke getPackageSize:

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);
        }
    });

这显然是一个的大劈的和的不应使用公共应用程序。

That's obviously a big hack and should not be used for public applications.

Android Package的大小 使用AIDL与Eclipse和ADT APK盗版:使用专用code和;在Android的 资源 Android Package Size Using AIDL with Eclipse and ADT APK Piracy: Using private code & resources in Android
阅读全文

相关推荐

最新文章