Can't say I have ever enjoyed BitmapFactory on Android.
I can't recall where but I have heard there can be issues with calling decodeFile. I changed mine to load the image into a buffer and then use BitmapFactory.decodeByteArray. This will allow you to log stuff like whether it was even found on the device and if it's the correct size. You could also do a MD5 and see if the image looks corrupt. Sounds like overkill but it might show something.
IIRC the Android build process will optimize your png files unless you tell it not to. Should be ok but maybe toggle it and see what happens.
It could be that the file itself is corrupt or not built exactly right. Some images made using a custom tool could be generating an image that most programs can load as they are less picky or can handle errors better. Try and load the file in something like Photoshop and resave it.
Finally I wouldn't format my if/else like that either. Playing with fire. When your code goes live, the Play Store will give you error reports with line numbers and you don't want to wonder what part of the line caused the error.