2014-12-10 2 views
2

Я использую следующий код, чтобы открыть zip-файл из любого доступного источника (локальное хранилище Google Диск, падение коробки и т.д.):Выберите файл на Android с заданным временем расширения/MIME

Intent intent = new Intent(Intent.ACTION_GET_CONTENT); 
String mimetype = MimeTypeMap.getSingleton().getMimeTypeFromExtension("zip"); 

intent.setType(mimetype); 

Intent chooser = Intent.createChooser(intent, "Select a zip file"); 

if (intent.resolveActivity(getPackageManager())!=null) 
    startActivityForResult(chooser, 1); 

Это хорошо работает на моем Nexus 5 (с Android 5.0) и на моем Nexus 7 (Andorid 4.4.4). Появится стандартное диалоговое окно Android, позволяющее мне выбрать zip-файл с форматом google drive, drop box и т. Д. Файлы, не соответствующие запрошенному расширению, не могут быть выбраны. Отлично!

Но когда я проверить его на Samsung Tab с Andoroid 4.4.2 это только показывает, выбирающий диалог раздаточной файл ... нет Google Диска, нет локального хранилища, ни файлового менеджера приложений ... Пожалуйста, обратите внимание, что в mimetype код выше равен application/zip. Если я изменил код на intent.setType("*/*");, теперь он отобразит все параметры, например, в Nexus 5 (google drive, dropbox, локальное хранилище и т. Д.), Однако я могу выбрать любой файл, а не только zip, и это не то, что я хочу.

+0

У нас есть та же проблема, что и у вас с приложением для клиента. Но мы пытаемся открыть PDF-файлы вместо ZIP. Вы уже нашли решение для этого? – Florian

+1

... нет, в конце концов я сдался ... Я использую aim.setType ("\ */\ *"); и затем я проверяю, действительно ли файл, выбранный пользователем, zip (или pdf в вашем случае). Это очень раздражает ... – lviggiani

ответ

0

Вы попробовали?

intent.setType("application/zip|application/x-rar-compressed"); 
Смежные вопросы