关于拍照返回路径问题
来源:互联网 发布:mac系统怎么装win7 编辑:程序博客网 时间:2024/05/16 17:29
近期在修改bug 发现一部红米4测试机的拍照返回异常 因为之前全部使用的使系统默认路径 在测试机上拍照成功后选择直接闪退 想了想 可能是因为有的系统禁止使用默认路径 也可能是返回bingder过大异常了 反正没想通 。。。。所以直接换成 保存指定路径了 然后在uri的获取方法上 加上一个判断就可以了
File file = new File(PathUtil.getFilepath("/js"), new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date()) + ".jpg");if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); ContentValues contentValues = new ContentValues(1); contentValues.put(MediaStore.Images.Media.DATA, file.getAbsolutePath()); cameraUri = getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, contentValues);} else { intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); cameraUri = Uri.fromFile(file);}
if (intent != null) { intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 1); intent.putExtra(MediaStore.EXTRA_OUTPUT, cameraUri); startActivityForResult(intent, RESULT_CAMERA_ACTIVITY);}注意到这个错误 android.os.FileUriExposedException bugly的
解决方案
因为buildsdk是>=24,所以调用Uri.fromFile时保错,解决方法:在application的onCreate里:StrictMode.VmPolicy.Builder builder = new StrictMode.VmPolicy.Builder();StrictMode.setVmPolicy(builder.build());builder.detectFileUriExposure()SDK>24 和<24的解决方案public static void openFile(Context context, File file) { Intent intent = new Intent(); intent.setAction(android.content.Intent.ACTION_VIEW); Uri uri; if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); Uri contentUri = FileProvider.getUriForFile(context, context.getApplicationContext().getPackageName() + ".provider", file); intent.setDataAndType(contentUri, "application/vnd.android.package-archive"); } else { uri = Uri.fromFile(file); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.setDataAndType(uri, "application/vnd.android.package-archive"); } context.startActivity(intent); }<------------------------------分割线----------------------------->********************************************************************************为Android N调用相机时崩溃提供一种解决方法,亲测有效******其中 savePath 为临时保存的路径,tempFileName为拍照 ******后存储的照片名称。 ***************************************************************By JayGoo ********************************************************************************** /** * 从拍照获取图片 */ public void camera() { Intent intent = null; // 判断存储卡是否可以用,可用进行存储if (StorageUtils.hasSdcard()) { //设定拍照存放到自己指定的目录,可以先建好 File file = new File(savePath); if(!file.exists()){ file.mkdirs(); } Uri pictureUri; File pictureFile = new File(savePath, tempFileName);if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); ContentValues contentValues = new ContentValues(1); contentValues.put(MediaStore.Images.Media.DATA, pictureFile.getAbsolutePath()); pictureUri = getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,contentValues); }else { intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); pictureUri = Uri.fromFile(pictureFile); } if (intent != null) { intent.putExtra(MediaStore.EXTRA_OUTPUT, pictureUri); startActivityForResult(intent, 1); } } }
阅读全文
0 0
- 关于拍照返回路径问题
- Android 关于小米手机拍照图片返回路径的处理
- 关于调用系统拍照返回图片报错的问题
- 关于sony等机型拍照后返回重载了Activity的问题
- 关于post文件上传不能返回路径问题的解决方案
- Android开发——相册拍照_03.解决相机拍照之后部分手机无法将图片保存到路径或部分手机点击相机确定无法返回问题
- SpringMVC H5 js摄像头拍照 ajax上传返回url路径
- 安卓调用系统拍照功能:1、启动拍照返回图片,2、启动拍照,图片存储在指定路径下
- 相对路径目录返回问题
- 关于Android调用相机拍照,完成后无法返回
- android关于手机拍照图片旋转问题
- 关于Android拍照的一个问题
- 程序调用系统拍照返回后崩溃的问题
- 调用相机拍照后返回照片过小的问题
- 使用系统拍照返回的照片默认旋转90问题
- 解决不同类型手机系统照相机拍照无法确定返回问题
- 解决三星android拍照时返回null问题
- 程序调用系统拍照返回后崩溃的问题
- 搭建(增加) jenkins slave 机器
- C++ STL一一迭代器配接器
- 大数据路线
- 控制软件版本
- 使用SpringCloud实战微服务
- 关于拍照返回路径问题
- Xshell 连接Linux
- kotlin初体验
- 集群管理——开机B7问题(内存条ERROR),caffe编译matlab接口错误解决方法
- 2017第六届中国扬州户外照明及LED照明展览会会刊(参展商名录)
- FiORI2.0学习笔记-shell controller及&component.js
- VMware
- Java发送邮件(二)
- Looper.prepare();