こんにちは、すべてのアプリとそのキャッシュ サイズを一覧表示できる Android アプリを開発しようとしています。ここに私のアプローチがあり、私のコードは現在正常に動作しています。
for(int i=0; i<appCache.size(); i++)
{
try
{
final PackageManager pm = getPackageManager();
Method getPackageSizeInfo;
getPackageSizeInfo = pm.getClass().getMethod("getPackageSizeInfo", String.class, IPackageStatsObserver.class);
getPackageSizeInfo.invoke(pm, appPackageName.get(i), new IPackageStatsObserver.Stub() {
@Override
public void onGetStatsCompleted(PackageStats pStats, boolean succeeded)
throws RemoteException
{
final String title;
ApplicationInfo applicationInfo;
try {
applicationInfo = pm.getApplicationInfo(pStats.packageName, 0);
title = (String)((applicationInfo != null) ? packageManager.getApplicationLabel(applicationInfo) : "???");
MessageDetails Detail;
Detail = new MessageDetails();
Detail.setIcon(getPackageManager().getApplicationIcon( pStats.packageName ));
Detail.setName(title);
Detail.setSub("Cache Size -> "+(pStats.cacheSize/1024));
details.add(Detail);
}
catch (final NameNotFoundException e) {}
}
});
}
catch (SecurityException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
e.printStackTrace();
}catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
}
しかし、ここでは、デバイスにインストールされているすべてのアプリがキャッシュとともにリストされますが、キャッシュ サイズが 0 より大きいアプリにリストをフィルター処理したいので、このなぞなぞを解決するのを手伝ってください。ありがとうございます。