-
调用拍照获取原图
Intent captureCameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); //加上下面这一句,拍照文件将保存到 file 中,android 7.0 使用 Uri.fromFile(file) 是不允许的需要额外处理,后面会讲 captureCameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(file)); startActivityForResult(captureCameraIntent, REQUEST_CAPTURE_CAMERA);
-
拍照时设置 putExtra(MediaStore.EXTRA_OUTPUT, imgUri); imgUri 的路径为 getCacheDir() 时无法保存,或无法获取到图片
解决: getCacheDir() 改为其他路径 getExternalCacheDir() 可用
-
android 7.0 兼容问题
当需要共享一个文件给其他 app 使用时,android 7.0 以上需要通过 FileProvider 包装为 Uri ,而不是 Uri.fromFile(file)、
首先在清单文件中注册 FileProvider ,FileProvider 集成自 ContentProvider 所以需要清单中注册
<provider android:name="android.support.v4.content.FileProvider" android:authorities="${applicationId}.fileProvider" android:exported="false" android:grantUriPermissions="true"> <meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/file_paths" /> </provider>
-
android:resource="@xml/file_paths" 添加 file_paths.xml
image.pngfile_paths 文件内容
<?xml version="1.0" encoding="utf-8"?> <paths> <external-cache-path name="tokePhoto" path="." /> </paths>
-
在需要使用的时候判断 android 版本大于等于 7.0 的使用 FileProvider
if (Build.VERSION.SDK_INT >= 24) { Uri contentUri = FileProvider.getUriForFile(this, BuildConfig.APPLICATION_ID + ".fileProvider", file); captureCameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, contentUri); } else { captureCameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(file)); }
android 使用系统的拍照 选择图片 裁剪 中的坑
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- 只简述我发现问题的根源,有些是适配了7.0,会报权限失败问题,那是由于没有动态授权导致,接下来我一步一步给大家实现...
- 一,前言:在日常的手机应用开发过程中,经常会遇到上传图片的需求,像上传头像之类的,这就需要调用系统的相机,相册获取...
- 文章内容转载自Android 7.0 行为变更 通过FileProvider在应用间共享文件吧 - CSDN博客 ...
- 百日目标检 目标1.让自己工作更加得心应手, 目标2.用最短时间完成最大化任务 目标3.养成良好习惯 本周成果 ...