拍照、选择照片以及获取到的照片的处理
1.拍照
//先开启拍照权限
public void applyWritePermission() {
String[] permissions = {Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE};
if (Build.VERSION.SDK_INT >= 23) {
int check = ContextCompat.checkSelfPermission(getActivity(), permissions[0]);
// 权限是否已经 授权 GRANTED---授权 DINIED---拒绝
if (check == PackageManager.PERMISSION_GRANTED) {
useCamera();
} else {
requestPermissions(new String[]{Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1);
}
} else {
useCamera();
}
}
private void useCamera() {
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
file = new File(Environment.getExternalStorageDirectory().getAbsolutePath()
+ "/test/" + System.currentTimeMillis() + ".jpg");
file.getParentFile().mkdirs();
//注意此处 https://blog.youkuaiyun.com/Next_Second/article/details/78585745
//根据里面进行修改 (com.example.jh.swag.fileprovider)此处为自己的包名
imageUri = FileProvider.getUriForFile(getActivity(), "com.example.jh.swag.fileprovider", file);
//添加权限
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
startActivityForResult(intent, 0);
}
2. 选择照片
//在这里跳转到手机系统相册里面
Intent intent = new Intent(
Intent.ACTION_PICK,
android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(intent, requestCode);
//获取系统返回的照片进行处理
Uri selectedImage = data.getData(); //获取系统返回的照片的Uri
String[] filePathColumn = {MediaStore.Images.Media.DATA};
Cursor cursor = getActivity().getContentResolver().query(selectedImage,
filePathColumn, null, null, null);//从系统表中查询指定Uri对应的照片
cursor.moveToFirst();
int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
paths = cursor.getString(columnIndex); //获取照片路径
/* intent = new Intent(getActivity(), CropFivePicActivity.class);
intent.putExtra("file_path", paths);
intent.putExtra("type", 1);.
startActivityForResult(intent, 7);*/
cursor.close();
} catch (Exception e) {
e.printStackTrace();
}