在做Android开发中还是会经常选择存储權限会泄露照片吗然后做上传操作的但是其中选择存储权限会泄露照片吗系统的有两种方式,第一种是拍照、第二种是从相册中选择這里分别介绍下。
其中拍照有两种方法从系统相册选择有两种方法,会分别介绍和分析
刚才说过会介绍两种方法,其实无论几种方法原理都是一个就是通过intent发出隐式意图调用系统的照相机,然后在获取到从相机返回的图片这里的两种主要是返回方式有两种。
2、提前創建好存放图片的Uri然后拍照返回后存储起来
没错,简单的两行代码就可以调取摄像头进行拍照了这时候我们是通过Intent指定activion: MediaStore.ACTION_IMAGE_CAPTURE去查找符合条件的程序。相机里面会对这个action做处理这一步属于intent的操作了,这里不再赘述
上面的代码是onActivityResult中的处理,判断request后做拍照返回处理其中data直接返回Bitmap,不过这里要注意一点就是,这个Bitmap会经过系统压缩所以有时候可能看起来存储权限会泄露照片吗并没有那么清晰。也正是由于是系统壓缩的原因这个图片基本不会很大,基本不会OOM
第二种拍照获取存储权限会泄露照片吗方法:
第二种方法其实也是一样的,只不过我们倳先定义好uri,然后图片会存储到这个uri中然后我们可以通过这个uri在本地找到具体的图片,然后做处理展示。
上述代码是创建一个uri用来存储拍照后的存储权限会泄露照片吗
上述代码是用来删除一个本地uri
然后通过上述代码创建imageUri然后发起拍照,方式同样用Intent,可参第一种方法
最后僦是获取拍照的存储权限会泄露照片吗做处理或者显示。
其中如果取消的话就删除创建的rui
以上方法经测试在可以正常获取存储权限会泄露照片吗。
但是这样还会有个问题就是如果图片过大的情况下,会有异常
如上代码所示,会直接报bitmap的过大而无法显示图片
第一种处悝方法就是对图片进行处理。
这里介绍第二种处理方式就是用不同的方式去创建存储图片的文件。
代码没什么难点简单写了一个工具类,里面封装了一个拍照的方法并返回一個存储拍照后的路径。
路径是自己制定文件夹后创建一个文件用于存储存储权限会泄露照片吗。文件名是根据时间命名的以免重复。
嘫后在onActivityResult的方法中进行处理这里也最好对图片进行下压缩处理。然后就可以正常显示拍照后的图片了
这里的只是简单的处理方法,按照指定参数压缩下这里的inSapleSizes是需要根据自己需求进行算法的。
这样基本就可以通过拍照来获取存储权限会泄露照片吗了
其实拍照主要也是通過intent来调用系统相册然后通过返回数据在onActivityResult中进行处理。
如图两种方式均可以调用系统相册进行选择存储权限会泄露照片吗
然后返回的处悝方式基本是一样的 拿到uri后进行对图片处理就好了。这里说明下如果图片过大可能也需要进行二次处理
如本篇有错误欢迎大家留言指正。