2016-03-10 2 views
0

Последние Android 6,0 ​​forces developers для проверки и разрешения запросов по требованию, и использовать библиотеки поддержки сделать это в предыдущих версиях через вызовы, такие как:по требованию разрешения в статической области

ContextCompat.checkSelfPermission(someAndroidContext, somePermission) 

Однако, у меня есть особый случай, когда мне требуются права доступа к файлу перед существованием любого Context из-за извлечения и загрузки собственной библиотеки, которая должна произойти во время инициализации класса static до возникновения Контекста. Добавление разрешений манифеста не работает (приложение разбито на совершенно новые телефоны с Android> = 6.0).

Просьба не предлагать обходные пути, такие как «не извлекать библиотеки» или запрашивать слишком подробные сведения о требованиях и т. Д., Так как я не могу быть вправе обсуждать эти детали, проект большой и там являются взаимозависимыми библиотеками, которые должны находиться в незапакованном пространстве до загрузки, а также есть сторонние библиотеки, которые представляют собой очень сложные проекты (у одного есть 20+ зависимостей, которые были тщательно оптимизированы и построены вручную для конкретных архитектуры на запрос клиента).

TL; DR Есть ли способ «предварительно спросить» разрешения перед запуском приложения или запросить разрешение без Context?

ответ

0

Есть ли способ, чтобы «заранее спросить» за разрешениями до нашего запуска приложения

Держите ваш targetSdkVersion ниже 23 до конца времени, молитесь, чтобы Google не меняет правила , и молитесь, чтобы у вас не возникала конкурирующая причина поднимать targetSdkVersion до 23 или выше. С targetSdkVersion из 22 или ниже ваши разрешения предоставляются во время установки (как в случае с Android 5.1 и ниже).

В противном случае, нет.

Также обратите внимание, что вы все равно не сможете писать на внешнее хранилище даже с предварительно предоставленным разрешением. Пользователь может установить ваше приложение, перейти в «Настройки», отменить разрешения на хранение, а затем запустить приложение.

разрешение на запрос без контекста?

Нет. Запросные разрешения предоставляются в виде запуска системы, и для этого требуется Context.

У меня есть особый случай, когда я требовать ввод/вывод файла разрешение до существования любого контекста из-за родное извлечение библиотеки и загрузки, которые должны произойти во время статической инициализации класса за до контекста приходит в бытии

Вам не нужны «права доступа к файлам» для internal storage. Извлечение библиотек до external storage глупо за пределами слов по очевидным соображениям безопасности.

+0

Ошибки происходят с внешним хранилищем, так как файлы конфигурационных файлов разработчика, которые переопределяют упакованные версии, находятся по очень недурким причинам (пользовательская ОС, у которой нет внутренней записи, доступной для записи). Экстракция происходит как внутри, так и снаружи в зависимости от конфигурации. Внешнее извлечение очень важно для целей тестирования и проверки для разработчиков, которые не могут напрямую обращаться к устройству. Этот материал из моих рук. – EntangledLoops

+0

@EntangledLoops: «пользовательская ОС, которая не имеет записываемой внутренней памяти» - тогда вы также можете изменить ОС, чтобы решить вашу исходную проблему с разрешениями. – CommonsWare

+0

Нет, я не могу, поскольку он построен сторонним клиентом, который является крупной компанией, которая делает ОС. – EntangledLoops

Смежные вопросы