Sto cercando di inserire un video nel MediaStore
, allo stesso modo è possibile memorizzare un'immagine con questo metodo:Inserimento di un video in MediaStore
MediaStore.Images.Media.insertImage(getContentResolver(), imagePath, null, null)
In mancanza di un metodo simile MediaStore.Video.Media
, quello che ho cercato di fare era inserire un record in MediaStore.Video.Media.EXTERNAL_CONTENT_URI
e quindi copiare il file alla destinazione, come illustrato di seguito:
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);
}
il uri
restituito viene non-null
sotto forma di content://media/external/video/media/{id}
, che sembra corretto.
Tuttavia, quando viene eseguito il numero cr.openOutputStream(uri);
, viene emesso un numero FileNotFoundException
.
Questo ultimo bit è simile a quello che viene fatto per Images.Media.insertImage guardando il suo codice sorgente.
Btw, ho l'autorizzazione WRITE_EXTERNAL_STORAGE
. Inoltre, sto testando su 4.3 & 4.4.
Ho lo stesso problema sul mio Nexus 5 con 4.4.4. – Erik
eventuali soluzioni persone? – ARO
hai trovato qualche soluzione? –