Я пытаюсь запросить разрешения для моей деятельности Launcher. Для API < 23 он отлично работает. Однако, когда я тестирую приложение на устройстве, использующем API 23, он говорит: «PostPaid Balance остановлен». Я нажал кнопку «закрыть приложение», приложение закрывается и сразу же запрашивает одно разрешение. Я ударил. Затем я нажимаю значок приложения для повторного открытия и происходит то же самое, за исключением того, что теперь он запрашивает следующее разрешение. Затем я нажимаю значок приложения, и на этот раз выполняется правильно. Кажется, что он запрашивает разрешения по одному за раз. Любые идеи о том, как это сделать?Android API 23 Запрос нескольких разрешений
// Below code is implemented on onCreate() of the launcher activity.
if (Build.VERSION.SDK_INT < 23) {
ActivityCompat.checkSelfPermission(this.getApplicationContext(), "android.permission.READ_SMS");
ActivityCompat.checkSelfPermission(this.getApplicationContext(), Manifest.permission.READ_CALL_LOG);
ActivityCompat.checkSelfPermission(this.getApplicationContext(), Manifest.permission.READ_PHONE_STATE);
if ((ActivityCompat.checkSelfPermission(this, "android.permission.READ_SMS") != PackageManager.PERMISSION_GRANTED)) {
requestSmsPermission();
}
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) {
requestPhoneStatePermission();
}
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_CALL_LOG) != PackageManager.PERMISSION_GRANTED) {
requestCallLogPermission();
}
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if ((this.checkSelfPermission("android.permission.READ_SMS") != PackageManager.PERMISSION_GRANTED) &&
(this.checkSelfPermission(Manifest.permission.READ_CALL_LOG) != PackageManager.PERMISSION_GRANTED) &&
(this.checkSelfPermission(Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED)) {
this.requestPermissions(new String[]{"android.permission.READ_SMS", Manifest.permission_group.PHONE}, REQUEST_SMS);
}
}
Запрос все три разрешений в едином 'requestPermissions()' вызов. Кроме того, непонятно, почему у вас настроен ваш код, чтобы делать разные вещи на основе уровня API. 'ActivityCompat' и' ContextCompat' совместимы с обратной связью. – CommonsWare
Я настраиваю код, чтобы делать разные вещи, потому что некоторые функции не будут доступны для API <23. –
Что вы порекомендуете? Должен ли я запрашивать разрешения только в том случае, если API равен 23, и игнорировать if (API <23)? –