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:
else{
Bitmap bitmap = Bitmap.createBitmap(icon.getIntrinsicWidth(),icon.getIntrinsicHeight(), Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
icon.setBounds(0, 0, canvas.getWidth(), canvas.getHeight());
icon.draw(canvas);
APKicon = bitmap;
}
this solution will work in any case
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…