Я играю с Preview M и тестирую свое приложение на нем, особенно часть «сохранение файла во внешнее хранилище». Перед тем как скачать/сохранить начинается процесс, я прошу дляAndroid 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 активности.
Если я нажму кнопку «разрешить», активность сначала воссоздается, а затем вызывается метод 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);
}
}
}
Так что мои вопросы:
- Может Я избегаю этого отдыха?
- Если нет, то как я могу переделать свой код, чтобы решить эту проблему - я полностью idealess на данный момент
EDIT 1:
Я попытался решить эту проблему с помощью обработчика и postDelayed - но я пропустил его.
EDIT 2:
я решил его предварительный и показать Тост к пользователю с просьбой нажать кнопку загрузки еще раз (в случае, предоставленного разрешения). Но Google: ВЫ СЕРЬЕЗНЫЕ?
EDIT 3:
Нет отдыха не происходит с последним SDK 6.0 (версия 23) - может быть, кто-нибудь слышал мой плач в Маунтин-Вью :-)
Эй, как вы в конце концов решили это сделать? Я также компилирую с версией 23, и я все еще сталкиваюсь с действиями перезапуска на разрешении разрешать и отказывать. Метод onRequestPermissionsResult никогда не вызывается. Я вызываю requestPermissions() из фрагмента. Разве это имеет значение? –
@Mayur More: как вы отменяете/предоставляете разрешение? При отмене/предоставлении внутренних настроек приложения у меня все еще есть отдых после возобновления приложения. Но внутри рабочего процесса приложения - как описано выше - никакого отдыха не происходит ... –
никогда, я его решил. –