RequestPermission () no recrea completamente la pila de actividad
Tengo la actividad A que lanza la actividad B. Esta actividad entonces solicita READ_EXTERNAL_STORAGE
y WRITE_EXTERNAL_STORAGE
. En Android 6.0, se abre el cuadro de diálogo de permisos (que inmediatamente destruye la actividad B tan pronto como aparece el cuadro de diálogo). Sin embargo, cualquiera que sea el usuario que elija, el sistema volverá a la actividad A.
Solicitar otros permisos funciona bien en otros lugares, pero supongo que los permisos de almacenamiento externo son algunos de los que, como advierten los documentos, "requieren un reinicio de la aplicación" y "el sistema recreará la pila de actividades".
- Permisos de Android
- (Android-O) La aplicación no aparece en 'aplicaciones con acceso de uso' pero está en Nougat
- Borrar los permisos permitidos en Android M
- Permisos de Android 6.0 y OBB de montaje
- Archivo de escritura de Android con permisos incorrectos
Mi problema es que la actividad B nunca se recrea, y mucho menos onRequestPermissionsResult
se llama. Yo habría pensado que "recrear la pila de actividades" implica lanzar la actividad B de nuevo, e idealmente onRequestPermissionResult
se llama en él. ¿Cómo se supone que debo manejar esto?
- ¿Cuál es la mejor manera de comprobar los permisos en tiempo de ejecución mediante la arquitectura MVP?
- Android revoca el permiso al inicio de cada prueba
- ¿Puedo comprobar si la alerta de "pantalla superpuesta detectada" mostrará o no
- ¿Cómo puedo obtener un proceso de Android que se ejecuta con la capacidad CAP_NET_ADMIN
- ¿Diferencia entre el árbol de permisos y el grupo de permisos?
- Marsmallow: Cambiar permisos en tiempo de ejecución bloquea la aplicación
- ¿Qué permisos se pueden conceder a los dispositivos enraizados?
- Llamar el show de DialogFragment () desde dentro onRequestPermissionsResult () provoca IllegalStateException en Marshmallow
Que destruye inmediatamente la actividad B tan pronto como aparece el diálogo
Eso suena raro para mí. La actividad B debe ser detenida (y quizás detenida) en ese punto, pero no destruida . ¿Seguro que no estás llamando a finish()
o usando alguna propiedad como noHistory
?
Es posible que encuentre algunas pistas sobre por qué su actividad se está destruyendo en la am_finish_activity
y / o am_destroy_activity
en el registro de eventos. Ejemplo de que salga de Gmail con el botón ATRÁS (observe las razones de app-request
y finish-imm
):
$ adb logcat -bevents I/am_finish_activity( 1155): [0,947820256,3228,com.google.android.gm/.ConversationListActivityGmail,app-request] I/am_pause_activity( 1155): [0,947820256,com.google.android.gm/.ConversationListActivityGmail] I/am_on_paused_called(17619): [0,com.google.android.gm.ConversationListActivityGmail] I/am_home_stack_moved( 1155): [0,1,0,0,prevFinished] I/wm_task_moved( 1155): [3162,1,1] I/am_focused_activity( 1155): [0,com.android.launcher/com.android.launcher2.Launcher] I/am_resume_activity( 1155): [0,285205047,3162,com.android.launcher/com.android.launcher2.Launcher] I/am_on_resume_called(24956): [0,com.android.launcher2.Launcher] I/am_destroy_activity( 1155): [0,947820256,3228,com.google.android.gm/.ConversationListActivityGmail,finish-imm]
No estoy seguro de cómo detallado esas cuerdas razón conseguir, pero si realmente estás teniendo un tiempo difícil averiguarlo, vale la pena mirar.
- Cómo obtener el evento de finalización de llamada en la aplicación para Android
- ¿Cómo realizar una solicitud de API en Kotlin?