Проблемы с разрешением во время выполнения 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;
}
}
}