Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b7cc3c61 authored by Shuo Qian's avatar Shuo Qian Committed by Gerrit Code Review
Browse files

Merge "Companion InCallService API review"

parents 19f7526c 7a2b711b
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -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);
+18 −0
Original line number Diff line number Diff line
@@ -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>
+14 −13
Original line number Diff line number Diff line
@@ -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;
    }

+2 −2
Original line number Diff line number Diff line
@@ -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