使用getContentResolver.insert()的默认照片文件名

时间:2017-11-01 14:19:07

标签: android uri android-contentprovider

我必须对我的某个应用程序进行一些更改才能支持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);

1 个答案:

答案 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);