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


Pantalla que fija aplicaciones de terceros mediante programación

Después de lograr la propiedad del dispositivo, estoy tratando de implementar un método para instruir al dispositivo para bloquear cualquier aplicación dada en modo quiosco (o modo de fijación de pantalla). Dado que tengo propiedad de dispositivo, no se pide al usuario permiso para hacerlo.

Desde el sitio web del desarrollador, una breve descripción me dice que es posible hacer lo que estoy intentando:

  • Cómo implementar 'tablas de datos' (componente de diseño de material) en android?
  • WebView no muestra JSAlert en dispositivos Lollipop
  • El cajón de navegación semi-transparente sobre la barra de estado no funciona
  • Android FAB más signo no presente en android dibujable
  • ¿Cuáles son las variables 'shadow $ _klass_' y 'shadow $ _monitor_' para java.lang.Object?
  • Lista de verificación de material de diseño: ocultar la barra de aplicaciones en el desplazamiento?
  • Http://developer.android.com/about/versions/android-5.0.html#ScreenPinning

    Programáticamente: Para activar la programación de la pantalla mediante programación, llame a startLockTask () de su aplicación. Si la aplicación solicitante no es un propietario de dispositivo, se solicita al usuario la confirmación. Una aplicación propietaria de dispositivo puede llamar al método setLockTaskPackages () para permitir que las aplicaciones se pinquen sin el paso de confirmación del usuario.

    Esto indica que como una aplicación de propietario de dispositivo, puedo pin otras aplicaciones sin la confirmación del usuario … pero no tengo ni idea de cómo.

    He sido capaz de poner mi propia aplicación en modo fijado.

    Cualquier ayuda sería apreciada.

  • ¿Cómo comprobar el número de teléfono propio introducido por el usuario en EditText?
  • Cómo acceder a Android File system desde la línea de comandos de Windows 7 a través de USB
  • OnCloseListener de SearchView no funciona
  • Encontrar todos los estilos disponibles definidos por los temas de la plataforma Android
  • ¿Cómo instalar Android SDK en Ubuntu?
  • Refrescar datos en RecyclerView y mantener su posición de desplazamiento
  • 3 Solutions collect form web for “Pantalla que fija aplicaciones de terceros mediante programación”

    El setLockTaskPackages() se utiliza para especificar qué aplicaciones (a través de sus nombres de paquete) podrán programarse sin la confirmación del usuario . El setLockTaskPackages() se llama desde la aplicación del propietario de tu dispositivo (probablemente en el DeviceAdminReceiver onEnabled() tu DeviceAdminReceiver ).

    Por lo tanto, en su aplicación de dispositivo propietario, tendrá algo así como:

     mDPM.setLockTaskPackages("com.foo.myapp"); 

    Y luego, en su aplicación "com.foo.myapp", se le autorizará a llamar a:

     startLockTask(); 

    Su aplicación entrará inmediatamente en el modo Pinning, sin ninguna confirmación del usuario.

    Si no register su aplicación por primera register con setLockTaskPackages , la aplicación será fijada pero el usuario tendrá que confirmar primero.

    También tenga en cuenta que cuando una aplicación está registered con setLockTaskPackages() , tiene algunos comportamientos diferentes que el pin manual :

    • El usuario no puede desenlazar manualmente la aplicación presionando a fondo Back + Recent Apps . Tendrá que stopLockTask() programaticamente su aplicación con stopLockTask() ;
    • Los botones "Inicio" y "Aplicaciones recientes" son invisibles (no se muestran)
    • Cuando se apaga la aplicación (a través de stopLockTask ()), el usuario volverá directamente a Home: no se mostrará Bloqueo de pantalla, incluso si está configurado un bloqueo de teclado (patrón, código o cualquier pantalla de bloqueo de teclado).

    No tengo la suficiente reputación para un comentario, solo quisiera señalar que para los dispositivos con botones físicos (como el Samsung Galaxy Tab A mencionado por @chairman) una forma de gestionar el desacoplamiento forzado de su aplicación es implementar en su clase DeviceAdminReceiver el siguiendo:

    @Override public void onLockTaskModeExiting (Contexto contextual, intención de intención)

    Así que si su usuario quiere para el unpin siempre puede volver a fijar su aplicación;)

    He aquí un fragmento de código que debería llevarlo:

     DevicePolicyManager myDevicePolicyManager = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE); mDeviceAdminSample = new ComponentName(this, DeviceAdminSample.class); if (myDevicePolicyManager.isDeviceOwnerApp(this.getPackageName())) { // Device owner String[] packages = {this.getPackageName()}; myDevicePolicyManager.setLockTaskPackages(mDeviceAdminSample, packages); } else { // Not a device owner - prompt user or show error } if (myDevicePolicyManager.isLockTaskPermitted(this.getPackageName())) { // Lock allowed startLockTask(); } else { // Lock not allowed - show error or something useful here } 
    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.