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

 BitmapFactory.decodeFile(mPicPath);

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


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

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

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

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

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

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

  <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
  <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

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


发现了没有,最后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);
        }
  }
所以说,错误报告看完整有助于解决解决问题




评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值