После обновления моего приложения до целевой API 29 и запуска его на устройстве android 10 не удалось загрузить изображение с ошибкой: «EACCES (Permission denied)», пожалуйста, помогите.
вот мой код:
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
if (requestCode == SELECT_IMG_REQUEST) {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
Intent intent = new Intent(Intent.ACTION_PICK);
intent.setType("image/*");
startActivityForResult(Intent.createChooser(intent, "Select Image"), SELECT_IMG_REQUEST);
} else {
Toast.makeText(getApplicationContext(), "permission", Toast.LENGTH_LONG).show();
}
return;
}
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
Bitmap bitmap;
Uri filePath;
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == SELECT_IMG_REQUEST && resultCode == RESULT_OK && data != null) {
filePath = data.getData();
Log.e("path", filePath + "");
try {
InputStream inputStream = getContentResolver().openInputStream(filePath);
bitmap = BitmapFactory.decodeStream(inputStream);
if (MySingleton.getmInstance(this).userData().getGender().equals("Male")) {
Glide.with(this)
.load(bitmapToByte(bitmap))
.asBitmap()
.diskCacheStrategy(DiskCacheStrategy.ALL)
.placeholder(R.mipmap.sidemenu_pic_profile_man)
.transform(new CircleTransform(this))
.thumbnail(0.1f)
.into(pic);
} else {
Glide.with(this)
.load(bitmapToByte(bitmap))
.asBitmap()
.diskCacheStrategy(DiskCacheStrategy.ALL)
.placeholder(R.mipmap.sidemenu_pic_profile_woman)
.transform(new CircleTransform(this))
.into(pic);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
super.onActivityResult(requestCode, resultCode, data);
}
private byte[] bitmapToByte(Bitmap bitmap) {
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, stream);
byte[] byteArray = stream.toByteArray();
return byteArray;
}
public String getPath(Uri uri) {
Cursor cursor = getContentResolver().query(uri, null, null, null, null);
cursor.moveToFirst();
String document_id = cursor.getString(0);
document_id = document_id.substring(document_id.lastIndexOf(":") + 1);
cursor.close();
cursor = getContentResolver().query(
android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
null, MediaStore.Images.Media._ID + " = ? ", new String[]{document_id}, null);
cursor.moveToFirst();
String path = cursor.getString(cursor.getColumnIndex(MediaStore.Images.Media.DATA));
cursor.close();
return path;
}
и вот разрешения в манифесте: