Loading core/api/current.txt +1 −1 Original line number Diff line number Diff line Loading @@ -38706,7 +38706,7 @@ package android.telecom { method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public String getVoiceMailNumber(android.telecom.PhoneAccountHandle); method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean handleMmi(String); method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean handleMmi(String, android.telecom.PhoneAccountHandle); method public boolean hasCompanionInCallServiceAccess(); method public boolean hasManageOngoingCallsPermission(); method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public boolean isInCall(); method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public boolean isInManagedCall(); method public boolean isIncomingCallPermitted(android.telecom.PhoneAccountHandle); telecomm/java/android/telecom/InCallService.java +18 −0 Original line number Diff line number Diff line Loading @@ -138,6 +138,24 @@ import java.util.List; * } * } * } * * </pre> * <p id="companionInCallService"> * <h3>Access to InCallService for Wearable Devices</h3> * <ol> * If your app is a third-party companion app and wants to access InCallService APIs, what your * app could do are: * <p> * <ol> * <li> Declare MANAGE_ONGOING_CALLS permission in your manifest * <li> Associate with a physical wearable device via the * {@link android.companion.CompanionDeviceManager} API as a companion app. See: * https://developer.android.com/guide/topics/connectivity/companion-device-pairing * <li> Implement this InCallService with BIND_INCALL_SERVICE permission * </ol> * </ol> * <p> * * </pre> * <p id="incomingCallNotification"> * <h3>Showing the Incoming Call Notification</h3> Loading telecomm/java/android/telecom/TelecomManager.java +14 −13 Original line number Diff line number Diff line Loading @@ -1649,26 +1649,27 @@ public class TelecomManager { } /** * Returns whether the caller has {@link InCallService} access for companion apps. * * A companion app is an app associated with a physical wearable device via the * {@link android.companion.CompanionDeviceManager} API. * Returns whether the caller has {@link android.Manifest.permission#MANAGE_ONGOING_CALLS} * permission. The permission can be obtained by associating with a physical wearable device * via the {@link android.companion.CompanionDeviceManager} API as a companion app. If the * caller app has the permission, it has {@link InCallService} access to manage ongoing calls. * * @return {@code true} if the caller has {@link InCallService} access for * companion app; {@code false} otherwise. */ public boolean hasCompanionInCallServiceAccess() { public boolean hasManageOngoingCallsPermission() { ITelecomService service = getTelecomService(); if (service != null) { try { if (isServiceConnected()) { return getTelecomService().hasCompanionInCallServiceAccess( return service.hasManageOngoingCallsPermission( mContext.getOpPackageName()); } } catch (RemoteException e) { Log.e(TAG, "RemoteException calling hasCompanionInCallServiceAccess().", e); Log.e(TAG, "RemoteException calling hasManageOngoingCallsPermission().", e); if (!isSystemProcess()) { e.rethrowAsRuntimeException(); } } } return false; } Loading telecomm/java/com/android/internal/telecom/ITelecomService.aidl +2 −2 Original line number Diff line number Diff line Loading @@ -179,9 +179,9 @@ interface ITelecomService { boolean isInCall(String callingPackage, String callingFeatureId); /** * @see TelecomServiceImpl#hasCompanionInCallServiceAccess * @see TelecomServiceImpl#hasManageOngoingCallsPermission */ boolean hasCompanionInCallServiceAccess(String callingPackage); boolean hasManageOngoingCallsPermission(String callingPackage); /** * @see TelecomServiceImpl#isInManagedCall Loading Loading
core/api/current.txt +1 −1 Original line number Diff line number Diff line Loading @@ -38706,7 +38706,7 @@ package android.telecom { method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public String getVoiceMailNumber(android.telecom.PhoneAccountHandle); method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean handleMmi(String); method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean handleMmi(String, android.telecom.PhoneAccountHandle); method public boolean hasCompanionInCallServiceAccess(); method public boolean hasManageOngoingCallsPermission(); method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public boolean isInCall(); method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public boolean isInManagedCall(); method public boolean isIncomingCallPermitted(android.telecom.PhoneAccountHandle);
telecomm/java/android/telecom/InCallService.java +18 −0 Original line number Diff line number Diff line Loading @@ -138,6 +138,24 @@ import java.util.List; * } * } * } * * </pre> * <p id="companionInCallService"> * <h3>Access to InCallService for Wearable Devices</h3> * <ol> * If your app is a third-party companion app and wants to access InCallService APIs, what your * app could do are: * <p> * <ol> * <li> Declare MANAGE_ONGOING_CALLS permission in your manifest * <li> Associate with a physical wearable device via the * {@link android.companion.CompanionDeviceManager} API as a companion app. See: * https://developer.android.com/guide/topics/connectivity/companion-device-pairing * <li> Implement this InCallService with BIND_INCALL_SERVICE permission * </ol> * </ol> * <p> * * </pre> * <p id="incomingCallNotification"> * <h3>Showing the Incoming Call Notification</h3> Loading
telecomm/java/android/telecom/TelecomManager.java +14 −13 Original line number Diff line number Diff line Loading @@ -1649,26 +1649,27 @@ public class TelecomManager { } /** * Returns whether the caller has {@link InCallService} access for companion apps. * * A companion app is an app associated with a physical wearable device via the * {@link android.companion.CompanionDeviceManager} API. * Returns whether the caller has {@link android.Manifest.permission#MANAGE_ONGOING_CALLS} * permission. The permission can be obtained by associating with a physical wearable device * via the {@link android.companion.CompanionDeviceManager} API as a companion app. If the * caller app has the permission, it has {@link InCallService} access to manage ongoing calls. * * @return {@code true} if the caller has {@link InCallService} access for * companion app; {@code false} otherwise. */ public boolean hasCompanionInCallServiceAccess() { public boolean hasManageOngoingCallsPermission() { ITelecomService service = getTelecomService(); if (service != null) { try { if (isServiceConnected()) { return getTelecomService().hasCompanionInCallServiceAccess( return service.hasManageOngoingCallsPermission( mContext.getOpPackageName()); } } catch (RemoteException e) { Log.e(TAG, "RemoteException calling hasCompanionInCallServiceAccess().", e); Log.e(TAG, "RemoteException calling hasManageOngoingCallsPermission().", e); if (!isSystemProcess()) { e.rethrowAsRuntimeException(); } } } return false; } Loading
telecomm/java/com/android/internal/telecom/ITelecomService.aidl +2 −2 Original line number Diff line number Diff line Loading @@ -179,9 +179,9 @@ interface ITelecomService { boolean isInCall(String callingPackage, String callingFeatureId); /** * @see TelecomServiceImpl#hasCompanionInCallServiceAccess * @see TelecomServiceImpl#hasManageOngoingCallsPermission */ boolean hasCompanionInCallServiceAccess(String callingPackage); boolean hasManageOngoingCallsPermission(String callingPackage); /** * @see TelecomServiceImpl#isInManagedCall Loading