diff options
Diffstat (limited to 'src/com/android/packageinstaller/role/model/AssistantRoleBehavior.java')
-rw-r--r-- | src/com/android/packageinstaller/role/model/AssistantRoleBehavior.java | 16 |
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); |