webentwicklung-frage-antwort-db.com.de

Greifen Sie programmgesteuert auf Benachrichtigungseinstellungen für Anwendungen zu

In einer Android-App habe ich eine Schaltfläche, die die Funktion zum Öffnen der App-Benachrichtigungseinstellungen (in Android-Einstellungen) haben soll.

 Screenshot of Android's notification settings for the Camera application

Ich kann damit die Android-Einstellungen öffnen

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

ich möchte aber direkt in meinen App-Benachrichtigungseinstellungen öffnen

Alternative

Wenn es eine Möglichkeit gibt, die "Benachrichtigungen blockieren" programmgesteuert ein- und auszuschalten, wäre dies ebenfalls in Ordnung.

7
Ric

Es gibt keine öffentliche API, mit der Sie die Benachrichtigungseinstellungen Ihrer Anwendung direkt verknüpfen können.

Sie können Settings.ACTION_APPLICATION_DETAILS_SETTINGS verwenden, um einen tiefen Link zu den Einstellungen Ihrer Anwendung herzustellen. Dies bringt Sie jedoch nicht direkt zum Benachrichtigungsbildschirm.

Gibt es eine Möglichkeit, eine Verknüpfung zu den Android-Benachrichtigungseinstellungen für meine App herzustellen? hat eine Lösung, die möglicherweise funktioniert, aber da sie nicht Teil der offiziellen API ist, kann nicht garantiert werden, dass sie auf allen Geräten oder für zukünftige Versionen von Android funktioniert.

wenn es eine Möglichkeit gibt, die "Blockbenachrichtigungen" programmatisch ein- und auszuschalten, wäre dies ebenfalls in Ordnung

Absolut nicht. Wenn eine Anwendung programmgesteuert das Aktivieren und Deaktivieren von Benachrichtigungen zulässt, kann der Benutzer nicht die Kontrolle über das Aktivieren und Deaktivieren von Benachrichtigungen erhalten.

9
Tanis.7x

Ich weiß, dass dies eine alte Frage ist, aber für diejenigen, die es in der Zukunft finden: Seit Oreo (API-Level 26) gibt es jetzt einen offiziellen Deeplink Intent für die Benachrichtigungseinstellungen einer bestimmten 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);

Der EXTRA_CHANNEL_ID-Parameter ist optional und wird gemäß the docs "diesen Kanal hervorheben." FWIW, ab Android 8.1 kann ich nicht erkennen, dass es einen Unterschied macht.

7
String
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
Makvin