我想用这个设备计算所有缓存的总和.为此,我得到一个编译时间错误:
IPackageStatsObserver cannot be resolved to a type
Run Code Online (Sandbox Code Playgroud)
我在代码中提到了这个错误2次:
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;
}
Run Code Online (Sandbox Code Playgroud)
IPackageStatsObserver在Android SDK中不可用.也许加载Stub类Class.forName(),找到默认的构造函数并调用它来获取一个新的实例Stub.但我应该怎么编码,我对此一无所知!?
救命 !!
Mat*_*ini 14
要解决您的问题,请执行以下步骤:
Android Studio
aidl文件夹New> Packageandroid.content.pm并按OKandroid.content.pm包中的aidl文件日食
src文件夹New> Packageandroid.content.pmandroid.content.pm包中的aidl文件totalCacheSize然后选择Source> Organize Imports| 归档时间: |
|
| 查看次数: |
5355 次 |
| 最近记录: |