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
- 右键单击您的项目新建 > 文件夹 > AIDL 文件夹
- 按完成
- 右击
aidl文件夹新建>包 - 插入
android.content.pm并按 OK - 下载IPackageStatsObserver.aidl一个>
- 复制
android.content.pm包内的aidl文件 - 构建 > 重建项目
- Right click on your project New > Folder > AIDL Folder
- Press Finish
- Right click on
aidlfolder New > Package - Insert
android.content.pmand press OK - Download IPackageStatsObserver.aidl
- Copy the aidl file inside the
android.content.pmpackage - Build > Rebuild Project
Eclipse
- 右键
src文件夹新建>包 - 插入
android.content.pm - 按完成
- 下载IPackageStatsObserver.aidl一个>
- 复制
android.content.pm包内的aidl文件 - 选择
totalCacheSize的类,然后 Source > Organize Imports
- Right click on
srcfolder New > Package - Insert
android.content.pm - Press Finish
- Download IPackageStatsObserver.aidl
- Copy the aidl file inside the
android.content.pmpackage - Select class where
totalCacheSizeis then Source > Organize Imports
相关文章