diff options
Diffstat (limited to 'framework-s/java')
-rw-r--r-- | framework-s/java/android/app/role/RoleManager.java | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/framework-s/java/android/app/role/RoleManager.java b/framework-s/java/android/app/role/RoleManager.java index 231c72c2c..aeb229cae 100644 --- a/framework-s/java/android/app/role/RoleManager.java +++ b/framework-s/java/android/app/role/RoleManager.java @@ -1023,11 +1023,20 @@ public final class RoleManager { @NonNull @CallbackExecutor Executor executor, @NonNull Consumer<Boolean> callback) { if (SdkLevel.isAtLeastV() && Flags.roleControllerInSystemServer()) { int userId = getContextUserIfAppropriate().getIdentifier(); + boolean visible; try { - mService.isApplicationVisibleForRoleAsUser(roleName, packageName, userId); + visible = mService.isApplicationVisibleForRoleAsUser(roleName, packageName, userId); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } + executor.execute(() -> { + final long token = Binder.clearCallingIdentity(); + try { + callback.accept(visible); + } finally { + Binder.restoreCallingIdentity(token); + } + }); } else { getRoleControllerManager().isApplicationVisibleForRole(roleName, packageName, executor, callback); |