1.拍照 (对于7.0以上的版本,不在允许直接访问uri)
创新互联公司自2013年创立以来,先为加格达奇等服务建站,加格达奇等地企业,进行企业商务咨询服务。为加格达奇企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。
`
若不指定输出路径intent.putExtra(MediaStore.EXTRA_OUTPUT, getTempUri(srcActivity)); 在onActivityResult()中,通过
`
可以拿到uri,但获得的图片是被压缩过的。若指定intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);输出路径,则此处的intent为null,但可以使用我们存的uri读取照片,此时的照片没有被压缩。
2.从相册中读取照片, 方法:
`
`
即使设置 intent.putExtra(MediaStore.EXTRA_OUTPUT, getTempUri(srcActivity));输出路径,仍然不能从此路径中读取,只能在onActivityForResult()中通过event.uri = intent.getData();方式获得图片uri。
此种现象也好理解,拍照时产生新的图片,自然可根据设置的uri进行图片保存,而读取相册时,图片已经在目录中不能转移到自己设定的uri中。
Androidmanifest.xml中
`
在 res/xml/provider_paths.xml
`
?xml version="1.0" encoding="utf-8"?
paths
external-path name="JDTobs" path=""/
files-path name="name" path="path" /
cache-path name="name" path="path" / external-path name="name" path="path" /
external-files-path name="name" path="path" /
external-cache-path name="name" path="path" / /paths `
读取uri
若使用的是vivo手机,相机无法使用处理方法如下:
1、若软件无法打开相机,进入设置--应用与权限/更多设置--权限管理--找到对应的软件--开启相机,在单项权限设置--开启“使用摄像头”权限;
2、卸载第三方管家类软件,如:腾讯手机管家、360手机卫士等,再尝试开启相机
3、进入设置--应用与权限/更多设置--应用管理/应用程序--(全部)--找到相机--存储后清除数据和缓存,后重启手机;
4、进入设置--系统管理/更多设置--备份与重置/恢复出厂设置--还原所有设置/清除所有数据(需进行备份数据);
5、固件升级;
6、若以上方法未解决,可携带手机和有效购机凭证去客户服务中心处理,关注微信公众号“vivo”或者“vivo客户服务”进行查询服务中心地址电话,建议去之前电话联系,确保有工作人员接待再过去,避免耽误宝贵时间白跑一趟。
Refrence:
Android 调用系统相机拍照适配主要经历了 6.0 7.0 10和11这几个大版本:
其中:
常用到的为 external-path 和 external-files-path,name和path按照自己需求编写
上述示例意思是,external-path标签指向的路径后path中指向的文件/文件夹拥有被访问权限,即 /storage/emulate/0/000 这个路径拥有被访问的权限。
简单示例: