2016-08-25 2 views
0

У меня есть проблема о медиафайлов из MediaStore получить OutputStream> = Android 5.Я запутался и беспомощным о SAF (Storage Framework Access) в Android

Моя проблема заключается в получении дерева документа URI (для доступа на запись) из MediaStore Uri, как «content: // media/external/images/media/334», нет ли api для этого?

Я уже установил разрешение на запись по Intent.ACTION_OPEN_DOCUMENT_TREE. Но единственный способ получить разрешение на запись для медиафайла в настоящее время - это только вручную сделать Uri-документ uri как «content: //com.android.externalstorage.documents/tree/1C10-2004%3A/document/1C10-2004%3Amatze % 2FIMG_20160825_191301.jpg "

У меня есть bellyache, чтобы построить tree-uri сам по себе, есть ли способ сделать это через API Android? (мне нужно только OutputStream в файл Mediastore)

Благодаря

ответ

0

не там нет апи для этого?

экспромтом, который не выглядит как Uri что вы извлеченной из ACTION_OPEN_DOCUMENT_TREE. Только ACTION_OPEN_DOCUMENT_TREE работает с fromTreeUri() по адресу DocumentFile.

мне нужно только OutputStream к MediaStore файл

В теории, называют openOutputStream() на ContentProvider, с Uri. Если это Uri - это отдельная часть контента, то это не дерево.

Теперь, я не знаю, как вы получили это Uri, потому что вы не объяснили это в своем вопросе. Обратите внимание, что you only have access to the content identified by a Uri for a short time.

Но единственный способ, чтобы получить разрешение на запись в MediaFile в настоящее время только вручную сделать URI дерева документа, как

Это тоже не выглядит дерево. Это похоже на отдельный фрагмент контента, в частности JPEG.

Если Uri не работает напрямую с openOutputStream() сразу после того, как вы получили в Uri, то, возможно, вам следует использовать другие механизмы для получения Uri в первую очередь.

+0

Спасибо за ваш ответ! Uri "content: //com.android.externalstorage.documents/tree/1C10-2004%3A/document/1C10-2004%3Amatze%2FIMG_20160825_191301.jpg" - это мозаичный uri сам и с этим uri у меня есть права на запись в jpeg. Выходной поток с ContentProvider работает только с внутренним хранилищем, а не с хранилищем SD-карт; - (Мне нужно только получить доступ к файлам мультимедиа по выходному потоку на внешней Sd-карте без взлома Uri. Спасибо за вашу помощь. – Matze

+0

@Matze: "является возиться с uri сам и с этим uri у меня есть права на запись в jpeg », - это, как представляется, будет представлять собой недостаток безопасности.« Мне нужно только получить доступ к файлам мультимедиа через Outputstream на внешней Sd-карте без взлома Uri's " - попросите пользователя выбрать медиафайлы с помощью 'ACTION_OPEN_DOCUMENT' или, возможно,' ACTION_GET_CONTENT'. Или, на Android 7.0+, используйте 'StorageManager' и предоставите пользователю доступ ко всему объему съемного хранилища. – CommonsWare

+0

Я получаю изображение Uri с помощью системного события камеры, и я добавлю специальный информационный документ в фоновом режиме без взаимодействия пользователя службой. Я не знаю, почему Android 5+ добавляет систему readonly к внешнему SD и читает/записывает во внутреннюю память, но я думаю, что жду следующей версии Anroid, которая заставит это думать легче. – Matze

Смежные вопросы