Alex Chengalan Alex Chengalan - 1 year ago 124
Android Question

Get All Installed Application icons in Android : java.lang.ClassCastException

There is a

when I am trying to get a installed applications icon.

Here is my code.

public Bitmap getAppIcon(String path) {
PackageInfo pi = pm.getPackageArchiveInfo(path, 0);
pi.applicationInfo.sourceDir = path;
pi.applicationInfo.publicSourceDir = path;
Drawable icon = pi.applicationInfo.loadIcon(pm);
Bitmap APKicon = ((BitmapDrawable) icon).getBitmap();
return APKicon;


PackageManager pm = getPackageManager();

and the error shown in the

Caused by: java.lang.ClassCastException: cannot be cast to

Hope anybody can help me.

Answer Source

Your Problem is that your Icon is no instance of BitmapDrawable, one can check like that:

Bitmap APKicon;
if(icon instanceof BitmapDrawable) {
  APKicon  = ((BitmapDrawable)icon).getBitmap();

in this case your solution would be right, one can just cast it, but if not (and that is your case) one needs to do something like that:

     Bitmap bitmap = Bitmap.createBitmap(icon.getIntrinsicWidth(),icon.getIntrinsicHeight(), Config.ARGB_8888);
     Canvas canvas = new Canvas(bitmap); 
     icon.setBounds(0, 0, canvas.getWidth(), canvas.getHeight());
     APKicon = bitmap;

this solution will work in any case

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download