Ho un'attività immersiva a schermo intero che deve rimanere a schermo intero fino all'uscita esplicita dell'utente. (Ad esempio, pensa a qualcosa come guardare un video Youtube a schermo intero).Mantieni l'attività sempre in primo piano o messa a fuoco quando le app rogue lanciano attività?
Tuttavia, ho notato di recente che un sacco di attività indesiderate di avvio può rompere il comportamento della mia app. Ad esempio, molte "app gratuite" ombreggiate tendono a generare attività trasparenti a schermo intero e a mostrare annunci, interrompendo immediatamente l'utente. I popup di notifica "a schermo intero" di alcune app che sono in realtà attività a schermo intero interrompono immediatamente la mia attività.
C'è un modo per evitare queste attività che rubano l'attenzione, o un modo per tenerle dietro la mia attività a schermo intero in modo che non si rompa la mia modalità a schermo intero? In altre parole, come posso mantenere la mia attività sempre in primo piano ogni volta che qualche app canaglia decide di avviare un'attività sul mio?
Non è necessario che siano annullati, ma "rimandati al momento" fino a quando l'utente non chiude l'attività a schermo intero.
Un metodo che viene in mente sarebbe quello di rilanciare la mia attività con FLAG_ACTIVITY_REORDER_TO_FRONT
nel momento in cui non è più attivo, ma che non guardare piuttosto per l'utente :(
Nota: se volete provare voi stessi Ho trovato un'app che "simula" l'avvio di queste attività canaglia Scarica questo - https://play.google.com/store/apps/details?id=com.nlucas.popupnotificationslite&hl=en
Ogni volta che si ricevono notifiche, viene avviata un'attività a schermo intero trasparente Prova a guardare un video di YouTube e ricevi 10 notifiche da qualcuno e immagina quanto sarebbe distratto
UPDATE: Facendo questo non sembra funzionare:
@Override
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
if (!hasFocus) {
Intent i = new Intent(getBaseContext(), MainActivity.class);
i.addFlags(Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT);
startActivity(i);
}
che tipo di app gratuite rubano la tua attenzione? quando guardo il video di YouTube non c'è mai niente da vedere – LamaTo
Ho modificato la domanda per includere quell'informazione. Il problema – Kyle
con onWindowFocusChanged è che non è possibile aprire la finestra di dialogo all'interno della propria attività. puoi superare questo problema con 'if (! hasFocus &&! mDialogList.isShowing()) {...' –