|
闪退的问题,已经有多人反应了,难道不能重视一下?这里是解决方案,希望官方更新 。
http://blog.csdn.net/lang791534167/article/details/39647263
解决系统相机拍照闪退
上面的代码,实现了调用系统相机,但是经过我在测试数10台手机之后发现,红米和三星出现拍完照后返回时,黑屏闪退。测试结果说明,该方法只试用于部分手机。
观察错误信息,提示onActivityResult 中空指针异常,相机拍照返回的 Intent data这个参数为空无法取出刚刚拍照的Bitmap,研究了一下,应该是不同手机厂商在系统定制时,隐藏了拍照返回意图。厂商系统定制我们不能修改,只能采取另外的方式来保存照片。针对返回意图为空的问题,解决办法如下:
通过把照片保存在指定路径,完成后通过路径取出
三、使用自定义路径拍照闪退问题
如果使用方法二拍照依然部分手机出现闪退的情况,观察打印的错误信息,依然NullPointerException,这个问题相对来说也比较简单,但第一次遇到也把我困住了一会,异常信息我就不贴出来了,错误的原因是这样的:
当我们 通过 startActivityForResult(intent, OPEN_RESULT); 打开系统相机时,部门手机由于系统优化的原因,会把当前页面的成员变量回收,当拍完照片返回时,在onActivityResult方法中是要通过照片路径来获得Bitmap,而这种情况下保存照片路径的mPictureFile指向的字符串已经被回收,mPictureFile值就为空,导致产生空指针异常而闪退。解决办法是在Activity中加上onSaveInstanceState生命周期方法,保证对象在被系统回收之前能够先以hashMap的形式保存下来,当返回时再从onRestoreInstanceState方法中恢复出来
下面把整个应用程序代码写出来,结合Activity的生命周期方法,可以更好的观察理解这个问题: |
|