Проблемы с разрешением во время выполнения Android M

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

Код вроде не работает. Приложение перезагружается, но останавливается там, где оно было; сохраняя те же настройки, которые были заданы устройством при первом запуске.

// Schedule start after 1 second
        PendingIntent pi = PendingIntent.getActivity(this, 0, getIntent(), PendingIntent.FLAG_CANCEL_CURRENT);
        AlarmManager am = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
        am.set(AlarmManager.RTC, System.currentTimeMillis() + 10000, pi);

        // Stop now
        System.exit(0);

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

1 ответ

Решение

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

@Override
public void onRequestPermissionsResult(int requestCode,
                                       String permissions[], int[] grantResults) {


    switch (requestCode) {
        case Constants.YOUR_REQUEST_CODE: {
            // If request is cancelled, the result arrays are empty.
            if (grantResults.length > 0
                    && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                // permission was granted. do your stuff here
            } else {
                // Permission denied - Show a message to inform the user that this app only works
                // with these permissions granted

            }
            return;
        }

    }
}
Другие вопросы по тегам