zoukankan      html  css  js  c++  java
  • 解决华为手机图片选择无效及产生的open failed: EACCES (Permission 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);
            }
        }
  • 相关阅读:
    针对专业人员的 TensorFlow 2.0 入门
    学习深度学习过程中的一些问题
    Leetcode_06_ZigZag Conversion (easy)
    leetcode_07_Reverse Integer (easy)
    独立游戏人:像素风格游戏制作分享(转)
    关于iphone开发中的@property和@synthesize的一些见解(转)
    iphone开发cocoa中nil,NSNull,Nil的使用区别
    Xcode6.1创建仅xib文件无storyboard的hello world应用(转)
    iOS 学习资料整理(转)
    hdoj1042ac
  • 原文地址:https://www.cnblogs.com/Sharley/p/9346550.html
Copyright © 2011-2022 走看看