Разрешение 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 ответ
Если кто-то сталкивается с этим вопросом, здесь есть ветка о данной проблеме в закрытых выпусках Библиотеки здесь.