Android BitmapFactory.decodeFile(filePath, options) 返回 Null 6.0权限

人生必须的知识就是引人向光明方面的明灯。这篇文章主要讲述Android BitmapFactory.decodeFile(filePath, options) 返回 Null 6.0权限相关的知识,希望能为你提供帮助。
今天在做拍照上传的时候遇到个问题,根据路径获取Bitmap 失败,一直返回空,以为这个路径获取Bitmap代码久经考验,不怀疑它,找参数传入是否正确,初步怀疑是 filePath 没传进去,打印 filePath.

Android BitmapFactory.decodeFile(filePath, options) 返回 Null 6.0权限

文章图片

但是发现 filePath 有值,起了怪了,一步步Debug,发现每一步都是正确的,没有问题,但是一到最后 return BitmapFactory.decodeFile(filePath, options) ; 就为空,犹豫这个方法是 android的,所以也没法一步步点进去debug。
Android BitmapFactory.decodeFile(filePath, options) 返回 Null 6.0权限

文章图片

换一个转换bitmap 的方法,发现抛出异常,打印,权限被拒绝。
Android BitmapFactory.decodeFile(filePath, options) 返回 Null 6.0权限

文章图片

根据代码,知道这一步肯定是需要 Read 和 Write 的权限,首先,去注册清单里面找,却发现都在。
Android BitmapFactory.decodeFile(filePath, options) 返回 Null 6.0权限

文章图片

再次测试,代码中打印是否获取到权限, -1 ,无权限,这就奇怪了,难道注册权限没用?
Android BitmapFactory.decodeFile(filePath, options) 返回 Null 6.0权限

文章图片

Android BitmapFactory.decodeFile(filePath, options) 返回 Null 6.0权限

文章图片

可以看出返回值为 0 则表示有该权限,返回值为 -1 则表示没有该权限
【Android BitmapFactory.decodeFile(filePath, options) 返回 Null 6.0权限】这个时候想到了我们项目的适配, target 是 24 ,6.0是23, 而6.0 有个新特性就是动态权限,也就是说 write 和 read 的权限是要在代码中获取的。
Android BitmapFactory.decodeFile(filePath, options) 返回 Null 6.0权限

文章图片


    推荐阅读