Android Preview M: активность воссоздается после предоставления разрешения
Я играю с Preview M и тестирую на нем свое приложение, особенно часть «Сохранение файла во внешнем хранилище». Перед началом процесса загрузки / сохранения я запрашиваю
Manifest.permission.WRITE_EXTERNAL_STORAGE
разрешение, как описано на странице разработчика:https://developer.android.com/preview/features/runtime-permissions.html
Диалог происходит, как и ожидалось:
"Allow <AppName> to access photos, media, and files on your device?" Deny / Allow
Если я нажимаю кнопку «deny», вызывается метод onRequestPermissionsResult для действия.
Если я нажимаю кнопку «allow», действие сначала воссоздается, а затем вызывается метод onRequestPermissionsResult. Я думаю, что это результат предоставленного разрешения.
Но вторая ситуация сложна, потому что я хочу вызвать обратный вызов, который запускает загрузку, но этот объект является нулевым в этой точке:
public void onRequestPermissionsResult(int requestCode,
String permissions[], int[] grantResults) {
getLogger().error("onRequestPermissionsResult ( " + requestCode + ", " + permissions + ", " + grantResults + " )");
switch (requestCode) {
//permission for saving files?
case PermissionCode.WRITE_EXTERNAL_STORAGE: {
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
//HERE IS THE NULL-OBJECT
if (controller != null) {
controller.triggerCallback();
}
}
break;
}
default: {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
}
}
Итак, мои вопросы:
Могу ли я избежать этого отдыха?Если нет, то как я могу изменить дизайн своего кода, чтобы решить проблему - на данный момент я совершенно бездаренРЕДАКТИРОВАТЬ 1:
Я пытался решить проблему с обработчиком и postDelayed - но я пропустил его.
РЕДАКТИРОВАТЬ 2:
Я предварительно решил ее и покажу пользователю тост с просьбой снова нажать кнопку загрузки (в случае предоставления разрешения). Но Google: ВЫ СЕРЬЕЗНЫ?
РЕДАКТИРОВАТЬ 3:
С последним SDK 6.0 (версия 23) не происходит никакого отдыха - может быть, кто-то слышал мой плач в Маунтин-Вью :-)