per Android versione 4 (API 14 e successive), potrebbe essere possibile utilizzare: getWindow(). SetType (WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
tuttavia, sull'emulatore, non blocca il pulsante home, quindi è piuttosto inutile. Non so ancora se funziona bene su dispositivi reali.
forse è possibile utilizzare la soluzione alternativa seguente: impostare l'app come l'applicazione schermata iniziale predefinita. se il pulsante home è stato premuto mentre l'applicazione era attiva, acquisirla e non fare nulla. se il tasto home è stato premuto mentre l'applicazione era sullo sfondo (o chiusa), aprire l'app home predefinita precedentemente selezionata.
In alternativa, potrei chiedere all'utente di impostare l'app Home Launcher predefinita come mia per ogni volta che viene avviata, e reimpostarla di nuovo (o alla precedente, o reset totale) dopo che è stata chiusa.
è possibile? se sì, come?
Da Android Lollipop (versione 5.0 che è API 21), v'è un modo di schermo i pin, e questo può essere attivata dall'utente o l'applicazione (link here):
ci sono due modi per attivare il blocco su schermo:
manualmente: gli utenti possono abilitare schermo pinning in Impostazioni> Sicurezza> schermo Puntare, e selezionare le attività che vogliono pin toccando l'icona pin verde nella schermata Recenti. Programmaticamente: per attivare il blocco dello schermo a livello di codice, chiama startLockTask() dall'app. Se l'app richiedente non è un proprietario del dispositivo, all'utente viene richiesta la conferma . Un'app del proprietario del dispositivo può chiamare il metodo setLockTaskPackages() per abilitare la pinnatura delle app senza il passaggio di conferma utente .
Cosa fa? leggere ulteriormente e vedi:
Quando bloccaggio compito è attivo, il seguente comportamento accade:
La barra di stato è vuota, e le notifiche utente e le informazioni di stato sono nascosti. I pulsanti Home e Recent Apps sono nascosti. Altre app non possono avviare nuove attività. L'app attuale può avviare nuove attività , a condizione che ciò non crei nuove attività. Quando il blocco dello schermo viene richiamato dal proprietario del dispositivo, l'utente rimane bloccato sull'app finché l'app non chiama stopLockTask(). Se lo screen pinning è un'attività da un'altra app che non è un proprietario del dispositivo o direttamente dall'utente, l'utente può uscire tenendo premuti i pulsanti Indietro e Ultimo.
Non solo, ma secondo this post, è anche possibile attivare o disattivare questo senza user-conferma, e si esce da questo stato speciale sarebbe sotto la logica della tua app.
Sembra la cosa perfetta per l'app per bambini.
Come stai bloccando le presse per la chiave di casa? – slayton
@slayton hai provato quello che ho appena scritto? è scritto nella classe di attività. –
@androiddeveloper Ricevo anche lo stesso errore nella mia applicazione e sto anche usando lo stesso codice onAttachedTowindow() ... come hai risolto questo problema? –