Autore Topic: Risvegliare app senza passare dalla schermata di sblocco  (Letto 596 volte)

Offline mancasal

  • Nuovo arrivato
  • *
  • Post: 33
  • Respect: +3
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S i9000
  • Sistema operativo:
    Linux
Risvegliare app senza passare dalla schermata di sblocco
« il: 18 Aprile 2013, 00:27:50 CEST »
0
Innanzitutto chiedo scusa se l'argomento è già stato trattato, ma dopo un'ora buona di ricerca sul forum non ho trovato nulla.
Il mio problema è questo.

Vi vorrei porre un quesito.

Ho realizzato un'applicazione che ad una determinata accende lo schermo del telefono e mostra un messaggio.
Il tutto funziona se non fosse per il fatto che che per vedere il messaggio bisogna sbloccare lo schermo.
C'è un sistema di fare l'accensione dello schermo (che io faccio con WAKE-LOCK) bypassando la schermata di sblocco e visualizzando direttamente il layout della mia app?

Questa è la porzione di codice che uso:
Codice: [Seleziona]
    // Accendi il monitor del telefono
    PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
    PowerManager.WakeLock wake = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK|PowerManager.ACQUIRE_CAUSES_WAKEUP, "tag");
    wake.acquire();


    // Apri l'activity
    Intent newIntent = new Intent(context, message.class);
    newIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    context.startActivity(newIntent);

    wake.release();

Grazie in anticipo per le risposte.
« Ultima modifica: 19 Aprile 2013, 00:04:07 CEST da mancasal »

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Risvegliare app senza passare dalla schermata di sblocco
« Risposta #1 il: 18 Aprile 2013, 08:36:27 CEST »
+1
Bypassare la schermata di blocco potrebbe essere "volutamente" non permesso.

Però puoi usando una modalità più in linea con gli standard, cioè invece di mostrare il messaggio, crei una notifica (visibile anche dalla schermata blocco) aprendo la quale poi visualizzi il messaggio.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline mancasal

  • Nuovo arrivato
  • *
  • Post: 33
  • Respect: +3
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S i9000
  • Sistema operativo:
    Linux
Re:Risvegliare app senza passare dalla schermata di sblocco
« Risposta #2 il: 18 Aprile 2013, 14:03:50 CEST »
0
Questa sera ci provo.
In pratica se ho capito bene creo una popup di notifica dove inserisco i controlli che mi servono proprio come se fosse un'activity come le altre. Un po come la finestra di notifica di whatsApp.

Inviato dal mio GT-I9000 con Tapatalk 2

Offline Garese

  • Nuovo arrivato
  • *
  • Post: 33
  • Respect: +2
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Nexus
  • Sistema operativo:
    Windows 7
Re:Risvegliare app senza passare dalla schermata di sblocco
« Risposta #3 il: 18 Aprile 2013, 21:02:11 CEST »
+1
Puoi usare un keyguardlock, che fa esattamente quello che chiedi, a patto di non avere password o sequenze di sblocco, che giustamente é impossibile bypassare ;)

Inviato dal mio GT-P7500 con Tapatalk 2


Offline mancasal

  • Nuovo arrivato
  • *
  • Post: 33
  • Respect: +3
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S i9000
  • Sistema operativo:
    Linux
Re:Risvegliare app senza passare dalla schermata di sblocco
« Risposta #4 il: 18 Aprile 2013, 22:52:42 CEST »
0
Grazie, per ora ho risolto con KEYGUARD.

Il codice che ho utilizzato è il questo:
Codice: [Seleziona]
getWindow().addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);

che ho inserito prima della visualizzazione del Layout.

Ad ogni modo dato che la faccenda della sequenza di sblocco è abbastanza limitante credo che proverò anche con la notifica.

Grazie ancora per l'aiuto.

Post unito: 18 Aprile 2013, 23:15:16 CEST
Dopo un piccola ricerca ho trovato la soluzione senza usare la notifica.

Di fatto è sufficiente aggiungere anche il Flag
Codice: [Seleziona]
FLAG_SHOW_WHEN_LOCKED e l'activity viene portata in primo piano.
Se l'activity viene chiusa verrà presentata la schermata di sblocco anche se protetta da password.

Il codice completo è:
Codice: [Seleziona]
public class myActivity extends Activity {
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED | WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);

        // Visualizza il layout
        setContentView(R.layout.mylayuot);
    }
}
« Ultima modifica: 19 Aprile 2013, 00:02:18 CEST da mancasal »