Для чего используются флаги защиты «appop» и «development»?

Я писал тестовый код, чтобы проверить тип и объем разрешений, которые запрашивают наши приложения, и я заметил, что два новых уровня защиты были недавно добавлены в Android.

Согласно официальным документам Android , элемент <permission> в AndroidManifest.xml принимает одно из следующих четырех значений:

Android: protectionLevel = ["normal" | «Опасный» | «Подпись» | "SignatureOrSystem"]

Но я заметил, что класс PermissionInfo (см. Здесь ) имеет флаги для всего шести уровней защиты. Кажется, что эти два уровня были добавлены в SDK 16 и 21 соответственно, но они, похоже, не документированы:

 int PROTECTION_FLAG_DEVELOPMENT = 0x20 int PROTECTION_FLAG_APPOP = 0x40 

Мне было интересно, каковы различия между этими уровнями защиты и теми, которые могут быть определены в манифесте, и если / когда они должны использоваться.

Разрешение appop – это не что иное, как напоминание о инструменте App Ops, который Google представил на Android 4.3 и с тех пор удалена. Теоретически, разрешения с флагом appop могут быть переключены пользователем во время тестирования, чтобы проверить, как приложение будет вести себя, когда определенные функции программного или аппаратного обеспечения были включены или отключены.

Это фактическое описание App Ops, данное инженерами Google:

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

Вот ссылка на полный пост: https://plus.google.com/+DannyHolyoake/posts/FkfBxA5i3iG

Флаг development ( 0x20 ):

Дополнительный флаг из базового типа разрешения: это разрешение также может (необязательно) предоставляться приложениям разработки.

И флаг appop ( 0x40 ):

Дополнительный флаг из базового типа разрешения: это разрешение тесно связано с приложением op для контроля доступа.

Вот ссылка: http://developer.android.com/reference/android/R.attr.html

Разрешение на development или что-то подобное обычно используется в ситуациях, когда определенные разрешения необходимы для целей разработки / отладки, но не для целей выпуска. Например, предположим, что вы создаете новое приложение. Сначала вы развертываете версию кандидата для релиза приложения для избранной группы людей / тестеров. Вы можете использовать уровень разрешений для development чтобы включить функции, которые могут быть полезны для первоначального тестирования и сбора результатов, такие как GPS, чтобы увидеть местоположение вашей группы тестирования и возможности хранения / сети для хранения и отправки журналов для анализа. После того, как вы будете готовы к общему выпуску, вы удалите это разрешение, поскольку сбор таких данных больше не нужен или, что более вероятно, не представляется возможным для большей группы людей (например, проблемы конфиденциальности и т. Д.).

Что касается разрешения на appop , я не совсем уверен …

GRANT_RUNTIME_PERMISSIONS предоставляется оболочке приложения. Он позволяет пользователю оболочки предоставлять разрешения на разработку во время выполнения. Это делается с помощью команд pm grant и pm revoke .

Вы можете проверить frameworks/base/core/res/AndroidManifest.xml чтобы узнать, какие разрешения, которые обычно предоставляются только для сигнатур или системных приложений, могут предоставляться обычным приложениям оболочкой.

Intereting Posts
Удалить SearchOrbView Android TV Скрыть клавиатуру после того, как пользователь завершит запрос в SearchView Включить промежуточную прокрутку в NestedScrollView (Android Studio) ViewPager не показывает ничего Как вы можете использовать загрузчик, который является анимированным счетчиком с загрузчиками изображений, такими как Glide, Picasso и т. Д.? Android Создание настраиваемого измерения в Google Analytics Каковы плюсы и минусы использования нескольких процессов в приложении android Как передать символ запятой, символ ACTION_DIAL в Android Консоль разработчика Google: как просмотреть все рейтинги в списке отзывов? Android. Как сохранить кнопку, отображаемую как PRESSED, до тех пор, пока действие, созданное этой кнопкой, не будет завершено? Как правильно импортировать библиотеку и модули в студию Android Как реклама работает на мобильных телефонах? Как определить события MediaPlayer youtube из службы Преобразовать байт в тип буфера Я обновил Android от targetSdk 22 до 23, и я получаю NoSuchMethodError. Как я могу это исправить?