Подтвердить что ты не робот

Android, найти все места в коде для запроса разрешений

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

Вопрос: как найти все места в коде, где нужно запрашивать разрешение? Я использую Android Studio.

ИЗМЕНИТЬ
Некоторые люди предлагают изменить api на 23 и просто запустить приложение и посмотреть места, где он сбой. Проблема в том, что приложение не разбивается на все места.

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

TelephonyManager manager = (TelephonyManager) context
            .getSystemService(Context.TELEPHONY_SERVICE);

Пока этот только возвращает пустой массив, а не сбой.

final String[] SELF_PROJECTION = new String[]{
    ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME,};
Cursor cursor = context.getContentResolver()
    .query(ContactsContract.Profile.CONTENT_URI, SELF_PROJECTION, null, null, null);

Кроме того, Android Lint не показывает эти места. Я не уверен, что это должно быть.

4b9b3361

Ответ 1

Согласно странице разработчика относительно разрешений безопасности:

Однако почти во всех случаях в системный журнал печатается сбой разрешения.

Итак, запустите приложение и выполните поиск в журнале для "разрешений" или аналогичного.

Используйте модульное тестирование для обеспечения охвата всех мест в коде, где могут потребоваться разрешения.

Ответ 2

Добавить

lintOptions {
    enable 'MissingPermission'
}

в build.gradle. Это покажет предупреждения после создания вашего приложения.

Ответ 3

Конечно, скомпилируйте таргетинг api 23, не добавляйте в код разрешений, запустите приложение и посмотрите, где он сбой.

Как только вы начнете определять местоположения, затем переходите к разрешениям (через настройки приложения), чтобы вы могли пройти мимо этого экрана, а затем отбросить их, чтобы вы могли увидеть, сработает ли он.

Logcat довольно описательный, позволяя вам знать, что разрешения запрещены...

Ответ 4

Вы можете сделать этот трюк: удалить опасные разрешения из манифеста. Таким образом, вы можете протестировать практически на любом устройстве, вы будете уверены, что он потерпит крах, и вы найдете точные места, где вам нужны эти разрешения. Вот как я это сделал.

Ответ 5

Запросить все разрешения, необходимые при первом запуске вашего приложения.

Это не Best Practices, но это ответ этого вопроса.