Комментарии 9
В линуксе есть утилита file, которая как раз этим и занимается. Андроид - как бы в некотором смысле Линукс, во всяком случае портировать file с его уже готовыми наборами сигнатур не должно быть проблемой...
Точнее библиотека libmagic - а та ещё с собой базу данных с mime-type вроде бы тащит.
$ ldd /usr/bin/file
libmagic.so.1 => /usr/lib/x86_64-linux-gnu/libmagic.so.1
libmagic смотрел. Он отвечает на вопрос «что это за тип», а мне нужно ещё «каким просмотрщиком открыть». Для ZIP-контейнеров вроде .pkpass или документов iWork он скажет просто «Zip archive», а приложению надо заглянуть внутрь. Ещё важен порядок проверок, контейнеры раньше PDF. И веб-часть написана на JavaScript, так что libmagic пришлось бы тащить в WebAssembly вместе с базой. Поэтому я написал своё распознавание формата: оно небольшое, ничего лишнего с собой не тянет и сразу решает, каким просмотрщиком открыть файл.
RARJPEG поддерживаете? =))
Пока нет: откроется как картинка. Но 7-Zip внутри приложения такой файл открывает, я проверил, так что «Показать файлы внутри» для картинок с хвостом добавлю.
Добавил в версии 1.39, она уже в Google Play: если к картинке приклеен архив, в меню появляется «Показать файлы внутри», архив открывается встроенным 7-Zip. Спасибо за идею!
Книги с DRM не открываются и не будут: снимать защиту нельзя
А без снятия защиты открыть нельзя?
Технически — да, это возможно: ключ к книге всё равно хранится на устройстве, иначе её не смогла бы показать и официальная читалка. Но это официальное приложение в Google Play, а Google запрещает обходить защиту книг (да и закон тоже). Поэтому приложение честно пишет, что книга защищена, и предлагает открыть её в приложении магазина.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Расширение врёт: как я учил Android-приложение открывать двести типов файлов по первым байтам