尝试为个人资料图片选择图片时,我仅在某些设备中发现了此问题。在模拟器中签入这些问题时看不到,但在应用程序的实时版本中,此问题是该用户面临的。从 Firebase 崩溃报告中截取的屏幕截图。请帮我找出问题所在。
AndroidMenifest.xml
...
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.MANAGE_DOCUMENTS" />
...
SomeActivity.java
private void pickProfilePictureTask() {
Intent intent = null;
if (Build.VERSION.SDK_INT > 19) {
intent = new Intent(Intent.ACTION_OPEN_DOCUMENT, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
intent.addCategory(Intent.CATEGORY_OPENABLE);
} else {
intent = new Intent(Intent.ACTION_GET_CONTENT, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
}
intent.setType("image/*");
startActivityForResult(intent, IMAGE_PICKER_REQUEST);
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == IMAGE_PICKER_REQUEST && resultCode == Activity.RESULT_OK) {
if (data != null) {
/**Getting bitmap
*
* InputStream inputStream = getActivity().getContentResolver().openInputStream(data.getData());
* Bitmap userPicBitmap = BitmapFactory.decodeStream(inputStream);
*/
File file = new File(getFileNameFromURI(data.getData()));
String imageName = file.getPath();
uploadProfilePicture.setText(imageName);
userProfilePicUri = data.getData() + "";
}
}
}
private String getFileNameFromURI(Uri contentURI) {
String result;
Cursor cursor = getContentResolver().query(contentURI, null, null, null, null);
if (cursor == null) {
result = contentURI.getPath();
} else {
cursor.moveToFirst();
int idx = cursor.getColumnIndex(MediaStore.Images.ImageColumns.DISPLAY_NAME);
result = cursor.getString(idx);
cursor.close();
}
return result;
}
Android 5.1.1 中的错误 异常 java.lang.SecurityException: Permission Denial:从 pid=19207 读取 com.android.providers.media.MediaDocumentsProvider uri content://com.android.providers.media.documents/document/image%3A6617 , uid= 10260 需要 android.permission.MANAGE_DOCUMENTS 或 grantUriPermission()
Android 8.0.0 中的错误异常 java.lang.SecurityException: Permission Denial: 从 ProcessRecord{5c1039e 5061:com.mobotechnology.cvmaker/u0a219} 打开提供程序 com.android.providers.media.MediaDocumentsProvider (pid=5061, uid=10219)要求您使用 ACTION_OPEN_DOCUMENT 或相关 API 获得访问权限