Necesidad de ocultar el contenido del programa desde Android "Pantalla de resumen"

Estoy trabajando en una aplicación de Android para un empresario consciente de la seguridad. Le preocupa la instantánea de pantalla que aparece en la pantalla de resumen (también conocida como la lista de tareas recientes), y que quiere que ponga la pantalla de bienvenida del programa antes de que el sistema tome esa fotografía. Lamentablemente no he encontrado ninguna manera de hacerlo.

Cosas que he probado:

  • Inflar la vista de la pantalla de bienvenida en la función onPause . (Sin efecto, incluso con bringToFront y setVisibility(View.VISIBLE) .)
  • onCreate la vista de la pantalla de bienvenida en onCreate y use bringToFront en onPause . (De nuevo, sin efecto.)
  • Llamando setVisible(false) en onPause . Parece que casi funciona, ya que la pantalla parpadea en negro durante un instante cuando se aleja del programa, pero es aparentemente visible por el sistema de nuevo antes de la instantánea.
  • Llamar setVisibility(View.INVISIBLE) en el ítem superior de la View en onPause . (Parece que funcionará, pero al parecer la instantánea se toma antes de que surta efecto).

Soy un moderado desarrollador de Android, pero no puedo dejar de sentir que hay una solución simple que me falta.

Personalmente, iría con FLAG_SECURE , y simplemente bloquear la visualización de este material en todas partes:

 public class FlagSecureTestActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); getWindow().setFlags(LayoutParams.FLAG_SECURE, LayoutParams.FLAG_SECURE); setContentView(R.layout.main); } } 

Sin embargo, IIRC, puede anular onCreateThumbnail() para suministrar su propia imagen para utilizarla en la lista de tareas recientes. Tenga en cuenta que esto podría haber cambiado con Android 5.0, ya que han revisado la lista de tareas recientes, así que asegúrese de probar su código en un dispositivo o emulador 5.0.

En lugar de iniciar una actividad, puede considerar la posibilidad de iniciar una tarea de aplicación mediante ActivityManager.addAppTask(Activity, Intent, ActivityManager.TaskDescription, Bitmap) con la que el mapa de bits que pasó se utiliza como miniatura en la pantalla general / reciente.

Documento sobre esta api está aquí , sin embargo, solo está disponible en Lollipop.

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