studio programacion para móviles libro edición desarrollo desarrollar curso aprende aplicaciones android debugging accessibilityservice

android - programacion - Servicio de accesibilidad deshabilitado en cada ejecución de depuración



manual de programacion android pdf (1)

Esto podría explicar de alguna manera y mitigar su problema (pero no lo que hace que su Force stop ).

Después de Android 3.1 "el sistema establece FLAG_EXCLUDE_STOPPED_PACKAGES en todos los intentos de transmisión". Entonces, después de 3.1, todas las aplicaciones se detienen en el arranque. Por qué ?. Por razones de seguridad.

Hay REGLAS para desactivar la bandera FLAG_EXCLUDE_STOPPED_PACKAGES .

(1) Si la aplicación obtiene una Force stop forzada de la configuración O un botón de unresponsive app , se establece la bandera.

(2) Su aplicación debe estar en el Phone Storage , NO en external storage (por ejemplo, sdcard ), de lo contrario, se establecerá el indicador. BOOT_COMPLETE se envía antes de que se BOOT_COMPLETE almacenamiento externo. Por lo tanto, si la aplicación está instalada en el almacenamiento externo, no recibirá el mensaje de difusión BOOT_COMPLETE.

(3) Si la aplicación nunca se ha ejecutado, el indicador se establece (nunca es relativo al estado de inicio actual; O) NUNCA significa en ESTE inicio O usted invalidó el indicador en el último estado de inicio).

Una forma rápida (con secuencia de comandos si lo desea) para volver a habilitar su servicio después de que Force stop asumir el receptor BOOT_COMPLETED (supongo que tiene esto, porque está bien después de reiniciar):

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" adb shell am broadcast -a android.intent.action.BOOT_COMPLETED

Ver launchcontrols

Cada vez que inicio una nueva instancia de depuración, mi servicio de accesibilidad se restablece al estado deshabilitado.

¿Hay alguna manera de mantenerlo habilitado en sucesivas ejecuciones de depuración (ya que es bastante largo y aburrido habilitarlo cada vez para depurar el servicio)?

Tengo el mismo comportamiento en dispositivos reales y emuladores.
No hay excepción en el servicio, probé el evento sin código en el controlador de eventos.

Hay líneas sospechosas en mis registros:

10:47:32.801 31669-31669/? E/AffinityControl: AffinityControl: registerfunction enter 10:47:32.821 3650-3690/? I/ActivityManager: Force stopping com.test.testaccessibilityservice appid=10241 user=0: from pid 31669 10:47:32.821 3650-3690/? I/ActivityManager: Killing 31271:com.test.testaccessibilityservice/u0a241 (adj 1): stop com.test.testaccessibilityservice cause from pid 10:47:32.821 3650-3690/? W/ActivityManager: Scheduling restart of crashed service com.test.testaccessibilityservice/.MyAccessibilityService in 1000ms 10:47:32.821 3650-3690/? I/ActivityManager: Force stopping service ServiceRecord{3f5e1fc4 u0 com.test.testaccessibilityservice/.MyAccessibilityService}

Por lo tanto, el servicio se detiene por la fuerza y ​​nunca se reinicia.

Notas:

  • Si reinicio el teléfono, se inicia el servicio.
  • Tengo el mismo comportamiento con el ejemplo ApiDemos y ClockBackService (QueryBackService también):

    18:07:15.871 3523-4251/? I/ActivityManager: Force stopping com.example.android.apis appid=10242 user=0: from pid 19382 18:07:15.871 3523-4251/? I/ActivityManager: Killing 16542:com.example.android.apis/u0a242 (adj 1): stop com.example.android.apis cause from pid 19382 18:07:15.871 3523-4251/? W/ActivityManager: Scheduling restart of crashed service com.example.android.apis/.accessibility.ClockBackService in 1000ms 18:07:15.871 3523-4251/? I/ActivityManager: Force finishing activity 3 ActivityRecord{2f907c7b u0 com.example.android.apis/.ApiDemos t8248} 18:07:15.881 3523-4251/? I/ActivityManager: Force finishing activity 3 ActivityRecord{190ca05c u0 com.example.android.apis/.ApiDemos t8248} 18:07:15.881 3523-4251/? I/ActivityManager: Force finishing activity 3 ActivityRecord{27ada6e8 u0 com.example.android.apis/.accessibility.ClockBackActivity t8248} 18:07:15.881 3523-4251/? I/ActivityManager: Force finishing activity 3 ActivityRecord{51f4c32 u0 com.android.settings/.Settings$AccessibilitySettingsActivity t8248} 18:07:15.881 3523-4251/? I/ActivityManager: Force stopping service ServiceRecord{113bf024 u0 com.example.android.apis/.accessibility.ClockBackService} 18:07:15.891 19382-19382/? D/AndroidRuntime: Shutting down VM

Intenté devolver START_STICKY anulando onStartCommand sin ningún cambio.

Está muy cerrado a esta vieja pregunta sin respuesta ¿Cómo depurar el servicio de accesibilidad? , pero en mi caso, el servicio aparece deshabilitado y no necesito detenerlo e iniciarlo nuevamente.

Completé este informe de error en AOSP .