diff options
Diffstat (limited to 'PermissionController/role-controller/java/com/android/role/controller/model/PreferredActivity.java')
-rw-r--r-- | PermissionController/role-controller/java/com/android/role/controller/model/PreferredActivity.java | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/PermissionController/role-controller/java/com/android/role/controller/model/PreferredActivity.java b/PermissionController/role-controller/java/com/android/role/controller/model/PreferredActivity.java index 5b9c22b67..7ea7de046 100644 --- a/PermissionController/role-controller/java/com/android/role/controller/model/PreferredActivity.java +++ b/PermissionController/role-controller/java/com/android/role/controller/model/PreferredActivity.java @@ -22,9 +22,12 @@ import android.content.Intent; import android.content.IntentFilter; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; +import android.os.UserHandle; import androidx.annotation.NonNull; +import com.android.role.controller.util.UserUtils; + import java.util.ArrayList; import java.util.List; import java.util.Objects; @@ -67,18 +70,21 @@ public class PreferredActivity { * Configure this preferred activity specification for an application. * * @param packageName the package name of the application + * @param user the user of the application * @param context the {@code Context} to retrieve system services */ - public void configure(@NonNull String packageName, @NonNull Context context) { - ComponentName packageActivity = mActivity.getQualifyingComponentForPackage( - packageName, context); + public void configureAsUser(@NonNull String packageName, @NonNull UserHandle user, + @NonNull Context context) { + ComponentName packageActivity = mActivity.getQualifyingComponentForPackageAsUser( + packageName, user, context); if (packageActivity == null) { // We might be running into some race condition here, but we can't do anything about it. // This should be handled by a future reconciliation started by the package change. return; } - PackageManager packageManager = context.getPackageManager(); + Context userContext = UserUtils.getUserContext(context, user); + PackageManager userPackageManager = userContext.getPackageManager(); int intentFilterDatasSize = mIntentFilterDatas.size(); for (int i = 0; i < intentFilterDatasSize; i++) { IntentFilterData intentFilterData = mIntentFilterDatas.get(i); @@ -92,7 +98,7 @@ public class PreferredActivity { ? IntentFilter.MATCH_CATEGORY_SCHEME : IntentFilter.MATCH_CATEGORY_EMPTY; Intent intent = intentFilterData.createIntent(); - List<ResolveInfo> resolveInfos = packageManager.queryIntentActivities(intent, + List<ResolveInfo> resolveInfos = userPackageManager.queryIntentActivities(intent, PackageManager.MATCH_DIRECT_BOOT_AWARE | PackageManager.MATCH_DIRECT_BOOT_UNAWARE | PackageManager.MATCH_DEFAULT_ONLY); @@ -107,7 +113,7 @@ public class PreferredActivity { set.add(componentName); } - packageManager.replacePreferredActivity(intentFilter, match, set, packageActivity); + userPackageManager.replacePreferredActivity(intentFilter, match, set, packageActivity); } } |