IPackageStatsObserver 无法解析为类型(Android) [英] IPackageStatsObserver cannot be resolved to a type (Android)

查看:24
本文介绍了IPackageStatsObserver 无法解析为类型(Android)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想计算使用设备的所有缓存内存的总和.为此,我收到编译时间错误:

I want to calculate the sum of all the cache memory utilizing the device. For this I am getting a compiled time error:

IPackageStatsObserver cannot be resolved to a type

我在代码中已经两次提到这个错误:

I have mentioned this error 2 times in the code:

public long totalCacheSize(){
    totalSize=0;

    PackageManager packageManager = getApplicationContext().getPackageManager();

     /* List<PackageInfo> packs = packageManager
      .getInstalledPackages(PackageManager.GET_ACTIVITIES);*/
     // PackageManager.GET_META_DATA

    List<PackageInfo> packs = packageManager
            .getInstalledPackages(PackageManager.GET_META_DATA);

    for (int i = 0; i < packs.size(); i++) {

        PackageInfo p = packs.get(i);

        Method getPackageSizeInfo;
        try {
            getPackageSizeInfo = packageManager.getClass()
                    .getMethod("getPackageSizeInfo",
                        String.class, Class.forName("android.content.pm.IPackageStatsObserver"));

            getPackageSizeInfo.invoke(packageManager, p.packageName,
                    new IPackageStatsObserver.Stub() { //error

                        public void onGetStatsCompleted(
                                PackageStats pStats, boolean succeeded)
                                throws RemoteException {

                            totalSize = totalSize + pStats.cacheSize;
                            Log.d("size", totalSize+"");
                            Toast.makeText(getApplicationContext(), "size"+totalSize, Toast.LENGTH_SHORT).show();
                        }
                    }
            );

        } catch (Exception e) {
            try {
                getPackageSizeInfo = packageManager.getClass()
                        .getMethod("getPackageSizeInfo",
                            String.class, Class.forName("android.content.pm.IPackageStatsObserver"));

                getPackageSizeInfo.invoke(packageManager, p.packageName,
                        new IPackageStatsObserver.Stub() { //error

                            public void onGetStatsCompleted(
                                    PackageStats pStats, boolean succeeded)
                                    throws RemoteException {

                                totalSize = totalSize + pStats.cacheSize;
                                Log.d("size", totalSize+"");
                                Toast.makeText(getApplicationContext(), "size"+totalSize, Toast.LENGTH_SHORT).show();
                            }
                        }
                );
            } catch (Exception ee) {
                Log.d("eeeeeeeeeee", "error");
                ee.printStackTrace();
            } 
        } 
    }

    Log.d("return size", totalSize+"");
    Toast.makeText(getApplicationContext(), "return size"+totalSize, Toast.LENGTH_SHORT).show();
    return totalSize;
}

IPackageStatsObserver 在 android SDK 中不可用.可能使用 Class.forName() 加载 Stub 类,找到默认构造函数并调用它以获取 Stub 的新实例.但是我应该编码它,我对此一无所知!?

IPackageStatsObserver is not available in android SDK. Perhaps loading the Stub class using Class.forName(), finding the default constructor and invoke it to get a new instance of a Stub. But what should I code it, I do not know anything about it!?

求救!!

推荐答案

要解决您的问题,请按以下步骤操作:

To resolve your issue follow these steps:

Android Studio

  • Right click on your project New > Folder > AIDL Folder
  • Press Finish
  • Right click on aidl folder New > Package
  • Insert android.content.pm and press OK
  • Download IPackageStatsObserver.aidl
  • Copy the aidl file inside the android.content.pm package
  • Build > Rebuild Project

Eclipse

  • Right click on src folder New > Package
  • Insert android.content.pm
  • Press Finish
  • Download IPackageStatsObserver.aidl
  • Copy the aidl file inside the android.content.pm package
  • Select class where totalCacheSize is then Source > Organize Imports

这篇关于IPackageStatsObserver 无法解析为类型(Android)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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