Próbuję wstawić wideo do MediaStore
, w ten sam sposób jest to możliwe do przechowywania obrazu za pomocą tej metody:Wstawianie wideo do Mediastore
MediaStore.Images.Media.insertImage(getContentResolver(), imagePath, null, null)
Ponieważ nie ma podobna metoda na MediaStore.Video.Media
, co ja próbowałem zrobić to wstawić rekord do MediaStore.Video.Media.EXTERNAL_CONTENT_URI
a następnie skopiować plik do miejsca docelowego, jak pokazano poniżej:
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
zwrócony jest non-null
w postaci content://media/external/video/media/{id}
, co wydaje się poprawne.
Ale kiedy zostanie spełniony cr.openOutputStream(uri);
, zostanie zgłoszony FileNotFoundException
.
Ten ostatni bit jest podobny do tego, co robi się dla Images.Media.insertImage patrząc na jego kod źródłowy.
Przy okazji mam pozwolenie na WRITE_EXTERNAL_STORAGE
. Ponadto testuję na 4.3 & 4.4.
Mam ten sam problem na moim Nexusie 5 z 4.4.4. – Erik
rozwiązania ludzie? – ARO
znalazłeś jakieś rozwiązanie? –