Modo quiosco en Android

Resuelto Erik H asked hace 54 años • 11 respuestas

Estoy en el proceso de evaluar si una aplicación empresarial CF .NET se puede portar para ejecutarse en dispositivos Android y cómo hacerlo. La aplicación en los teléfonos con Windows Mobile se ejecuta en modo quiosco, donde la aplicación se inicia automáticamente en modo de pantalla completa después del inicio y los usuarios no pueden acceder accidental o voluntariamente a ninguna otra parte del teléfono.

¿Es posible en Android tener solo una aplicación de inicio automático después del inicio y evitar que los usuarios accedan accidentalmente (o voluntariamente) a otras partes del dispositivo Android?

Erik H avatar Jan 01 '70 08:01 Erik H
Aceptado

Puede iniciar automáticamente aplicaciones al arrancar escuchando la android.intent.action.BOOT_COMPLETEDintención en un BroadcastReceiver e iniciar su actividad desde allí. En la Actividad puedes registrarte como la nueva pantalla de inicio predeterminada[1] y manejar las claves.

Creo que hay algunos casos que no se pueden manejar sin modificar el marco (como presionar prolongadamente Inicio para mostrar las aplicaciones actualmente activas). Sin embargo, también podría estar equivocado.

Pero para un prototipo eso podría ser suficiente.

¡Diviértete jugando!

[1]:

<intent-filter>
 <action android:name="android.intent.action.MAIN" />
 <category android:name="android.intent.category.HOME" />
 <category android:name="android.intent.category.DEFAULT" />
</intent-filter>
Valentin avatar Jan 15 '2010 11:01 Valentin

En la nueva vista previa de Android L, Google anunció el bloqueo de tareas , que hace exactamente eso. Sin embargo, parece necesitar root.

L Developer Preview presenta una nueva API de bloqueo de tareas que le permite restringir temporalmente que los usuarios abandonen su aplicación o sean interrumpidos por notificaciones. Esto podría usarse, por ejemplo, si está desarrollando una aplicación educativa para admitir requisitos de evaluación de alto riesgo en Android. Una vez que su aplicación active este modo, los usuarios no podrán ver notificaciones, acceder a otras aplicaciones ni regresar a la pantalla de inicio hasta que su aplicación salga del modo.

Para evitar el uso no autorizado, solo las aplicaciones autorizadas pueden activar el bloqueo de tareas. Además, la autorización de bloqueo de tareas debe ser otorgada por una aplicación del propietario del dispositivo especialmente configurada, a través del android.app.admin.DevicePolicyManager.setLockTaskComponents()método.

Para configurar un propietario de dispositivo, siga estos pasos:

  • Conecte un dispositivo que ejecute una userdebugcompilación de Android a su máquina de desarrollo.
  • Instale la aplicación de propietario de su dispositivo.
  • Cree un device_owner.xmlarchivo y guárdelo en el /data/systemdirectorio del dispositivo.
$ adb root
$ adb shell stop
$ rm /tmp/device_owner.xml
$ echo "<?xml version='1.0' encoding='utf-8' standalone='yes' ?>" >> /tmp/device_owner.xml
$ echo "&device-owner package=\"<your_device_owner_package>\" name=\"*<your_organization_name>\" />" >> /tmp/device_owner.xml
$ adb push /tmp/device_owner.xml /data/system/device_owner.xml
$ adb reboot

Antes de usar la API de bloqueo de tareas en su aplicación, verifique que su actividad esté autorizada llamando a DevicePolicyManager.isLockTaskPermitted().

Para activar el bloqueo de tareas, llame android.app.Activity.startLockTask() desde su actividad autorizada.

Cuando el bloqueo de tareas está activo, el siguiente comportamiento surte efecto:

  • La barra de estado está en blanco y las notificaciones de usuario y la información de estado están ocultas.
  • Los botones Inicio y Aplicaciones recientes están ocultos.
  • Es posible que otras aplicaciones no inicien nuevas actividades.
  • La aplicación actual puede iniciar nuevas actividades, siempre que al hacerlo no se creen nuevas tareas.
  • El usuario permanece bloqueado en su aplicación hasta que lo llame una actividad autorizada Activity.stopLockTask().
nhaarman avatar Jul 02 '2014 20:07 nhaarman

Puede personalizar esto (deshabilitar el acceso al menú, limitar la adición de aplicaciones, etc.) para habilitar el quiosco. http://code.google.com/p/android-launcher-plus/

rbot avatar Apr 25 '2012 11:04 rbot

Después de buscar esto por un tiempo, encontré una buena solución. Sin embargo, esto solo funciona en dispositivos rooteados, pero supongo que si es solo para esta aplicación, rootearla no debería ser un problema.

  • Haga de su aplicación el iniciador agregando

    <category android:name="android.intent.category.HOME" /> 
    

    a tu filtro de intención

  • Asegúrese de que su aplicación contraiga la barra de herramientas para que no pueda acceder a la barra de notificaciones. Consulte ¿ Cómo deshabilitar la barra de estado/barra de notificaciones en Android mediante programación? o http://blog.vogella.com/2011/02/28/android-hidding-the-status-and-title-bar/

  • Luego, para evitar que otros programas se abran por error, use un Servicio de accesibilidad para verificar si el estado de la ventana ha cambiado, compare el paquete con una lista blanca o negra y use ActivityManager.killBackgroundProcesses para eliminarlo si no debería ejecutarse.

Consulte también http://thebitplague.wordpress.com/2013/04/05/kiosk-mode-on-the-nexus-7/ para conocer otra forma.

matt_lethargic avatar Aug 02 '2013 12:08 matt_lethargic