Gabi Radu
Gabi Radu

Reputation: 1107

BitmapFactory decode returns null

I am dealing with a weird thing in android now. My code that used to work till a few days ago stops working. I am selecting an image from gallery and want to get the Bitmap object of it. My code:

 imgDecodableString = "/storage/emulated/0/DCIM/Camera/IMG_20160114_141351594.jpg"

 Bitmap decodedBitmap = BitmapFactory.decodeFile(imgDecodableString);
 Log.d(Constants.TAG, "decodedBitmap: " + decodedBitmap);

Bitmap is now null (used to work) and I really don't get what is wrong. Didn't changed my code. Does anyone had this problem? Thank you.

I do have the permissions:

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

Upvotes: 0

Views: 195

Answers (3)

Arjun saini
Arjun saini

Reputation: 4182

if (CheckPermission(youractivity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
// you have permission go ahead

String  imgDecodableString = "/storage/emulated/0/DCIM/Camera/IMG_20160114_141351594.jpg";

if(new File(imgDecodableString).exists()){
Bitmap decodedBitmap = BitmapFactory.decodeFile(imgDecodableString);
Log.d("Tag", "decodedBitmap: " + decodedBitmap);}
} else {
// you do not have permission go request runtime permissions
RequestPermission(youractivity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE, REQUEST_RUNTIME_PERMISSION);
}



@Override
public void onRequestPermissionsResult(int permsRequestCode, String[] permissions, int[] grantResults) {

    switch (permsRequestCode) {

        case REQUEST_RUNTIME_PERMISSION: {
            if (grantResults.length > 0
                    && grantResults[0] == PackageManager.PERMISSION_GRANTED) {

            } else {
                // you do not have permission show toast.
            }
            return;
        }
    }
}
public void RequestPermission(Activity thisActivity, String Permission, int Code) {
    if (ContextCompat.checkSelfPermission(thisActivity,
            Permission)
            != PackageManager.PERMISSION_GRANTED) {
        if (ActivityCompat.shouldShowRequestPermissionRationale(thisActivity,
                Permission)) {

        } else {
            ActivityCompat.requestPermissions(thisActivity,
                    new String[]{Permission},
                    Code);
        }
    }
}

public boolean CheckPermission(Activity context, String Permission) {
    if (ContextCompat.checkSelfPermission(context,
            Permission) == PackageManager.PERMISSION_GRANTED) {
        return true;
    } else {
        return false;
    }
}

In androidmainfest

 <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

Upvotes: 1

Yogendra
Yogendra

Reputation: 5288

please use below code:

if(imgDecodableString.exists()){
Bitmap decodedBitmap = BitmapFactory.decodeFile(imgDecodableString);
Log.d(Constants.TAG, "decodedBitmap: " + decodedBitmap);}

Hope it will help.

Upvotes: 0

Atiq
Atiq

Reputation: 14835

You need to remove the comment from first line, it should look like this

imgDecodableString = "/storage/emulated/0/DCIM/Camera/IMG_20160114_141351594.jpg"

Bitmap decodedBitmap = BitmapFactory.decodeFile(imgDecodableString);
Log.d(Constants.TAG, "decodedBitmap: " + decodedBitmap);

Upvotes: 1

Related Questions