decodeFile解析正确的路径却返回null???

 BitmapFactory.decodeFile(mPicPath);

博主在做项目时遇到了这个问题,卡住了好久,看了一下错误报告,如下


当时博主分析了一下,感觉没什么问题啊,怎么就出错了呢??

file.exist判断了下,文件是存在的啊

decodeFile方法要求路径是完整的路径,我看了下,我的图片路径也是完整的啊!sd卡上的图片路径/stroage/...,的确是完整的啊

然后博主又换decodeStream方法(当时没注意第一条和第二条错误),然后就发现了FileNotFoundException错误,但是依然想不通

在decodeStream方法前后都进行了file.exist的判断,咦,都是存在的,但是偏偏中间decodeStream的时候FileNotException,邪门了!!

再想想,嗯,我权限也申请了啊

  
  

后来,我无意中把错误报告的进度条往后拉,发现了问题,大家看


发现了没有,最后permission denied,权限问题??我明明加了权限啊

于是我将这段错误报告贴到百度上查,原来涉及到了动态申请权限,在api23以上(包括api23),对sd卡进行读写操作,除了要在清单文件中写明读写sd卡权限,还要在代码中动态申请权限。解决方案如下:

  private static final String[] PERMISSION_EXTERNAL_STORAGE = new String[] {
            Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE};
  private static final int REQUEST_EXTERNAL_STORAGE = 100;
  private void verifyStoragePermissions(Activity activity) {
        int permissionWrite = ActivityCompat.checkSelfPermission(activity,
                Manifest.permission.WRITE_EXTERNAL_STORAGE);
        if(permissionWrite != PackageManager.PERMISSION_GRANTED) {
            ActivityCompat.requestPermissions(activity, PERMISSION_EXTERNAL_STORAGE,
                    REQUEST_EXTERNAL_STORAGE);
        }
  }
所以说,错误报告看完整有助于解决解决问题




你可能感兴趣的:(Android问题)