Tomer Petel
Tomer Petel

Reputation: 344

Android-Image-Cropper Permission READ/WRITE_EXTERNAL_STORAGE issue

I'm using the library Android-Image-Cropper (which is great!) and there's something I can't quite understand.

I'm using the library for profile picture add/update using camera of from local filesystem (i.e. gallery, file manager).

Although not adding any storage uses-permission to my manifest I'm still able to capture a picture or pick one from the filesystem.

Is it something to do with me not saving the picture and extracting it from the URI directly to my SharedPreferences?

Permission part of Manifest file:

<uses-feature
    android:name="android.hardware.bluetooth_le"
    android:required="true" />

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.RECEIVE_SMS" />
<uses-permission android:name="android.permission.READ_SMS" />
<uses-permission android:name="android.permission.SEND_SMS" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.READ_CONTACTS" />

<uses-feature
    android:name="android.hardware.camera"
    android:required="true" />

An example of use in a Fragment:

@Override
public void onClick(View v) {
    switch (v.getId()) {
        case R.id.userImage:
            CropImage.activity()
                    .setGuidelines(CropImageView.Guidelines.ON)
                    .setCropShape(CropImageView.CropShape.OVAL)
                    .setFixAspectRatio(true)
                    .setMinCropWindowSize(150,150)
                    .setScaleType(CropImageView.ScaleType.CENTER)
                    .start(mActivity, this);
            break;
    }
}

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    Log.d("AddNewUserFragment", "[onActivityResult]");
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == CropImage.CROP_IMAGE_ACTIVITY_REQUEST_CODE)
    {
        CropImage.ActivityResult result = CropImage.getActivityResult(data);
        if (resultCode == RESULT_OK) {
            Uri resultUri = result.getUri();

            try {
                newProfilePic = mPalPhotoManager.getThumbnail(resultUri);
                String encodeUserImage = mPalPhotoManager.encodeImage(newProfilePic);
                mPalPhotoManager.saveImageToPreferences(encodeUserImage);
                mPalPhotoManager.setUserImage(newProfilePic, mUserImage);
                saveImageToServer = true;
            } catch (IOException e) {
                e.printStackTrace();
            }
        } else if (resultCode == CropImage.CROP_IMAGE_ACTIVITY_RESULT_ERROR_CODE) {
            result.getError().printStackTrace();
            saveImageToServer = false;

        }
    }
}

Upvotes: 1

Views: 567

Answers (1)

Tomer Petel
Tomer Petel

Reputation: 344

If anyone encounters this question, there is a thread regarding this exact issue in Libraries' closed issues here

Upvotes: 1

Related Questions