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

Commit c9443c89 authored by Shuo Qian's avatar Shuo Qian Committed by Automerger Merge Worker
Browse files

Merge "Companion InCallService API review" am: b7cc3c61 am: a63d1250

Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1607479

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: I52e18abe08b9258687e9a27b2e8e549cc6f39874
parents c16285c2 a63d1250
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
@@ -1657,26 +1657,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