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

Commit 4d065269 authored by Shuo Qian's avatar Shuo Qian
Browse files

Introduce hasCompanionInCallServiceAccess API

It retruns whether the caller has InCallService access for the companion
 apps. A companion app is an app associated with a physical wearable
 device via the {@link android.companion.CompanionDeviceManager} API.

Test: cts
Bug: 169595473
Change-Id: Id659bfae8556e965d3c31613848bde808f28a858
parent 80944216
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -46508,6 +46508,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 @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);
+1 −0
Original line number Diff line number Diff line
@@ -44634,6 +44634,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 @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);
+29 −0
Original line number Diff line number Diff line
@@ -32,6 +32,7 @@ import android.content.Intent;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.os.Process;
import android.os.RemoteException;
import android.os.ServiceManager;
import android.os.UserHandle;
@@ -1604,6 +1605,30 @@ public class TelecomManager {
        return false;
    }

    /**
     * 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.
     *
     * @return {@code true} if the caller has {@link InCallService} access for
     *      companion app; {@code false} otherwise.
     */
    public boolean hasCompanionInCallServiceAccess() {
        try {
            if (isServiceConnected()) {
                return getTelecomService().hasCompanionInCallServiceAccess(
                        mContext.getOpPackageName());
            }
        } catch (RemoteException e) {
            Log.e(TAG, "RemoteException calling hasCompanionInCallServiceAccess().", e);
            if (!isSystemProcess()) {
                e.rethrowAsRuntimeException();
            }
        }
        return false;
    }

    /**
     * Returns whether there is an ongoing call originating from a managed
     * {@link ConnectionService}.  An ongoing call can be in dialing, ringing, active or holding
@@ -2416,6 +2441,10 @@ public class TelecomManager {
        }
    }

    private boolean isSystemProcess() {
        return Process.myUid() == Process.SYSTEM_UID;
    }

    private ITelecomService getTelecomService() {
        if (mTelecomServiceOverride != null) {
            return mTelecomServiceOverride;
+5 −0
Original line number Diff line number Diff line
@@ -178,6 +178,11 @@ interface ITelecomService {
     */
    boolean isInCall(String callingPackage, String callingFeatureId);

    /**
     * @see TelecomServiceImpl#hasCompanionInCallServiceAccess
     */
    boolean hasCompanionInCallServiceAccess(String callingPackage);

    /**
     * @see TelecomServiceImpl#isInManagedCall
     */