由于android 11对存储空间进行了更新,导致无法进入裁剪或者裁剪后无法保存,返回路径等问题.
android 10以下可以参考:android 相机拍照,从相册中选择,裁剪图片
前面部分和之前的一样.
一,兼容android 7.0 在AndroidManifest.xml中先申请临时访问权限,样式和activity同级
<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>
二,申请权限
<uses-permission android:name="android.permission.CAMERA" />
三,打开相机需要动态申请权限
1,可使用google提供的权限库easypermissions动态权限库:https://github.com/googlesamples/easypermissions
详细用法自行百度,google
打开相机/相册
//mImagePath是保存图片的路径,建议放缓存路径,不用权限:getExternalCacheDir()
private Uri photoOutputUri = FileProvider7.getUriForFile(this, new File(mImagePath));
/**
* 打开相机
*/
private void openCamera() {
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
//拍照图片保存到指定的路径
intent.putExtra(MediaStore.EXTRA_OUTPUT, photoOutputUri);
startActivityForResult(intent, 2);
}
/**
* 打开相册
*/
private void openPhoto() {
//调用android的图库
Intent i = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(i, 3);
}