До уровня 21 это, безусловно, невозможно на ненагруженном устройстве, и нет альтернативы с обычными разрешениями.
Если это нормально, требуют дополнительных прав администратора, возможно, возможно эмулировать подтверждение учетных данных очень слабо, с гораздо большим усилием, реализуя DeviceAdminReceiver.onPasswordSucceeded
. Заблокируйте экран, когда пароль успешно выполнит требуемое действие. Это может оказаться относительно сложным, потому что действие не всегда принимается (только если статус изменился), необходимо сохранить последний успех, связаться с получателем и т. Д.
. В качестве примечания стороны дважды проверьте использования и вашего дизайна, в большинстве случаев, когда используется createConfirmDeviceCredentialIntent, он фактически не требуется, и другие варианты дизайна могут устранить необходимость в нем.
Лучше предоставить подробную информацию о том, что именно вы пытаетесь защитить. Если это случай случайного доступа к устройству неавторизованным лицом, и создается постоянный токен, скажем, из некоторой службы oauth, может быть разумным либо повторно авторизовать через один и тот же поток входа в систему, либо сохранить некоторый hmac исходных учетных данных наряду с токеном, затем запрашивать и повторно проверять учетные данные, а не запрашивать учетные данные устройства. В качестве альтернативы, если этого достаточно для использования, вы можете использовать google login , чтобы разрешить доступ к вашему приложению / токену и проверить, что пользователь Google является тем же самым для сохраненного токена.
Я бы порекомендовал ZipLib .
Личные причины, по которым я люблю этот проект:
Мне понадобилось много времени, чтобы найти этот проект - надеюсь, это кому-нибудь поможет.
Он еще не существовал, когда был задан вопрос. Но теперь это так: miniz - общественное достояние, один файл C, явно вдохновленный подобными stb_image.
Это не общественное достояние, но Minizip , входящий в состав zlib , соответствует трем другим вашим требованиям. Он также содержит miniunz.c, очень простой пример для последующего архивирования.
Самым близким, что я могу придумать, будет Xz-utils , который использует общедоступный LZMA SDK. Это не zip, per se , и при этом он не использует алгоритм deflate, но это одна из немногих библиотек сжатия в открытом доступе.
Public Domain - это LZMA sdk от 7z http://www.7-zip.org/sdk.html
Проблема: документация «не существует» :-(
Самая популярная реализация zip-архива с открытым исходным кодом - Info-Zip . Алгоритм Deflate, используемый в формате zip-файла, реализован библиотекой zlib . Оба выпущены по либеральной, подобной BSD лицензии, но не являются общественным достоянием.
http://www.bzip.org/ - довольно распространенное явление и требование многих easy_installs на многих целевых языках.
Update: Я понимаю, что это неправильно, но это распространенное недоразумение, поэтому я оставляю его как дозорный для описания частой ошибки.