Loading core/java/android/content/pm/PackageManagerInternal.java +3 −1 Original line number Diff line number Diff line Loading @@ -193,8 +193,10 @@ public abstract class PackageManagerInternal { * * @param packageName package name of the default home, or {@code null} to remove * @param userId the user id * @param callback the callback made after the default home as been updated */ void setDefaultHomeAsync(@Nullable String packageName, @UserIdInt int userId); void setDefaultHomeAsync(@Nullable String packageName, @UserIdInt int userId, @NonNull Consumer<Boolean> callback); } /** Loading services/core/java/com/android/server/pm/PackageManagerService.java +15 −6 Original line number Diff line number Diff line Loading @@ -19710,8 +19710,9 @@ public class PackageManagerService extends IPackageManager.Stub filter.dump(new LogPrinter(Log.INFO, TAG), " "); pir.addFilter(new PreferredActivity(filter, match, set, activity, always)); scheduleWritePackageRestrictionsLocked(userId); if (!updateDefaultHomeLPw(userId)) { postPreferredActivityChangedBroadcast(userId); updateDefaultHomeLPw(userId); } } } Loading Loading @@ -20490,7 +20491,10 @@ public class PackageManagerService extends IPackageManager.Stub return null; } private void updateDefaultHomeLPw(int userId) { /** * @return Whether the ACTION_PREFERRED_ACTIVITY_CHANGED broadcast has been scheduled. */ private boolean updateDefaultHomeLPw(int userId) { Intent intent = getHomeIntent(); List<ResolveInfo> resolveInfos = queryIntentActivitiesInternal(intent, null, PackageManager.GET_META_DATA, userId); Loading @@ -20501,15 +20505,20 @@ public class PackageManagerService extends IPackageManager.Stub ? preferredResolveInfo.activityInfo.packageName : null; String currentPackageName = mDefaultHomeProvider.getDefaultHome(userId); if (TextUtils.equals(currentPackageName, packageName)) { return; return false; } String[] callingPackages = getPackagesForUid(Binder.getCallingUid()); if (callingPackages != null && ArrayUtils.contains(callingPackages, mRequiredPermissionControllerPackage)) { // PermissionController manages default home directly. return; return false; } mDefaultHomeProvider.setDefaultHomeAsync(packageName, userId, (successful) -> { if (successful) { postPreferredActivityChangedBroadcast(userId); } mDefaultHomeProvider.setDefaultHomeAsync(packageName, userId); }); return true; } @Override services/core/java/com/android/server/role/RoleManagerService.java +7 −4 Original line number Diff line number Diff line Loading @@ -85,6 +85,7 @@ import java.util.concurrent.CompletableFuture; import java.util.concurrent.ExecutionException; import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; import java.util.function.Consumer; /** * Service for role management. Loading Loading @@ -780,19 +781,21 @@ public class RoleManagerService extends SystemService implements RoleUserState.C } @Override public void setDefaultHomeAsync(@Nullable String packageName, @UserIdInt int userId) { RemoteCallback callback = new RemoteCallback(result -> { public void setDefaultHomeAsync(@Nullable String packageName, @UserIdInt int userId, @NonNull Consumer<Boolean> callback) { RemoteCallback remoteCallback = new RemoteCallback(result -> { boolean successful = result != null; if (!successful) { Slog.e(LOG_TAG, "Failed to set default home: " + packageName); } callback.accept(successful); }); if (packageName != null) { getOrCreateControllerService(userId).onAddRoleHolder(RoleManager.ROLE_HOME, packageName, 0, callback); packageName, 0, remoteCallback); } else { getOrCreateControllerService(userId).onClearRoleHolders(RoleManager.ROLE_HOME, 0, callback); remoteCallback); } } } Loading Loading
core/java/android/content/pm/PackageManagerInternal.java +3 −1 Original line number Diff line number Diff line Loading @@ -193,8 +193,10 @@ public abstract class PackageManagerInternal { * * @param packageName package name of the default home, or {@code null} to remove * @param userId the user id * @param callback the callback made after the default home as been updated */ void setDefaultHomeAsync(@Nullable String packageName, @UserIdInt int userId); void setDefaultHomeAsync(@Nullable String packageName, @UserIdInt int userId, @NonNull Consumer<Boolean> callback); } /** Loading
services/core/java/com/android/server/pm/PackageManagerService.java +15 −6 Original line number Diff line number Diff line Loading @@ -19710,8 +19710,9 @@ public class PackageManagerService extends IPackageManager.Stub filter.dump(new LogPrinter(Log.INFO, TAG), " "); pir.addFilter(new PreferredActivity(filter, match, set, activity, always)); scheduleWritePackageRestrictionsLocked(userId); if (!updateDefaultHomeLPw(userId)) { postPreferredActivityChangedBroadcast(userId); updateDefaultHomeLPw(userId); } } } Loading Loading @@ -20490,7 +20491,10 @@ public class PackageManagerService extends IPackageManager.Stub return null; } private void updateDefaultHomeLPw(int userId) { /** * @return Whether the ACTION_PREFERRED_ACTIVITY_CHANGED broadcast has been scheduled. */ private boolean updateDefaultHomeLPw(int userId) { Intent intent = getHomeIntent(); List<ResolveInfo> resolveInfos = queryIntentActivitiesInternal(intent, null, PackageManager.GET_META_DATA, userId); Loading @@ -20501,15 +20505,20 @@ public class PackageManagerService extends IPackageManager.Stub ? preferredResolveInfo.activityInfo.packageName : null; String currentPackageName = mDefaultHomeProvider.getDefaultHome(userId); if (TextUtils.equals(currentPackageName, packageName)) { return; return false; } String[] callingPackages = getPackagesForUid(Binder.getCallingUid()); if (callingPackages != null && ArrayUtils.contains(callingPackages, mRequiredPermissionControllerPackage)) { // PermissionController manages default home directly. return; return false; } mDefaultHomeProvider.setDefaultHomeAsync(packageName, userId, (successful) -> { if (successful) { postPreferredActivityChangedBroadcast(userId); } mDefaultHomeProvider.setDefaultHomeAsync(packageName, userId); }); return true; } @Override
services/core/java/com/android/server/role/RoleManagerService.java +7 −4 Original line number Diff line number Diff line Loading @@ -85,6 +85,7 @@ import java.util.concurrent.CompletableFuture; import java.util.concurrent.ExecutionException; import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; import java.util.function.Consumer; /** * Service for role management. Loading Loading @@ -780,19 +781,21 @@ public class RoleManagerService extends SystemService implements RoleUserState.C } @Override public void setDefaultHomeAsync(@Nullable String packageName, @UserIdInt int userId) { RemoteCallback callback = new RemoteCallback(result -> { public void setDefaultHomeAsync(@Nullable String packageName, @UserIdInt int userId, @NonNull Consumer<Boolean> callback) { RemoteCallback remoteCallback = new RemoteCallback(result -> { boolean successful = result != null; if (!successful) { Slog.e(LOG_TAG, "Failed to set default home: " + packageName); } callback.accept(successful); }); if (packageName != null) { getOrCreateControllerService(userId).onAddRoleHolder(RoleManager.ROLE_HOME, packageName, 0, callback); packageName, 0, remoteCallback); } else { getOrCreateControllerService(userId).onClearRoleHolders(RoleManager.ROLE_HOME, 0, callback); remoteCallback); } } } Loading