获取安装的应用程序的大小 [英] Getting installed app size

查看:130
本文介绍了获取安装的应用程序的大小的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图找出如何让一个安装的应用程序的大小。
什么已经失败'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.

推荐答案

不幸的是,目前<一个href="http://groups.google.com/group/android-developers/browse_thread/thread/e920aca2eac277f3">no官方的<一个href="http://groups.google.com/group/android-developers/browse_thread/thread/df94daae34336aad/f96a8425549c6637">way要做到这一点。但是,你的可以的调用<一href="http://developer.android.com/reference/android/content/pm/PackageManager.html"><$c$c>PackageManager's隐藏的<一个href="http://android.git.kernel.org/?p=platform/frameworks/base.git;a=blob_plain;f=core/java/android/content/pm/PackageManager.java;hb=HEAD"><$c$c>getPackageSize方法如果导入的<一个href="http://android.git.kernel.org/?p=platform/frameworks/base.git;a=blob_plain;f=core/java/android/content/pm/PackageStats.aidl;hb=HEAD"><$c$c>PackageStats和<一href="http://android.git.kernel.org/?p=platform/frameworks/base.git;a=blob_plain;f=core/java/android/content/pm/IPackageStatsObserver.aidl;hb=HEAD"><$c$c>IPackageStatsObserver AIDLs到我们的项目中,并生成存根。然后,您可以使用反射来调用<一个href="http://android.git.kernel.org/?p=platform/frameworks/base.git;a=blob_plain;f=core/java/android/content/pm/PackageManager.java;hb=HEAD"><$c$c>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 Size
  • Using AIDL with Eclipse and ADT
  • APK Piracy: Using private code & resources in Android

这篇关于获取安装的应用程序的大小的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆