Loading src/com/android/packageinstaller/role/model/AssistantRoleBehavior.java +16 −0 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; Loading Loading @@ -58,6 +60,20 @@ public class AssistantRoleBehavior implements RoleBehavior { new Intent(VoiceInteractionService.SERVICE_INTERFACE); 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) { Loading src/com/android/packageinstaller/role/model/Role.java +11 −0 Original line number Diff line number Diff line Loading @@ -253,6 +253,17 @@ public class Role { return mPreferredActivities; } /** * Callback when this role is added to the system for the first time. * * @param context the {@code Context} to retrieve system services */ public void onRoleAdded(@NonNull Context context) { if (mBehavior != null) { mBehavior.onRoleAdded(this, context); } } /** * Check whether this role is available. * Loading src/com/android/packageinstaller/role/model/RoleBehavior.java +5 −0 Original line number Diff line number Diff line Loading @@ -35,6 +35,11 @@ import java.util.List; */ public interface RoleBehavior { /** * @see Role#onRoleAdded(Context) */ default void onRoleAdded(@NonNull Role role, @NonNull Context context) {} /** * @see Role#isAvailableAsUser(UserHandle, Context) */ Loading src/com/android/packageinstaller/role/service/RoleControllerServiceImpl.java +8 −0 Original line number Diff line number Diff line Loading @@ -89,6 +89,14 @@ public class RoleControllerServiceImpl extends RoleControllerService { // Set the available role names in RoleManager. mRoleManager.setRoleNamesFromController(roleNames); int addedRoleNamesSize = addedRoleNames.size(); for (int i = 0; i < addedRoleNamesSize; i++) { String roleName = addedRoleNames.valueAt(i); Role role = roleMap.get(roleName); role.onRoleAdded(this); } // Go through the holders of all roles. int rolesSize = roles.size(); for (int rolesIndex = 0; rolesIndex < rolesSize; rolesIndex++) { Loading Loading
src/com/android/packageinstaller/role/model/AssistantRoleBehavior.java +16 −0 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; Loading Loading @@ -58,6 +60,20 @@ public class AssistantRoleBehavior implements RoleBehavior { new Intent(VoiceInteractionService.SERVICE_INTERFACE); 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) { Loading
src/com/android/packageinstaller/role/model/Role.java +11 −0 Original line number Diff line number Diff line Loading @@ -253,6 +253,17 @@ public class Role { return mPreferredActivities; } /** * Callback when this role is added to the system for the first time. * * @param context the {@code Context} to retrieve system services */ public void onRoleAdded(@NonNull Context context) { if (mBehavior != null) { mBehavior.onRoleAdded(this, context); } } /** * Check whether this role is available. * Loading
src/com/android/packageinstaller/role/model/RoleBehavior.java +5 −0 Original line number Diff line number Diff line Loading @@ -35,6 +35,11 @@ import java.util.List; */ public interface RoleBehavior { /** * @see Role#onRoleAdded(Context) */ default void onRoleAdded(@NonNull Role role, @NonNull Context context) {} /** * @see Role#isAvailableAsUser(UserHandle, Context) */ Loading
src/com/android/packageinstaller/role/service/RoleControllerServiceImpl.java +8 −0 Original line number Diff line number Diff line Loading @@ -89,6 +89,14 @@ public class RoleControllerServiceImpl extends RoleControllerService { // Set the available role names in RoleManager. mRoleManager.setRoleNamesFromController(roleNames); int addedRoleNamesSize = addedRoleNames.size(); for (int i = 0; i < addedRoleNamesSize; i++) { String roleName = addedRoleNames.valueAt(i); Role role = roleMap.get(roleName); role.onRoleAdded(this); } // Go through the holders of all roles. int rolesSize = roles.size(); for (int rolesIndex = 0; rolesIndex < rolesSize; rolesIndex++) { Loading