標籤:.com 原來 action 分享圖片 photo androi ora denied 無法
在華為手機上調起圖片選擇時原來的效果如下
原來的代碼是
Intent intent = new Intent(); intent.setAction(Intent.ACTION_GET_CONTENT); intent.setType("image/*"); startActivityForResult(intent, CODE_PHOTO_REQUEST);
當使用ACTION_GET_CONTENT時,直接點擊“圖片”裡的照片返回的uri = content://com.android.providers.media.documents/document/image%3A164287,而點擊“圖庫”的照片返回的uri = content://media/external/images/media/164287,選擇“圖片”中的照片去截取時無效或提示此圖片無法載入。
後將action改為ACTION_PICK:
Intent intent = new Intent(); intent.setAction(Intent.ACTION_PICK); intent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, "image/*"); startActivityForResult(intent, CODE_PHOTO_REQUEST);
介面效果為:
這時候選擇的圖片返回的URI就都是content://media/external/images/media/164287格式的,都可以跳轉裁剪介面
但是在裁剪後報出open failed: EACCES (Permission denied)的錯誤,說是由於沒有READ_EXTERNAL_STORAGE(或WRITE_EXTERNAL_STORAGE)的許可權,但是在資訊清單檔中 已經加入了這兩項許可權,最後找到是因為應用的許可權管理中禁用了儲存許可權,在跳轉相簿的代碼前設定開啟即可
public static void verifyStoragePermissions(Activity activity) { // Check if we have write permission int permission = ActivityCompat.checkSelfPermission(activity, Manifest.permission.WRITE_EXTERNAL_STORAGE);//缺少什麼許可權就寫什麼許可權 if (permission != PackageManager.PERMISSION_GRANTED) { // We don‘t have permission so prompt the user ActivityCompat.requestPermissions(activity, PERMISSIONS_STORAGE, REQUEST_EXTERNAL_STORAGE); } }
解決華為手機圖片選擇無效及產生的open failed: EACCES (Permission denied)錯誤