我必须对我的某个应用程序进行一些更改才能支持Android 7.我正在创建一个ACTION_IMAGE_CAPTURE - 意图使用内容Uri for EXTRA_OUTPUT,我想设置用于图像的文件名。有没有办法通过为ContentValues设置某个条目来做到这一点?我从后面得到的Uri
getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
包含文件的MediaStore ID。我稍后会查看真实的图像路径,但我想在处理Intent之前定义文件名。
创建意图的代码:
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
ContentValues values = new ContentValues(3);
values.put(MediaStore.Images.Media.MIME_TYPE, "image/jpeg");
docUri = getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, docUri);
startActivityForResult(takePictureIntent, PICK_PHOTO_CODE);
更新:最终代码,设置照片的文件名和日期:
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
ContentValues values = new ContentValues(3);
values.put(MediaStore.Images.Media.MIME_TYPE, "image/jpeg");
values.put(MediaStore.Images.Media.DATA, file.getAbsolutePath());
values.put(MediaStore.Images.Media.DATE_TAKEN, new Date().getTime());
docUri = getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, docUri);
startActivityForResult(takePictureIntent, PICK_PHOTO_CODE);
答案 0 :(得分:0)
我发现通过设置 DISPLAY_NAME
文件路径仍由 ContentProvider 管理,但使用提供的文件名称(附加 .jpg)。
ContentValues values = new ContentValues();
values.put(MediaStore.Images.Media.MIME_TYPE, "image/jpeg");
values.put(MediaStore.Images.Media.DISPLAY_NAME, "name_for_file");
docUri = getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);