Fragment 调用系统相机闪退问题 您所在的位置:网站首页 系统自带相机闪退 Fragment 调用系统相机闪退问题

Fragment 调用系统相机闪退问题

2024-07-17 04:13| 来源: 网络整理| 查看: 265

调用系统相机是很常见的功能点了,基本所有需要上传头像的应用都会有这个功能,而现在基本所有应用都有头像,所以。。。

不过也会遇到很多坑,例如在fragment中 不走onActivityResult方法。

解决办法就是在fragment 所在的Activity中重写onActivityResult方法 ,如下:

protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); personFragment.onActivityResult(requestCode, resultCode, data); 其中 super方法必须包含

然后就是调用fragment的onActivityResult方法。

这个问题比较好处理,不过还会遇到一个问题例如:

data ==null

现在同行的方法就是 调用系统相机时,把照片保存在一个固态

private String fileName; public final File FILE_SDCARD = Environment .getExternalStorageDirectory(); public final File FILE_LOCAL = new File(FILE_SDCARD, "vCar"); public final File FILE_PIC_SCREENSHOT = new File(FILE_LOCAL, "images/screenshots"); /** * 相机选择 */ private void selectCamera() { fileName = String.valueOf((new Date()).getTime()) + ".jpg"; SPUtil.getInstance().putString(Constant.FILE_PATH,fileName); File filePath = FILE_PIC_SCREENSHOT; if (!filePath.exists()) { filePath.mkdirs(); } try { Intent intent = new Intent( MediaStore.ACTION_IMAGE_CAPTURE); File f = new File(filePath, fileName); // localTempImgDir和localTempImageFileName是自己定义的名字 Uri u = Uri.fromFile(f); intent.putExtra(MediaStore.Images.Media.ORIENTATION, 0); intent.putExtra(MediaStore.EXTRA_OUTPUT, u); startActivityForResult(intent, TAKE_PICTURE); } catch (Exception e) { e.printStackTrace(); } } 不要以为这样就可以了 ,第三个坑来袭。

就是在这种情况下 你获取照片的方法如下:

File f = new File(FILE_PIC_SCREENSHOT, fileName); Intent intent = new Intent(getActivity(), ActivityCropper.class); intent.putExtra("path", f.getAbsolutePath()); // intent.putExtra("name", select_Num); startActivityForResult(intent, CROP_PICTURE); 这时候在有些手机上还会报错,例如

filename ==null

原因可能是在fragment 调用相机并且返回后,fileName 没有保存

所以我的方法是保存在本地并且从本地读取。

存:

SPUtil.getInstance().putString(Constant.FILE_PATH,"")

读取:

SPUtil.getInstance().getString(Constant.FILE_PATH,"") 这样就不会报错并且能够顺利拿到图片了



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有