summaryrefslogtreecommitdiffstats
path: root/src/com/android/packageinstaller/role/model/AssistantRoleBehavior.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/packageinstaller/role/model/AssistantRoleBehavior.java')
-rw-r--r--src/com/android/packageinstaller/role/model/AssistantRoleBehavior.java16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/com/android/packageinstaller/role/model/AssistantRoleBehavior.java b/src/com/android/packageinstaller/role/model/AssistantRoleBehavior.java
index f79522ea..bd08349e 100644
--- a/src/com/android/packageinstaller/role/model/AssistantRoleBehavior.java
+++ b/src/com/android/packageinstaller/role/model/AssistantRoleBehavior.java
@@ -18,6 +18,7 @@ package com.android.packageinstaller.role.model;
import android.app.ActivityManager;
import android.app.Application;
+import android.app.role.RoleManager;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
@@ -25,6 +26,7 @@ import android.content.pm.ResolveInfo;
import android.content.pm.ServiceInfo;
import android.content.res.Resources;
import android.content.res.XmlResourceParser;
+import android.os.Process;
import android.os.UserHandle;
import android.provider.Settings;
import android.service.voice.VoiceInteractionService;
@@ -59,6 +61,20 @@ public class AssistantRoleBehavior implements RoleBehavior {
private static final Intent ASSIST_ACTIVITY_PROBE = new Intent(Intent.ACTION_ASSIST);
@Override
+ public void onRoleAdded(@NonNull Role role, @NonNull Context context) {
+ PackageManager packageManager = context.getPackageManager();
+ if (packageManager.isDeviceUpgrading()) {
+ RoleManager roleManager = context.getSystemService(RoleManager.class);
+ List<String> packageNames = roleManager.getRoleHolders(role.getName());
+ if (packageNames.isEmpty()) {
+ // If the device was upgraded, and there isn't any legacy role holders, it means
+ // user selected "None" in Settings and we need to keep that.
+ role.onNoneHolderSelectedAsUser(Process.myUserHandle(), context);
+ }
+ }
+ }
+
+ @Override
public boolean isAvailableAsUser(@NonNull Role role, @NonNull UserHandle user,
@NonNull Context context) {
return !UserUtils.isWorkProfile(user, context);