Merge "NotificationAssistantService(NAS) is not set on a freshly setup device" into rvc-dev

This commit is contained in:
Jay Aliomer
2020-05-04 20:11:33 +00:00
committed by Android (Google) Code Review
2 changed files with 18 additions and 11 deletions

View File

@@ -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) {

View File

@@ -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<ComponentName> approved = queryPackageForServices(cnString,
ArraySet<ComponentName> 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());
}
}
}