Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Iniciar la actividad de servicio en la pantalla de bloqueo activa la pantalla pero no muestra la actividad en sí

Estoy tratando de iniciar una actividad de un servicio que ya había adquirido la cerradura de la siguiente manera:

Intent i = new Intent(context, MyActivity.class); i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_NO_USER_ACTION); startActivity(i); 

El manifiesto de actividad se declara de la siguiente manera:

 <activity android:name=".MyActivity" android:configChanges="orientation|screenSize|keyboardHidden|keyboard|navigation" android:excludeFromRecents="true" android:launchMode="singleInstance" android:screenOrientation="nosensor" android:showOnLockScreen="true" android:taskAffinity="" android:theme="@style/MyTheme" /> 

Y finalmente, en onCreate() o en onAttachedToWindow() (probé en ambos), agrego los siguientes indicadores:

 final Window win = getWindow(); win.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED | WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD); win.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON | WindowManager.LayoutParams.FLAG_ALLOW_LOCK_WHILE_SCREEN_ON); 

El problema es que la primera vez que llamo startActivity() de mi servicio, la pantalla se enciende, pero la actividad en sí no aparece. En su lugar, muestra la pantalla de bloqueo. Cada llamada posterior de startActivity() funciona correctamente, pero no puedo encontrar una razón para este comportamiento extraño.

He intentado ya sugerencias para obtener un wakelock completo en lugar de parcial, cambiar las banderas y los valores en el manifiesto de acuerdo con las siguientes respuestas SO:

  • Actividad de Android que no se muestra cuando se desactiva la pantalla y se bloquea la pantalla
  • Cómo desbloquear la pantalla cuando se llama BroadcastReceiver?
  • Programáticamente activar la pantalla en android
  • Android Galaxy S4 – Actividad visible en la pantalla de bloqueo

Tenga en cuenta que mi tema no es un diálogo sino una actividad de pantalla completa.

¿Alguna otra idea?

  • Teclado suave oculta la barra de acción
  • Compruebe si la actividad se está ejecutando desde el servicio
  • ActivityManager: Excepción lanzada al iniciar las actividades java.lang.IllegalArgumentException: val.length> 91
  • ¿Cuál es la diferencia entre esto, getContext () y getActivity ()?
  • Servicio automático llamado en la actividad de destrucción
  • ¿Cómo obtener la actividad actual en la pantalla?
  • Agregar el mismo menú contextual a varias actividades
  • Leyendo ActivityManager-logs en un dispositivo de Jelly Bean?
  • 3 Solutions collect form web for “Iniciar la actividad de servicio en la pantalla de bloqueo activa la pantalla pero no muestra la actividad en sí”

    Estoy enfrentando el mismo problema, después de una gran cantidad de búsqueda aquí y google, encontró esto que desbloqueó la pantalla y se abrió mi actividad, pero sólo funciona para mí cuando la aplicación se está ejecutando (primer plano / fondo).

     import android.view.Window; import android.view.WindowManager.LayoutParams; Window window = this.getWindow(); window.addFlags(LayoutParams.FLAG_DISMISS_KEYGUARD); window.addFlags(LayoutParams.FLAG_SHOW_WHEN_LOCKED); window.addFlags(LayoutParams.FLAG_TURN_SCREEN_ON); 

    Estoy intentando iniciar una actividad cuando la aplicación está cerrada … (usando el receptor de difusión)

    En los documentos (por ejemplo aquí ) y la mayoría de las respuestas en SO las banderas se agregan de esta manera:

      getWindow().addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD); 

    Pero cuando intenté la manera que es como en el ejemplo desbloqueó la pantalla en vez apenas de dar vuelta en la pantalla.

    espero que esto ayude . Todavía no solucionó mi problema completamente.

    EDITAR:

    Encontré este post que solucionó mi problema.

    Hay un comentario sobre no usar un tema de diálogo que lo resolvió para mí

    Ya que mi aplicación ya incluye un Service , esto es lo que hago: si la pantalla está bloqueada , registro un receptor de difusión (un poco más simple que éste , ya que reacciona solo al desbloquear) que inicia la Actividad tan pronto como la pantalla se pone Desbloqueado

     Step 1: Add below code in your activity before setContentView(R.layout.activity_about_us); **getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON| WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD| WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED| WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);** Step 2: Lock your mobile than you will see activity in which you have added this code. 

    Puede implementar esto si desea abrir determinada pantalla por ocurrencia de notificación como llamada de skype.

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.