Для каких классов могут потребоваться *_ACCOUNTS и соответствующие разрешения?

Я очищаю код приложения, которое запрашивает в своем манифесте следующее:
android.permission.GET_ACCOUNTS
android.permission.AUTHENTICATE_ACCOUNTS
android.permission.MANAGE_ACCOUNTS
android.permission.USE_CREDENTIALS
android.permission.INTERACT_ACROSS_USERS_FULL

Вопрос в том, какие импорты классов/пакетов я должен искать при поиске того, что может потребоваться для них?

Я уже искал AccountManager - безрезультатно. Возможно, они больше не нужны, но я хочу знать момент, в котором я могу быть уверен.

[EDIT] Настройки Lint, которые помогут найти это, будут еще лучше. Вот мои: введите здесь описание изображения

Я не вижу опции «отсутствующие разрешения».
Если я удаляю все разрешения, включая все сетевые, READ_PHONE_STATE и READ_EXTERNAL_STORAGE, сборку и запуск приложения, то происходит сбой WifiManager.getWifiState с исключением SecurityException, связанным с ACCESS_WIFI_STATE.

[EDIT2] Проверка "несоответствия типов" включена. Не все версии Android использовал аннотацию @RequiresPermission.
введите здесь описание изображения

Моя конфигурация: скомпилировать SDK версии 23, мин. 14, цель 22, инструменты сборки версии 25.0.1.


person kaay    schedule 14.06.2017    source источник
comment
если вы просто удалите разрешения из манифеста, вы должны получить несколько предупреждений, где вам нужны разрешения, я думаю   -  person lelloman    schedule 14.06.2017
comment
@lelloman Я ничего не вижу. См. редактирование.   -  person kaay    schedule 14.06.2017


Ответы (1)


Я только что попробовал, и вы действительно должны получить предупреждение об отсутствии разрешений. На самом деле это даже не предупреждение, а ошибка. Вариант находится в Settings -> Editor -> Inspections -> Android -> Constant and Resource Type Mismatches, если вы прочитаете описание, то увидите что-то вроде

Вызов метода, требующего разрешения, без объявления этого разрешения в манифесте

Это на AS 2.2.3

ОБНОВИТЬ:

Я только что проверил проект с compile sdk 23, и в исходном коде AccountManager действительно есть @RequiresPermission

person lelloman    schedule 14.06.2017
comment
Похоже, именно то, что мне нужно. Странно, если он не включен по умолчанию. Спасибо, я вернусь к этому в понедельник. - person kaay; 14.06.2017
comment
ОК, я включил его и установил на ОШИБКУ, но он никогда не срабатывает, даже в тестовом приложении, которому требуется ИНТЕРНЕТ, КАМЕРА и CALL_PHONE. Ставлю на отсутствие аннотаций @RequiresPermission. Вопрос обновлен. Есть идеи, что еще мне нужно? - person kaay; 19.06.2017
comment
гм, это все еще звучит странно, проверьте это, @RequiresPermission на самом деле не требуется для точного метода, который вы вызываете. - person lelloman; 19.06.2017