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:

  • Lollipop: botón desactivado -> ¿qué estilo?
  • Uso del tema Material en la vista previa L
  • Android FAB más signo no presente en android dibujable
  • Android.support.v7.widget.Toolbar icon problema de alineación
  • Android L SoundPool.load () regresión
  • ¿Qué es ScrimInsetsFrameLayout?
  • 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.

  • Uso del mismo onTouchEvent en varias actividades
  • Problemas con SharedPreferences en un servicio (getPreferences no existe en un servicio)
  • ¿Cómo quitar la descripción del gráfico en MPAndroidChart?
  • Cómo llamar a getFragmentManager en Recycler.Adapter?
  • La vista de búsqueda utiliza el icono de la aplicación en lugar del logotipo
  • ¿Cuál es la diferencia entre separar un Fragmento y eliminarlo?
  • 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.