Разрешение Android-Image-Cropper READ/WRITE_EXTERNAL_STORAGE

Я использую библиотеку Android-Image-Cropper (это здорово!), И есть кое-что, что я не совсем понимаю.

Я использую библиотеку для добавления / обновления изображения профиля, используя камеру из локальной файловой системы (т.е. галерею, файловый менеджер).

Хотя я и не добавляю разрешения на использование хранилища в мой манифест, я все же могу сделать снимок или выбрать один из файловой системы.

Это как-то связано с тем, что я не сохраняю картинку и не извлекаю ее из URI непосредственно в мои SharedPreferences?

Часть разрешений файла манифеста:

<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" />

Пример использования во фрагменте:

@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;

        }
    }
}

1 ответ

Если кто-то сталкивается с этим вопросом, здесь есть ветка о данной проблеме в закрытых выпусках Библиотеки здесь.

Другие вопросы по тегам