2016-06-14 2 views
1

Я использую API-интерфейс доступа к хранилищу Android для доступа к внешнему накопительному USB-накопителю, подключенному к Android.Android Storage Access FrameWork с пользовательской файловой системой

Мои вопросы: что если USB-накопитель содержит формат файла, непонятный андроиду, я все равно смогу получить доступ к файлам на внешнем USB-накопителе?

Могу ли я написать свои собственные функции низкого уровня для доступа к диску, формат файла которого неизвестен для android Storage Access FrameWork?

Скажем, я создаю свой собственный формат диска по соображениям безопасности, как Android представит диалоговое окно, показывающее пользователю содержимое файлов, чтобы они могли выбрать файл, предоставляющий разрешение приложения для доступа к этому файлу, что он не знает формат файла привода?

Благодаря

ответ

0

что, если USB-диск содержит формат файла не понят андроида, буду ли я иметь возможность получить доступ к файлам на внешнем накопителе USB?

Да.

Могу ли я написать свои собственные функции низкого уровня для доступа к диску, формат файла которого неизвестен для android Storage Access FrameWork?

Вы должны написать свои собственные драйверы USB, используя низкий уровень USB APIs (как вы сказали, Android не умеет читать ваш диск USB)

Допустим, я создаю мой собственный формат диска по соображениям безопасности, как Android представит диалоговое окно, показывающее пользователю содержимое файлов, чтобы они могли выбрать файл, предоставляющий разрешение на доступ к этому файлу, он не знает формат файла диска?

Ничто в DocumentsProvider API управления, как файлы считываются с диска (даже если они считываются с диска - во многих случаях, как с Google Drive DocumentsProvider, они считываются с удаленного сервера). До тех пор, пока выполняйте API, возвращая Cursor для корня из queryRoots(), Cursor с соответствующими полями от queryDocument() для одного документа и Cursor со списком документов от , тогда система доступа к хранилищу будет правильно отображать ваши файлы.

Просто убедитесь, что вы предоставили действительный ParcelFileDescriptor до openDocument(), который позволит читать и записывать доступ к вашей пользовательской системе форматов файлов.

+0

Большое спасибо за ответы и вашу помощь. Но вы говорите, что Android 6.0.1 и Storage Access FrameWork позволяют приложениям писать свой собственный низкоуровневый USB (перевод builk и т. Д.), Чтобы получить доступ к приводу USB, подключенному непосредственно к андроиду? Я думал, что функции USB низкого уровня были заблокированы, и мы можем использовать инфраструктуру доступа к хранилищу, чтобы получить uri для документа USB, и все доступно через uri? – programmer3

+0

Я думал, что для доступа к файлу на USB-накопителе, подключенном к андроиду, сначала ОС Android будет отображать диалоговое окно (само по себе) пользователю, когда пользователь выбирает файл, а затем ОС Android предоставляет доступ к этому файл только для приложения. Поэтому, если ОС Android не может читать имена файлов с USB-накопителя (возможно, потому, что весь USB-накопитель был зашифрован), то как он будет представлять имена файлов пользователю?Возможно, я не читал это правильно, но то, что вы говорите, имеет смысл, но я действительно новичок в этом. – programmer3

+0

Вы выбрали область, в которой почти не работает разработчик, и есть небольшая документация или поддержка. Весь смысл Storage Access Framework - абстрактное * любое * устройство или хранилище файлов. Сама инфраструктура использует это для обеспечения доступа к SD-картам и прикрепленным USB-устройствам хранения (поскольку нет прямого доступа к файлам в этих местах). Это совершенно отдельно от вас, предоставляя собственные драйверы для пользовательского USB-устройства. – ianhanniballake

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