There is a java.lang.ClassCastException when I am trying to get a installed applications icon.
Here is my code.
public Bitmap getAppIcon
Caused by: java.lang.ClassCastException: android.graphics.drawable.NinePatchDrawable cannot be cast to android.graphics.drawable.BitmapDrawable
Problem :
You are trying to typecast BitmapDrawable to NinePatchDrawable
Solution:
Try this:
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 = ((NinePatchDrawable) icon).getBitmap(); // cast to NinePatchDrawable
return APKicon;
}
PackageManager.GetApplicationInfo returns a Drawable object. It might not be a BitmapDrawable.
You can test whether it is a BitmapDrawable with:
If pm.GetApplicationIcon(packname) Is BitmapDrawable Then ...
If you want to convert a non-BitmapDrawable to a BitmapDrawable then you need to: