MIME-тип для каталогов в Android - PullRequest
8 голосов
/ 20 января 2011

Мне было интересно, могу ли я запустить Intent для просмотра каталога с помощью браузера файлов (если он установлен на устройстве), чтобы я мог открыть папку, подобную этой:

Intent intent = new Intent(Intent.ACTION_VIEW);
Uri uri = Uri.parse("file:///sdcard/MyFolder");
intent.setDataAndType(uri, "MIME TYPE FOR FOLDERS");
startActivity(intent);

Ответы [ 6 ]

3 голосов
/ 03 апреля 2012

Строки 'inode / directory' и 'x-directory / normal' кажутся уже существующими типами MIME для систем на основе Unix, согласно нескольким поискам в Google, но ничего из того, что у меня есть на телефоне, об этом не знает Я, вероятно, проверю и предложу их, прежде чем искать каталог vnd.android.cursor.item /, который, по крайней мере, имеет значение отсутствия привязки к конкретному приложению.

Я бы не хотел использовать тип приложения.

(Я только что обнаружил, что ES использует 'resource / folder', которая также правдоподобно независима; очень жаль, что нет никакого способа сказать Android, что все эти типы эквивалентны.)

3 голосов
/ 07 февраля 2011

AndExplorer имеет типы MIME-поставщика для использования AndExplorer в качестве средства выбора файлов:

  • vnd.android.cursor.dir/lysesoft.andexplorer.director
  • vnd.android.cursor.dir/lysesoft.andexplorer.file

См. Документация разработчика AndExplorer для получения дополнительной информации.Я считаю, что другие исследователи файлов похожи, но я еще не нашел их документы.

2 голосов
/ 22 апреля 2018

Это древний вопрос, но я заметил, что каталог MimeType фактически не был указан должным образом ни в одном из ответов. Я нашел это в примере кода Google для SAF (Storage Access Framework) android-StorageProvider :

DocumentsContract.Document.MIME_TYPE_DIR

Что это за строка:

vnd.android.document/directory

Итак, для первоначального вопроса:

    Uri uri = Uri.parse(getFilesDir().getPath());
    int OPEN_REQUEST = 1337;
    Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
    intent.addCategory(Intent.CATEGORY_OPENABLE);
    intent.setDataAndType(uri, DocumentsContract.Document.MIME_TYPE_DIR);

    startActivityForResult(intent, OPEN_REQUEST);

Но Storage Access Framework будет перемещаться по каталогам для вас. Так что вам может понадобиться только сделать это:

    int OPEN_REQUEST = 1337;
    Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
    intent.addCategory(Intent.CATEGORY_OPENABLE);
    intent.setType("*/*");

    startActivityForResult(intent, OPEN_REQUEST);
2 голосов
/ 30 июля 2015

По официальным документам это vnd.android.cursor.dir / *

2 голосов
/ 25 февраля 2012

Браузер файлов Blackmoon отвечает на тип MIME

  • vnd.android.cursor.item / файл

для того, чтобы открыть его представление, чтобы было показано содержимое папки или, в случае файла, его родительская папка показана прокрученной, чтобы показать этот конкретный файл.

Вы можете просмотреть документацию разработчика Blackmoon с указанием различных намерений, которые он также использует.

Плохо, что Android не указал конкретный тип MIME для просмотра файла / папки в приложении для просмотра файлов. Таким образом, все приложения для управления файлами будут использовать одни и те же намерения, чтобы пользователи могли свободно выбирать между любыми приложениями, которые им подходят, вместо того, чтобы быть заблокированными в каком-либо конкретном приложении.

Наверное, поэтому существует такой сайт, как http://www.openintents.org/, чтобы разработчики могли поделиться некоторыми стандартами или, по крайней мере, опубликовать некоторые стандартные возможности приложения.

0 голосов
/ 19 декабря 2013

Поскольку файлы, которые являются каталогами, по-видимому, не имеют стандартного типа MIME, я написал свой обозреватель файлов для фильтрации намерений без MIME-типа.Просто установите данные для Uri вашей папки.Это также устанавливает схему намерения на «файл», что требуется для фильтра намерений.

Intent intent = new Intent(Intent.ACTION_VIEW);
Uri uri = Uri.parse("file:///sdcard/MyFolder");
intent.setData(uri);
startActivity(intent);

Это намерение запустит следующее приложение:

http://play.google.com/store/apps/details?id=com.organicsystemsllc.thumbdrive

...