用Drawable appIcon =(Drawable)packageInfo.applicationInfo.loadIcon( getPackageManager());获取到的icon,然后在getview函数里面重写了以下过程
ImageView imageViewIcon = (ImageView)convertView.findViewById(R.id.imageView1);
imageViewIcon.setImageDrawable(appUnit.appIcon);
但是一直获取不到icon,应用的版本和程序名都能正常获取,是不是没有添加什么权限,或者哪里写错了

解决方案 »

  1.   

    PackageInfo info = getPackageManager().getPackageArchiveInfo(fullPath, 0);
    ApplicationInfo appinfo = info.applicationInfo;
    label = getPackageManager().getApplicationLabel(appinfo).toString();
    img = getPackageManager().getApplicationIcon(info.packageName);
      

  2.   

    这句话Drawable appIcon =(Drawable)packageInfo.applicationInfo.loadIcon( getPackageManager());的getPackageManager()方法是本地方法吗?注意指针问题。
      

  3.   

    亲测这种方法可以获取到icon,楼主检查一下appUnit.appIcon的值。
    楼主用的这种方法可以获取到系统中所有apk的信息,包括没在launcher显示的。有个方法可以只获取到launcher里的那些apk的信息:
    private List<ResolveInfo> mApps;
    Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);
    mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);
    mApps = getPackageManager().queryIntentActivities(mainIntent, 0);
    ResolveInfo info = mApps.get(position);
    imageViewIcon.setImageDrawable(info.activityInfo.loadIcon(getPackageManager()));