2013-08-13 7 views
8

Come posso accedere a questo codice? Così posso aprirlo automaticamente per gli utenti e non devono cacciare attraverso le impostazioni di sicurezza per attivarlo.Accesso alle nuove impostazioni di notifica in Android 4.3 tramite codice

Non riesco a trovarlo in Android Studio utilizzando startActivity(new Intent(Settings.<>));, dove <> è l'elenco delle schermate di impostazione.

Notification Access Screen

Immagine per gentile concessione di Android Police

+0

E 'possibile che questo viene visualizzato solo sullo schermo di protezione in Impostazioni quando sono installati 1+ ascoltatori di notifica. – CommonsWare

+0

Ho installato la mia app con il listener delle notifiche e l'app "ActiveNotifications per Android" (che ha la schermata delle impostazioni quando si apre l'app) ma non viene ancora visualizzata. – adefran83

+0

Mi sento davvero stupido, appare quando ne hai uno installato ... tuttavia mi piacerebbe comunque aprirlo automaticamente per l'utente in modo che non debbano cercarlo. modificherò la mia domanda per riflettere questo. – adefran83

risposta

23

C'è an outstanding bug in Android 4.3, dove l'azione schermata di notifica ascoltatore non è elencato in Settings. La soluzione attuale è:

startActivity(new Intent("android.settings.ACTION_NOTIFICATION_LISTENER_SETTINGS")); 
+0

Grazie! Ha funzionato perfettamente – adefran83

+0

L'ho usato nella mia app ma ora si apre ogni volta che si avvia l'app. C'è un modo per renderlo aperto solo se l'utente non ha selezionato l'app per l'accesso? –

+1

@AbhyudayaSrinet: Non ho giocato con un 'NotificationListenerService'. Dovresti scoprire se sei abilitato come ascoltatore o meno e avviare l'attività solo se non sei abilitato come ascoltatore. Non ho studiato quest'area per sapere esattamente come farlo. – CommonsWare

2

Il bug che @CommonsWare menzionato has been fixed as of Android 5.1 (API 22). È ora possibile utilizzare questo per portare l'utente al notifica accesso schermo:

startActivity(new Intent(Settings.ACTION_NOTIFICATION_LISTENER_SETTINGS));

Ho provato questo tra le istanze multiple Genymotion (4.3, 4.4, e 5.1) e un Galaxy S3 in esecuzione 4.3, e questa soluzione ha funzionato perfettamente in ogni caso.

Stranamente però Android Studio non darmi un avvertimento quando uso questo campo pre-API 22 progetti, nonostante il fatto che funziona senza problemi:

campo richiede API 22 (corrente min è 18) : android.provider.Settings # ACTION_NOTIFICATION_LISTENER_SETTINGS

credo che questo avviso dovrebbe essere in grado di essere ignorato, in modo simile a come è possibile utilizzare i valori da Build.VERSION_CODES su qualsiasi versione della piattaforma.

Link alla documentazione: Settings.ACTION_NOTIFICATION_LISTENER_SETTINGS

Problemi correlati