diff options
author | 2024-03-11 16:59:52 +0000 | |
---|---|---|
committer | 2024-03-11 16:59:52 +0000 | |
commit | c735f4829b6385ccf6889e81effcc8381a9fe3f4 (patch) | |
tree | 3a7a901c8cfc910d6ff5363e210a6389676456d2 | |
parent | d39d079a24e841b77d9527629ee2dcd01cfcff91 (diff) | |
parent | dbb2887d541074af8e8539366e11810241618892 (diff) |
Merge "TelecomManager consolidate isInSelfManagedCall." into main
5 files changed, 8 insertions, 41 deletions
diff --git a/core/api/system-current.txt b/core/api/system-current.txt index 58dac87c8f64..fb2a4ac944a9 100644 --- a/core/api/system-current.txt +++ b/core/api/system-current.txt @@ -14214,7 +14214,6 @@ package android.telecom { method @RequiresPermission(anyOf={android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE, android.Manifest.permission.READ_PHONE_STATE}) public java.util.List<android.telecom.PhoneAccountHandle> getPhoneAccountsSupportingScheme(String); method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean isInEmergencyCall(); method @FlaggedApi("com.android.server.telecom.flags.telecom_resolve_hidden_dependencies") @RequiresPermission(allOf={android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE, android.Manifest.permission.INTERACT_ACROSS_USERS}, conditional=true) public boolean isInSelfManagedCall(@NonNull String, @NonNull android.os.UserHandle); - method @FlaggedApi("com.android.server.telecom.flags.telecom_resolve_hidden_dependencies") @RequiresPermission(allOf={android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE, android.Manifest.permission.INTERACT_ACROSS_USERS}, conditional=true) public boolean isInSelfManagedCall(@NonNull String, boolean); method @RequiresPermission(anyOf={android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE, android.Manifest.permission.READ_PHONE_STATE}) public boolean isRinging(); method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setUserSelectedOutgoingPhoneAccount(@Nullable android.telecom.PhoneAccountHandle); field public static final String ACTION_CURRENT_TTY_MODE_CHANGED = "android.telecom.action.CURRENT_TTY_MODE_CHANGED"; diff --git a/services/core/java/com/android/server/notification/NotificationManagerService.java b/services/core/java/com/android/server/notification/NotificationManagerService.java index b98424cfade4..e7455dbad949 100755 --- a/services/core/java/com/android/server/notification/NotificationManagerService.java +++ b/services/core/java/com/android/server/notification/NotificationManagerService.java @@ -8210,7 +8210,7 @@ public class NotificationManagerService extends SystemService { try { return mTelecomManager.isInManagedCall() || mTelecomManager.isInSelfManagedCall(pkg, - /* hasCrossUserAccess */ true); + UserHandle.ALL); } catch (IllegalStateException ise) { // Telecom is not ready (this is likely early boot), so there are no calls. return false; diff --git a/services/tests/uiservicestests/src/com/android/server/notification/NotificationManagerServiceTest.java b/services/tests/uiservicestests/src/com/android/server/notification/NotificationManagerServiceTest.java index 03f27493c3c7..26cda65309ad 100755 --- a/services/tests/uiservicestests/src/com/android/server/notification/NotificationManagerServiceTest.java +++ b/services/tests/uiservicestests/src/com/android/server/notification/NotificationManagerServiceTest.java @@ -12008,7 +12008,7 @@ public class NotificationManagerServiceTest extends UiServiceTestCase { // style + self managed call - bypasses block when(mTelecomManager.isInSelfManagedCall( - r.getSbn().getPackageName(), true)).thenReturn(true); + r.getSbn().getPackageName(), UserHandle.ALL)).thenReturn(true); assertThat(mService.checkDisqualifyingFeatures(r.getUserId(), r.getUid(), r.getSbn().getId(), r.getSbn().getTag(), r, false, false)).isTrue(); @@ -12091,7 +12091,7 @@ public class NotificationManagerServiceTest extends UiServiceTestCase { // style + self managed call - bypasses block mService.clearNotifications(); reset(mUsageStats); - when(mTelecomManager.isInSelfManagedCall(r.getSbn().getPackageName(), true)) + when(mTelecomManager.isInSelfManagedCall(r.getSbn().getPackageName(), UserHandle.ALL)) .thenReturn(true); mService.addEnqueuedNotification(r); diff --git a/telecomm/java/android/telecom/TelecomManager.java b/telecomm/java/android/telecom/TelecomManager.java index 048b1b290dde..ff4be5586bc1 100644 --- a/telecomm/java/android/telecom/TelecomManager.java +++ b/telecomm/java/android/telecom/TelecomManager.java @@ -2797,7 +2797,9 @@ public class TelecomManager { /** * Determines whether there are any ongoing {@link PhoneAccount#CAPABILITY_SELF_MANAGED} - * calls for a given {@code packageName} and {@code userHandle}. + * calls for a given {@code packageName} and {@code userHandle}. If UserHandle.ALL or a user + * that isn't the calling user is passed in, the caller will need to have granted the ability + * to interact across users. * * @param packageName the package name of the app to check calls for. * @param userHandle the user handle to check calls for. @@ -2816,41 +2818,7 @@ public class TelecomManager { if (service != null) { try { return service.isInSelfManagedCall(packageName, userHandle, - mContext.getOpPackageName(), false); - } catch (RemoteException e) { - Log.e(TAG, "RemoteException isInSelfManagedCall: " + e); - e.rethrowFromSystemServer(); - return false; - } - } else { - throw new IllegalStateException("Telecom service is not present"); - } - } - - /** - * Determines whether there are any ongoing {@link PhoneAccount#CAPABILITY_SELF_MANAGED} - * calls for a given {@code packageName} amongst all users, given that detectForAllUsers is true - * and the caller has the ability to interact across users. If detectForAllUsers isn't enabled, - * the calls will be checked against the caller. - * - * @param packageName the package name of the app to check calls for. - * @param detectForAllUsers indicates if calls should be detected across all users. - * @return {@code true} if there are ongoing calls, {@code false} otherwise. - * @throws SecurityException if detectForAllUsers is true and the caller does not grant the - * ability to interact across users. - * @hide - */ - @SystemApi - @FlaggedApi(Flags.FLAG_TELECOM_RESOLVE_HIDDEN_DEPENDENCIES) - @RequiresPermission(allOf = {Manifest.permission.READ_PRIVILEGED_PHONE_STATE, - Manifest.permission.INTERACT_ACROSS_USERS}, conditional = true) - public boolean isInSelfManagedCall(@NonNull String packageName, - boolean detectForAllUsers) { - ITelecomService service = getTelecomService(); - if (service != null) { - try { - return service.isInSelfManagedCall(packageName, null, - mContext.getOpPackageName(), detectForAllUsers); + mContext.getOpPackageName()); } catch (RemoteException e) { Log.e(TAG, "RemoteException isInSelfManagedCall: " + e); e.rethrowFromSystemServer(); diff --git a/telecomm/java/com/android/internal/telecom/ITelecomService.aidl b/telecomm/java/com/android/internal/telecom/ITelecomService.aidl index 302a472b77e4..112471b2af57 100644 --- a/telecomm/java/com/android/internal/telecom/ITelecomService.aidl +++ b/telecomm/java/com/android/internal/telecom/ITelecomService.aidl @@ -401,7 +401,7 @@ interface ITelecomService { * @see TelecomServiceImpl#isInSelfManagedCall */ boolean isInSelfManagedCall(String packageName, in UserHandle userHandle, - String callingPackage, boolean detectForAllUsers); + String callingPackage); /** * @see TelecomServiceImpl#addCall |