2016-06-30 24 views
5

In einer Android-App habe ich eine Schaltfläche, mit der ich die App-Benachrichtigungseinstellungen (in Android-Einstellungen) öffnen kann.Programmgesteuerten Zugriff auf Anwendungsbenachrichtigungseinstellungen

Screenshot of Android's notification settings for the Camera application

ich die Android-Einstellungen mit diesem

startActivityForResult(new Intent(android.provider.Settings.ACTION_SETTINGS), 0); 

öffnen kann, aber ich möchte auf meine app Benachrichtigungseinstellungen

Alternative

direkt öffnen, wenn es liegt Möglichkeit, die "Block Benachrichtigungen" programmatisch zu aktivieren und zu deaktivieren Ich bin auch in Ordnung.

+0

Fügen Sie einen booleschen Wert hinzu, speichern Sie ihn und fügen Sie Einstellungen in die App ein. – Zoe

+0

Mögliches Duplikat von [Beliebige Verknüpfung zu den Android-Benachrichtigungseinstellungen für meine App?] (Https://stackoverflow.com/questions/32366649/any-way-to-link-to-the-android-notification-settings- for-my-app) – Przemo

Antwort

7

Es gibt keine öffentliche API, mit der Sie direkt in die Benachrichtigungseinstellungen Ihrer Anwendung einsteigen können.

Sie können Settings.ACTION_APPLICATION_DETAILS_SETTINGS verwenden, um einen Tiefenlink zu den Einstellungen Ihrer Anwendung herzustellen, aber Sie gelangen damit nicht direkt zum Benachrichtigungsbildschirm.

Any way to link to the Android notification settings for my app? hat eine Lösung, die funktioniert, aber da es kein Teil der offiziellen API ist, ist es nicht garantiert, dass es auf allen Geräten oder für zukünftige Versionen von Android funktioniert.

wenn es ein Weg, um den „Block notificaations“ ein- und ausgeschaltet programmatisch dass auch ok

Absolut nicht wäre. Das Zulassen, dass eine Anwendung programmgesteuert ihre Benachrichtigungen ein- und ausschaltet, vereitelt den Zweck, dem Benutzer die Kontrolle über das Ein- und Ausschalten von Benachrichtigungen zu geben.

+0

ich benutze die Settings.ACTION_APPLICATION_DETAILS_SETTINGS dann, danke – Ric

0
Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS); 
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
Uri uri = Uri.fromParts("package", getPackageName(), null); 
intent.setData(uri); 
startActivity(intent); 
0

Ich weiß, dass dies eine alte Frage, aber für diejenigen, es in der Zukunft zu finden: wie von Oreo (API-Ebene 26) gibt es jetzt eine offizielle Deeplink ist Intent für eine Benachrichtigungseinstellungen spezifischen App.

Intent settingsIntent = new Intent(Settings.ACTION_APP_NOTIFICATION_SETTINGS) 
     .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) 
     .putExtra(Settings.EXTRA_APP_PACKAGE, getPackageName()) 
     .putExtra(Settings.EXTRA_CHANNEL_ID, MY_CHANNEL_ID); 
startActivity(settingsIntent); 

EXTRA_CHANNEL_ID Der Parameter ist optional und nach the docs wird "diesen Kanal markieren." FWIW, ab Android 8.1 kann ich nicht sehen, dass es einen Unterschied macht.