Что такое копия iOS 'QLPreviewController или UIDocumentInteractionController на Android?

В iOS довольно легко просмотреть многие типы файлов с помощью QLPreviewController или UIDocumentInteractionController. Как можно добиться чего-то подобного на Android и какие форматы файлов поддерживаются?

Ответ 1

Плохая новость: нет компонента предварительного просмотра (SDK level)/View для вас.

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

Есть несколько вещей, которые вы можете сделать, зависит от ваших целей:

  • API 19+: на устройстве с API 19 вы должны использовать платформу доступа к хранилищу (https://developer.android.com/guide/topics/providers/document-provider.html). Все предварительные просмотры и т.д. будут выполняться на ответное приложение.

    Вы будете использовать Intent.ACTION_OPEN_DOCUMENT.

  • Для более старых устройств: существует намерение использовать дополнительный тип файла и категорию, которую вы можете использовать. Это откроет либо встроенный селектор файлов, либо стороннее приложение.

    Intent intent = new Intent();
    intent.setType("image/*");
    intent.setAction(Intent.ACTION_GET_CONTENT);
    intent.addCategory(Intent.CATEGORY_OPENABLE);
    startActivityForResult(intent, REQUEST_CODE);
    

    ** Обратите внимание, что здесь вы можете создать выбор намерения.

  • Для устройств, которые не имеют приложения, которые могут ответить на намерение: вы можете либо связать что-то заранее (https://code.google.com/p/android-file-dialog/), либо в зависимости от тип файла, вы можете запросить базу данных контента для медиафайлов и отобразить их сами с помощью хорошего пользовательского интерфейса.

Дополнительная информация о том, как использовать намерения и как они работают: http://developer.android.com/guide/components/intents-filters.html