Mi aplicación tiene un servicio y una actividad. Desde el servicio, se llama a la actividad con el siguiente código:
Intent intent = new Intent(getApplicationContext(), MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
incluso sin las banderas, normalmente la ventana de actividad se muestra con su diseño correcto. Sin embargo, en Xiaomi Redmi Note 4 con Android 7, el diseño de la actividad no se muestra. Solo veo la siguiente línea en logcat:
I / Timeline: Timeline: Activity_launch_request time: 281438674 intento: Intención {flg = 0x30000000 cmp = com.test.app / .MainActivity}
Creo que esto no es un problema de Android 7 (API 24) porque en otro dispositivo con Android 7, el servicio puede iniciar con éxito la actividad. Supongo que MIUI está impidiendo el lanzamiento de la actividad del servicio.
Intenté cambiar cómo se definió la actividad en el manifiesto. También probé con varias banderas diferentes. Todas mis pruebas fallaron. No pude tener éxito en comenzar la actividad. El peor problema es que no hay error / excepción en los registros.
¿Alguna idea sobre esto por favor?
Respuestas:
En la pantalla de información de la aplicación desde la aplicación Configuración del sistema> Otros permisos> Mostrar ventanas emergentes mientras se ejecuta en segundo plano.
Esto parece introducido en MIUI 11.
Editar: aquí hay un fragmento de código que uso. Agrego eso a una lista de permisos en a
RecyclerView
.ACTUALIZACIÓN: para verificar si se otorga este permiso, puede usar un servicio que ya se está ejecutando e iniciar una actividad ficticia transparente, y
onCreate
volver a llamar a unoLocalBroadcastManager
o similar y sabrá que está otorgado. Es una solución fea, pero puede ser útil para algunos.fuente