diff --git a/res/values/strings.xml b/res/values/strings.xml
index 62e74527170..fd64db0e02b 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -6272,6 +6272,9 @@
Don\'t make sound, vibrate, or peek these notifications into view on the current screen.
+
+ Notification assistant
+
Notification access
diff --git a/res/xml/advanced_apps.xml b/res/xml/advanced_apps.xml
index 7b1af10211b..7e2e9cdd4d9 100644
--- a/res/xml/advanced_apps.xml
+++ b/res/xml/advanced_apps.xml
@@ -66,6 +66,10 @@
android:title="@string/sms_application_title"
settings:keywords="@string/keywords_more_default_sms_app" />
+
+
+
+
services) {
+ final ComponentName[] assistants = new ComponentName[services.size()];
+ for (int i = 0; i < services.size(); i++) {
+ assistants[i] = new ComponentName(services.get(i).packageName, services.get(i).name);
+ }
+ final String assistant =
+ Settings.Secure.getString(mContext.getContentResolver(), mConfig.setting);
+ setComponentNames(assistants, assistant == null ? null
+ : ComponentName.unflattenFromString(assistant));
+ }
+
+ private List getServices() {
+ List services = new ArrayList<>();
+ final int user = ActivityManager.getCurrentUser();
+
+ List installedServices = mPm.queryIntentServicesAsUser(
+ new Intent(mConfig.intentAction),
+ PackageManager.GET_SERVICES | PackageManager.GET_META_DATA,
+ user);
+
+ for (int i = 0, count = installedServices.size(); i < count; i++) {
+ ResolveInfo resolveInfo = installedServices.get(i);
+ ServiceInfo info = resolveInfo.serviceInfo;
+
+ if (!mConfig.permission.equals(info.permission)) {
+ Slog.w(mConfig.tag, "Skipping " + mConfig.noun + " service "
+ + info.packageName + "/" + info.name
+ + ": it does not require the permission "
+ + mConfig.permission);
+ continue;
+ }
+ services.add(info);
+ }
+ return services;
+ }
+
+ private ManagedServiceSettings.Config getConfig() {
+ final ManagedServiceSettings.Config c = new ManagedServiceSettings.Config();
+ c.tag = TAG;
+ c.setting = Settings.Secure.ENABLED_NOTIFICATION_ASSISTANT;
+ c.intentAction = NotificationAssistantService.SERVICE_INTERFACE;
+ c.permission = android.Manifest.permission.BIND_NOTIFICATION_ASSISTANT_SERVICE;
+ c.noun = "notification assistant";
+ c.warningDialogTitle = R.string.notification_listener_security_warning_title;
+ c.warningDialogSummary = R.string.notification_listener_security_warning_summary;
+ c.emptyText = R.string.no_notification_listeners;
+ return c;
+ }
+}
\ No newline at end of file