Я пытаюсь вставить видео в MediaStore
, так же как можно сохранить изображение с помощью этого метода:
MediaStore.Images.Media.insertImage(getContentResolver(), imagePath, null, null)
Поскольку на MediaStore.Video.Media
нет подобного метода, я попытался сделать запись в MediaStore.Video.Media.EXTERNAL_CONTENT_URI
, а затем скопировать файл в пункт назначения, как показано ниже:
ContentValues values = new ContentValues();
values.put(MediaStore.Video.Media.TITLE, "Title1");
values.put(MediaStore.Video.Media.MIME_TYPE, "video/mp4");
values.put(MediaStore.Video.Media.DATA, videoPath);
Uri uri = cr.insert(MediaStore.Video.Media.EXTERNAL_CONTENT_URI, values);
try {
OutputStream os = cr.openOutputStream(uri);
...
...
} (FileNotFoundException e) {
cr.delete(uri, null, null);
}
Возвращаемое значение uri
равно non-null
в форме content://media/external/video/media/{id}
, что кажется правильным.
Но затем, когда cr.openOutputStream(uri);
вызывается, вызывается FileNotFoundException
.
Этот последний бит аналогичен тому, что сделано для Images.Media.insertImage, смотрящего на его исходный код.
Btw, у меня есть разрешение WRITE_EXTERNAL_STORAGE
. Кроме того, я тестирую 4.3 и 4.4.