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



我必须对我的一个应用程序进行一些更改以支持Android 7。我正在创建一个带有内容 Uri 的 ACTION_IMAGE_CAPTURE - 意图,用于EXTRA_OUTPUT,我想设置用于图像的文件名。有没有办法通过为内容值设置某个条目来做到这一点?我从后面得到的乌里

getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);

包含文件的媒体存储 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);

我发现通过设置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);

最新更新