From 94a5076bd6bdf11b38daf7d117b4f0ebfd5b98ee Mon Sep 17 00:00:00 2001 From: Jay Aliomer Date: Fri, 1 May 2020 10:55:54 -0400 Subject: [PATCH] NotificationAssistantService(NAS) is not set on a freshly setup device Fixes: 154495056 Test: manually test Change-Id: I157e351e79e2bfb2dff5e9b1369bdd01df01ad8a --- .../server/notification/ManagedServices.java | 13 ++++++++----- .../notification/NotificationManagerService.java | 16 ++++++++++------ 2 files changed, 18 insertions(+), 11 deletions(-) diff --git a/services/core/java/com/android/server/notification/ManagedServices.java b/services/core/java/com/android/server/notification/ManagedServices.java index 8bb7c0f530e4e..a604625460a77 100644 --- a/services/core/java/com/android/server/notification/ManagedServices.java +++ b/services/core/java/com/android/server/notification/ManagedServices.java @@ -98,6 +98,7 @@ abstract public class ManagedServices { private static final int ON_BINDING_DIED_REBIND_DELAY_MS = 10000; protected static final String ENABLED_SERVICES_SEPARATOR = ":"; private static final String DB_VERSION_1 = "1"; + private static final String DB_VERSION_2 = "2"; /** @@ -110,7 +111,7 @@ abstract public class ManagedServices { static final String ATT_VERSION = "version"; static final String ATT_DEFAULTS = "defaults"; - static final int DB_VERSION = 2; + static final int DB_VERSION = 3; static final int APPROVAL_BY_PACKAGE = 0; static final int APPROVAL_BY_COMPONENT = 1; @@ -571,14 +572,16 @@ abstract public class ManagedServices { } } } - boolean isVersionOne = TextUtils.isEmpty(version) || DB_VERSION_1.equals(version); - if (isVersionOne) { - upgradeToVersionTwo(); + boolean isOldVersion = TextUtils.isEmpty(version) + || DB_VERSION_1.equals(version) + || DB_VERSION_2.equals(version); + if (isOldVersion) { + upgradeDefaultsXmlVersion(); } rebindServices(false, USER_ALL); } - private void upgradeToVersionTwo() { + private void upgradeDefaultsXmlVersion() { // check if any defaults are loaded int defaultsSize = mDefaultComponents.size() + mDefaultPackages.size(); if (defaultsSize == 0) { diff --git a/services/core/java/com/android/server/notification/NotificationManagerService.java b/services/core/java/com/android/server/notification/NotificationManagerService.java index 5470b9c8c041a..06f49d5a7a32f 100755 --- a/services/core/java/com/android/server/notification/NotificationManagerService.java +++ b/services/core/java/com/android/server/notification/NotificationManagerService.java @@ -8611,15 +8611,19 @@ public class NotificationManagerService extends SystemService { com.android.internal.R.string.config_defaultAssistantAccessComponent) .split(ManagedServices.ENABLED_SERVICES_SEPARATOR))); for (int i = 0; i < assistants.size(); i++) { - String cnString = assistants.valueAt(i); - if (TextUtils.isEmpty(cnString)) { + ComponentName assistantCn = ComponentName + .unflattenFromString(assistants.valueAt(i)); + String packageName = assistants.valueAt(i); + if (assistantCn != null) { + packageName = assistantCn.getPackageName(); + } + if (TextUtils.isEmpty(packageName)) { continue; } - ArraySet approved = queryPackageForServices(cnString, + ArraySet approved = queryPackageForServices(packageName, MATCH_DIRECT_BOOT_AWARE | MATCH_DIRECT_BOOT_UNAWARE, USER_SYSTEM); - for (int k = 0; k < approved.size(); k++) { - ComponentName cn = approved.valueAt(k); - addDefaultComponentOrPackage(cn.flattenToString()); + if (approved.contains(assistantCn)) { + addDefaultComponentOrPackage(assistantCn.flattenToString()); } } }