2

嗨,我正在尝试开发一个可以列出所有应用程序及其缓存大小的 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的应用程序,请帮我解决这个谜语,谢谢。

4

0 回答 0