summaryrefslogtreecommitdiff
path: root/PermissionController/role-controller/java/com/android/role/controller/model/PreferredActivity.java
diff options
context:
space:
mode:
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.java18
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);
}
}