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: