阅读使用相机拍摄的照片意向
问题描述:
我正在尝试阅读并显示使用相机拍摄的照片。 我的代码是基于android的文档中发现的例子:阅读使用相机拍摄的照片意向
public void takeSidePhoto(View view) {
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
if (takePictureIntent.resolveActivity(getPackageManager()) != null) {
File photoFile = null;
try {
photoFile = createImageFile(REQUEST_IMAGE_CAPTURE_SIDE);
} catch (IOException ex) {
}
if (photoFile != null) {
Uri photoURI = FileProvider.getUriForFile(this, "my.app.package.fileprovider", photoFile);
imageSide = photoURI.toString();
takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, photoURI);
startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE_SIDE);
}
}
}
private File createImageFile(int imageCaptureCode) throws IOException {
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
String imageFileName = "JPEG_" + timeStamp + "_";
File storageDir = getExternalFilesDir(Environment.DIRECTORY_PICTURES);
File image = File.createTempFile(
imageFileName, /* prefix */
".jpg", /* suffix */
storageDir /* directory */
);
return image;
}
的问题是,传递给takePictureIntent
的photoURI
是(例如): file:/storage/emulated/0/Android/data/my.app.package/files/Pictures/JPEG_20160921_123241_562024049.jpg
但是,当我浏览我的检测设备存储与文件管理器,我可以看到拍摄的照片存储在: file:/storage/Android/data/my.app.package/files/Pictures/JPEG_20160921_123241_562024049.jpg
发生了什么以及如何获取真实文件的路径?
在try块
答
做这样的事情来获取路径
if(photoFile.exists()){
String path = photoFile.getAbsolutePath()
}
答
的takeSidePhoto()方法应具有以下内容:
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
if (takePictureIntent.resolveActivity(getActivity().getPackageManager()) != null) {
File photoFile = null;
try {
photoFile = createImageFile();
imageUri = Uri.fromFile(photoFile);
} catch (IOException ex) {
Toast.makeText(getActivity(), ex.toString(), Toast.LENGTH_SHORT).show();
}
if (photoFile != null) {
takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
startActivityForResult(takePictureIntent, CAMERA_REQUEST_CODE);
}
} else {
Toast.makeText(getActivity(), R.string.no_camera_error_message, Toast.LENGTH_SHORT).show();
}
而且在createImageFile()方法改变这一行File storageDir = getExternalFilesDir(Environment.DIRECTORY_PICTURES);
与此File storageDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
答
使用以下代码获取存储目录并将图像保存到路径。
String path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).toString();
'FileProvider'不会从'getUriForFile()'''''''''''file'方案返回'Uri'值。它用'content'方案返回'Uri'值。除此之外,请详细解释**您正在使用的“文件管理器”。 – CommonsWare