我想允许我的android应用程序的用户使用默认的相机应用程序拍照
我遵循了here中的指南,该指南使用FileProvider
获取以content://
开头的URI。但这是通过首先创建一个临时文件,然后获取其URI,然后将该URI发送到将保存图像的Camera应用程序来实现的。
这对我来说听起来很愚蠢,因为如果用户改变主意并且不拍照,则不会删除临时文件。
这是Andoid指南提供的代码
private File createImageFile() 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, ".jpg", storageDir);
return image;
}
static final int REQUEST_TAKE_PHOTO = 1;
private void dispatchTakePictureIntent() {
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
if (takePictureIntent.resolveActivity(getPackageManager()) != null) {
// Create the File where the photo should go
File photoFile = null;
try {
photoFile = createImageFile();
} catch (IOException ex) {
// Error occurred while creating the File
...
}
if (photoFile != null) {
Uri photoURI = FileProvider.getUriForFile(this, "com.example.android.fileprovider", photoFile);
takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, photoURI);
startActivityForResult(takePictureIntent, REQUEST_TAKE_PHOTO);
}
}
}
是否有一种无需首先创建文件即可获取正确uri的方法?还是保存照片的更好方法?