Обновить

Расширение врёт: как я учил Android-приложение открывать двести типов файлов по первым байтам

Уровень сложностиСредний
Время на прочтение11 мин
Охват и читатели7.7K
Всего голосов 2: ↑1 и ↓10
Комментарии9

Комментарии 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 запрещает обходить защиту книг (да и закон тоже). Поэтому приложение честно пишет, что книга защищена, и предлагает открыть её в приложении магазина.

А, я понял. Я неправильно себе представлял DRM (сам не употребляю). Думал, оно в виде электронной подписи (а не шифрованного контейнера)...

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации