华为相机手机相机错误 重启无效 恢复出厂无效 相机清除数据无效 我没有来

8545人阅读
Android(39)
最近项目中调用系统相机时遇到了这么个问题:红米手机无法执行onActivityResult回调,部分华为手机无法获取到照片数据,最后各种分析,各种网上搜索资料折腾了好久,最后终于把问题解决,当看到问题的最终原因时,我也是醉了,简直就是坑爹坑大发了。
最开始用红米手机调用系统相机的时,当我拍照完成点击那个勾勾始终无法返回到前面的界面上,也就是无法调用onActivityResult函数取到拍照的照片,在网上搜索了一圈,没找到解决办法,都说是红米的系统问题,无法解决,项目比较紧张,刚好客户的手机全部是统一型号的华为荣耀6Plus,这个问题丢着暂时没管了。
后来现场同事批量测试机器时,发现有3台手机可以拍照,但是在onActivityResult回调中获取到的照片数据为null,但是其他的同型号手机又没这个问题,这问题看着真是坑爹啊。
远程调试代码后发现,我在调用系统相机时设置的照片存放目录无法创建成功,我调用系统相机的代码如下:
public void takePicture() {
//照片存放目录
File file = new File(mPicDirectory);
if(!file.exists()) {//目录不存在则创建该目录及其不存在的父目录
file.mkdirs();
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
mPicName = getPictureName();//获取照片名称
mPicPath = mPicDirectory + mPicName;//照片存储路径
//将照片保存到mPicPath位置
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File(mPicPath)));
startActivityForResult(intent, CODE_RESULT_TAKE_PHOTO); }
我调试的时候在onActivityResult回调里通过照片路径获取Bitmap对象的时候发现获取到的Bitmap对象一直为null,所以就猜想是不是照片没保存成功,我在文件管理系统里去找这个照片的时候发现,连照片存储目录mPicDirectory都不存在,我再次跟踪代码发现file.mkdirs()始终返回的都是false。看来问题的最终原因是这个:无法创建目录和文件(华为手机系统在拍照输出的时候,如果输出文件路径不存在时竟然没有任何提示和异常,这点对于发现问题的根源有点困难)。然后我又去检查了权限、手机设置里面的权限等所有有可能涉及的问题,结果依然没有效果。既然这些都不是导致目录创建失败的原因,那会不会是目录路径本身不正确呢,我的目录路径是这样获取的:
String mPicDirectory = FileManager.getPath() + Configuration.SYS_PHOTO_PATH;&//FileManager的部分代码是这样的,这个代码是以前的同事写的,没有细看过:&public static String getPath(){&boolean sdCardExist = Environment.getExternalStorageState()
.equals(android.os.Environment.MEDIA_MOUNTED); //判断sd卡是否存在 return !sdCardExist ? MOBILE_PATH : SD_PATH;}&//sdcard路径private static
String SD_PATH = Environment.getExternalStorageDirectory().getAbsolutePath();&//应用数据路径public static final String MOBILE_PATH = Environment.getDataDirectory().getAbsolutePath();&//这里有一段静态代码块static{
File f = new File(&/storage/sdcard1&);
if(f.exists()){
long size = getFreeSize(&/storage/sdcard1&);
long sd0Size =
getFreeSize(&/storage/sdcard0&);
if(size & sd0Size){
SD_PATH = &/storage/sdcard1&;
当我看到上面的静态代码块的时候,我立马就知道了问题的原因,静态代码块中做了一个剩余空间判断,选取的是空间比较大的那个sdcard路径,而且代码都是写死的
Environment.getExternalStorageDirectory().getAbsolutePath()系统这个代码是获取手机里的内置SDCard的路径,我的红米手机自己又额外插了一张内存卡,这个是手机的外接SDCard,用Environment.getExternalStorageDirectory()获取到只是手机自带的外置SDCard路径,不能获取自己插入的内存卡路径,我的手机通过Environment.getExternalStorageDirectory()方式获取的路径是/storage/sdcard0(我手机内置的SDCard),而通过可用空间比较之后发现该卡的可用空间少于/storage/sdcard1(我自己插入的SDCard),所以最终路径变成了/storage/sdcard1,而在Android4.4以上后,不允许三方App对外接的SDCard进行操作,因此我们队最后得到的这个目录是没有写入权限的,所以我创建照片存储目录的时候一直失败,所以拍照的时候照片数据没有地方可以输出,华为手机是直接体现在照片数据无法获取,而红米手机则是直接不允许返回到前面的调用界面。
Google在Android中限制三方App操作外接SDCard的原文如下:
The WRITE_EXTERNAL_STORAGE permission must only grant write access to the primary external storage on a device. Apps must not be allowed to write to secondary external storage devices, except in their package-specific directories as allowed by synthesized
permissions.
后来想了想,调用相机这么简单的一个功能,红米的系统应该不可能给阉割掉,所以出了问题还是老老实实的先找自己代码的问题吧。至于那个外接SDCard的写入权限还有待寻找答案。
系统内置SDCard写入、删除、读写权限:
//文件创建、删除权限&uses-permission android:name=&android.permission.MOUNT_UNMOUNT_FILESYSTEMS& /&//文件读写权限,只针对于手机内存的SDCard,对外接SDCard无效&uses-permission android:name=&android.permission.WRITE_EXTERNAL_STORAGE& /&
欢迎访问我的独立博客:
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:198023次
积分:2475
积分:2475
排名:第14895名
原创:53篇
评论:77条
(4)(1)(2)(1)(1)(4)(2)(4)(2)(2)(2)(2)(1)(2)(1)(8)(7)(1)(1)(3)(3)(1)把小米2手机里的DCIM文件夹删掉了,然后相机使用不了了,显示没有插SD卡 管理里删除了一些东西,我的.
把小米2手机里的DCIM文件夹删掉了,然后相机使用不了了,显示没有插SD卡
管理里删除了一些东西,我的.
把小米2手机里的DCIM文件夹删掉了,然后相机使用不了了,显示没有插SD卡
建议在文件管理中新建DCIM文件夹,查看问题是否一样存在。
解决方法如下:1、可以重启手机试试这是因为DCIM是相机存放照片的文件夹,删除后,相机检测不到存储路径就会报错。2、以上方法尝试均无效时,则只能进入设置界面将系统还原为出厂设置状态才能解决了,一般重启后系统会自动恢复DCIM文件夹。4、如果重启无效,则可以进入设置——应用——相机——清除数据,清除后重启相机试试。3、如果仍无法解决,可以尝试手动在文件管理里面新建一个DCIM的空白文件夹,然后重启手机试试
可以文件管理中新建DCIM文件夹,查看问题是否一样存在;也可以重新恢复手机数据或出厂设置。但愿你手机可以恢复。
DCIM是Android手机摄像头使用的目录, 里面存储了用户拍摄的照片和视频,以及照片和视频的缩略...
小米2连接到电脑,电脑DCIM的文件夹CAMERA没有照片的原因是驱动出现建议重新下载驱动在连接查看...
嗨! 请问您是通过什么方式与电脑连接的? 更详细的描述问题有助于网友理解你遇到的麻烦,帮助你更准确的...
sdcard-DCIM中
嗨! 请不要重命,以免致文件格式不正确并无关使用文件。 更详细的描述问题有助于网友理解你遇到的麻烦,...
嗨! 建议你在电脑上安装小米手机助手,来让手机连接电脑。安装成功后,会自动安装驱动的。小米手机助手,...
嗨! 您好,手机拍照自动储存在 文件管理-- DCIM-- camera 里面哦 您看一下
嗨! 请查看照片储存的盘。 更详细的描述问题有助于网友理解你遇到的麻烦,帮助你更准确的解决问题。谢谢...
嗨! 可能是一些视频的自动截图。
你可能感兴趣的主题酷派8150d手机打开照相机不会显示照相怎么回事啊
已有1个回答
[特聘专家]
专家星级&:&0.4星
问答堂专家综合评分
问题评分&:&0.4星
采纳、点赞&:&1星
二次回复率&:&0星
内容为广告/垃圾,我要举报!
特聘专家具有协助内容审核的特权
举报后内容将不能在前台展示
错乱举报会导致该权利被剥夺
选择举报原因×
擅长领域:
参与话题:
1、先进行系统设置--应用程序--全部--相机下清除缓存、清除数据等操作后依然无效。2、若是软件异常,冲突等可卸载相关软件,或者备份下手机重要数据后恢复出厂设置看能否改善,系统设置--备份与重置下操作。3、若是之前有自行刷机或者Root获取权限后,误删了相关系统进程造成的系统异常,需要重新刷机才能恢复使用。
留下你的评论
微信公众账号ZOL问答堂
关注微信,随时随地解答您的疑惑
ZOL问答堂官方微博@ZOL问答堂
关注成功!该问题被回答后,将给您发送站内短信。
您也可以通过关注问答堂微信,及时获得您关注问题的回答。
微信关注问题方法“”后使用快捷导航没有帐号?
平板/笔记本
云服务专区
关于“相机错误”:太常见了吧?太折腾人了吧?华为,.....
&新学乍练&
来自:浏览器
本帖最后由 美腿荣耀 于
00:25 编辑
新买的4x手机,只在手机内置的市场里下载了微信、qq、滴滴打车,然后发现相机就不能用了,总显示:“相机错误:无法启动相机,请检查是否有第三方应用在后台运行(如手电筒),请关掉后再重试”。遍寻百度、花粉,好像华为手机关乎相机的错误太多了,你好像永远都找不到一个行之有效的解决办法,不管是升级版本、清除数据、恢复出厂设置,似乎都没用!华为,你怎么看?
width:100%">
&新学乍练&
来自:浏览器
大侠,谁还能指点一下?别说退换货
width:100%">
&渐入佳境&
来自:浏览器
可能其他软件正在调用相机
width:100%">
&已臻大成&
来自:浏览器
亲你好,建议把后台涉及到照相机的应用:如qq、微信等第三方应用,清除后台运行,因为他们可能会占用相机的资源,导致相机无法正常启动; 也可以重启手机或者卸载一些第三方的拍照软件,在开机自启动项中禁止一些第三方的应用启动,以免占用相机。
width:100%">
&已臻大成&
来自:浏览器
不应该吧,系统出现问题了吧
width:100%">
&已臻大成&
来自:浏览器
还不错加油。
width:100%">
&炉火纯青&
来自:浏览器
还不错加油。
width:100%">
&新学乍练&
来自:浏览器
亲们,崩溃了,用了n年手机,n年qq,n年微信,头一次用国产手机,头一次就给了华为,8核啊,为什么相机管理不好?作为一个老IT人,偶怎么就找不到解决办法呢?
width:100%">
&新学乍练&
来自:浏览器
用着qq,你不发照片吗?用着微信,你不发照片吗?你不能停止交流的时候,发现相机必须尝试重启、重刷、什么感觉?
width:100%">
&新学乍练&
来自:浏览器
都是这种情况啊,又是重刷,又是第三方的,烦得要命,到最后毛用都没有,还是老样子
width:100%">
带媳妇来海边人间有味是清欢宁夏行2南岭拍水清凉一夏旅途我为华为P10代言
花粉客户端
Make it Possible
Make your device special
华为云服务
Huawei cloud services
音乐播放器
Huawei Music
Huawei Vmall
没有最新动态
关注花粉俱乐部
联系我们:
|关注花粉俱乐部:
Copyright (C)
华为软件技术有限公司 版权所有 保留一切权利来自&安卓手机
赞(<span class="num" id="tips_count_)
来自&安卓手机
赞(<span class="num" id="tips_count_)
来自&安卓手机
赞(<span class="num" id="tips_count_)
来自&安卓手机
赞(<span class="num" id="tips_count_)
来自&安卓手机
赞(<span class="num" id="tips_count_)
来自&安卓手机
赞(<span class="num" id="tips_count_)
来自&安卓手机
赞(<span class="num" id="tips_count_)
赞(<span class="num" id="tips_count_)
赞(<span class="num" id="tips_count_)
loading.......

我要回帖

更多关于 华为荣耀4x相机错误 的文章

 

随机推荐