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

Commit b230624a authored by Hall Liu's avatar Hall Liu
Browse files

Expose new Telecom APIs for use by Telephony

Expose TelecomManager#getCallCapablePhoneAccounts(boolean) and
ConnectionRequest#getTelecomCallId

Bug: 141576153
Test: CTS
Change-Id: Ie0214fc93682229a3e5781f62743f00f68472702
parent 398794c0
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -6990,6 +6990,10 @@ package android.telecom {
    field public static final int PROPERTY_REMOTELY_HOSTED = 2048; // 0x800
  }
  public final class ConnectionRequest implements android.os.Parcelable {
    method @Nullable public String getTelecomCallId();
  }
  public abstract class ConnectionService extends android.app.Service {
    method public final void addExistingConnection(@NonNull android.telecom.PhoneAccountHandle, @NonNull android.telecom.Connection, @NonNull android.telecom.Conference);
  }
@@ -7196,6 +7200,7 @@ package android.telecom {
    method public java.util.List<android.telecom.PhoneAccountHandle> getAllPhoneAccountHandles();
    method public java.util.List<android.telecom.PhoneAccount> getAllPhoneAccounts();
    method public int getAllPhoneAccountsCount();
    method @NonNull @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public java.util.List<android.telecom.PhoneAccountHandle> getCallCapablePhoneAccounts(boolean);
    method public int getCallState();
    method public android.telecom.PhoneAccountHandle getConnectionManager();
    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public int getCurrentTtyMode();
+18 −0
Original line number Diff line number Diff line
@@ -2782,6 +2782,23 @@ package android.telecom {
    field public static final int PROPERTY_REMOTELY_HOSTED = 2048; // 0x800
  }

  public final class ConnectionRequest implements android.os.Parcelable {
    method @Nullable public String getTelecomCallId();
  }

  public static final class ConnectionRequest.Builder {
    ctor public ConnectionRequest.Builder();
    method @NonNull public android.telecom.ConnectionRequest build();
    method @NonNull public android.telecom.ConnectionRequest.Builder setAccountHandle(@NonNull android.telecom.PhoneAccountHandle);
    method @NonNull public android.telecom.ConnectionRequest.Builder setAddress(@NonNull android.net.Uri);
    method @NonNull public android.telecom.ConnectionRequest.Builder setExtras(@NonNull android.os.Bundle);
    method @NonNull public android.telecom.ConnectionRequest.Builder setRttPipeFromInCall(@NonNull android.os.ParcelFileDescriptor);
    method @NonNull public android.telecom.ConnectionRequest.Builder setRttPipeToInCall(@NonNull android.os.ParcelFileDescriptor);
    method @NonNull public android.telecom.ConnectionRequest.Builder setShouldShowIncomingCallUi(boolean);
    method @NonNull public android.telecom.ConnectionRequest.Builder setTelecomCallId(@NonNull String);
    method @NonNull public android.telecom.ConnectionRequest.Builder setVideoState(int);
  }

  public static class PhoneAccount.Builder {
    method @NonNull public android.telecom.PhoneAccount.Builder setGroupId(@NonNull String);
  }
@@ -2795,6 +2812,7 @@ package android.telecom {
  }

  public class TelecomManager {
    method @NonNull @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public java.util.List<android.telecom.PhoneAccountHandle> getCallCapablePhoneAccounts(boolean);
    method @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public int getCurrentTtyMode();
    method @Nullable @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public String getDefaultDialerPackage(int);
    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean isInEmergencyCall();
+22 −10
Original line number Diff line number Diff line
@@ -16,6 +16,10 @@

package android.telecom;

import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.SystemApi;
import android.annotation.TestApi;
import android.net.Uri;
import android.os.Bundle;
import android.os.Parcel;
@@ -32,6 +36,7 @@ public final class ConnectionRequest implements Parcelable {
     * Builder class for {@link ConnectionRequest}
     * @hide
     */
    @TestApi // For convenience in CTS tests
    public static final class Builder {
        private PhoneAccountHandle mAccountHandle;
        private Uri mAddress;
@@ -48,7 +53,7 @@ public final class ConnectionRequest implements Parcelable {
         * Sets the phone account handle for the resulting {@link ConnectionRequest}
         * @param accountHandle The accountHandle which should be used to place the call.
         */
        public Builder setAccountHandle(PhoneAccountHandle accountHandle) {
        public @NonNull Builder setAccountHandle(@NonNull PhoneAccountHandle accountHandle) {
            this.mAccountHandle = accountHandle;
            return this;
        }
@@ -58,7 +63,7 @@ public final class ConnectionRequest implements Parcelable {
         * @param address The address(e.g., phone number) to which the {@link Connection} is to
         *                connect.
         */
        public Builder setAddress(Uri address) {
        public @NonNull Builder setAddress(@NonNull Uri address) {
            this.mAddress = address;
            return this;
        }
@@ -67,7 +72,7 @@ public final class ConnectionRequest implements Parcelable {
         * Sets the extras bundle for the resulting {@link ConnectionRequest}
         * @param extras Application-specific extra data.
         */
        public Builder setExtras(Bundle extras) {
        public @NonNull Builder setExtras(@NonNull Bundle extras) {
            this.mExtras = extras;
            return this;
        }
@@ -76,7 +81,7 @@ public final class ConnectionRequest implements Parcelable {
         * Sets the video state for the resulting {@link ConnectionRequest}
         * @param videoState Determines the video state for the connection.
         */
        public Builder setVideoState(int videoState) {
        public @NonNull Builder setVideoState(int videoState) {
            this.mVideoState = videoState;
            return this;
        }
@@ -85,7 +90,7 @@ public final class ConnectionRequest implements Parcelable {
         * Sets the Telecom call ID for the resulting {@link ConnectionRequest}
         * @param telecomCallId The telecom call ID.
         */
        public Builder setTelecomCallId(String telecomCallId) {
        public @NonNull Builder setTelecomCallId(@NonNull String telecomCallId) {
            this.mTelecomCallId = telecomCallId;
            return this;
        }
@@ -97,7 +102,7 @@ public final class ConnectionRequest implements Parcelable {
         *                                 its own incoming call UI for an incoming call.  When
         *                                 {@code false}, Telecom shows the incoming call UI.
         */
        public Builder setShouldShowIncomingCallUi(boolean shouldShowIncomingCallUi) {
        public @NonNull Builder setShouldShowIncomingCallUi(boolean shouldShowIncomingCallUi) {
            this.mShouldShowIncomingCallUi = shouldShowIncomingCallUi;
            return this;
        }
@@ -107,7 +112,8 @@ public final class ConnectionRequest implements Parcelable {
         * resulting {@link ConnectionRequest}
         * @param rttPipeFromInCall The data pipe to read from.
         */
        public Builder setRttPipeFromInCall(ParcelFileDescriptor rttPipeFromInCall) {
        public @NonNull Builder setRttPipeFromInCall(
                @NonNull ParcelFileDescriptor rttPipeFromInCall) {
            this.mRttPipeFromInCall = rttPipeFromInCall;
            return this;
        }
@@ -117,12 +123,16 @@ public final class ConnectionRequest implements Parcelable {
         * resulting {@link ConnectionRequest}
         * @param rttPipeToInCall The data pipe to write to.
         */
        public Builder setRttPipeToInCall(ParcelFileDescriptor rttPipeToInCall) {
        public @NonNull Builder setRttPipeToInCall(@NonNull ParcelFileDescriptor rttPipeToInCall) {
            this.mRttPipeToInCall = rttPipeToInCall;
            return this;
        }

        public ConnectionRequest build() {
        /**
         * Build the {@link ConnectionRequest}
         * @return Result of the builder
         */
        public @NonNull ConnectionRequest build() {
            return new ConnectionRequest(
                    mAccountHandle,
                    mAddress,
@@ -261,7 +271,9 @@ public final class ConnectionRequest implements Parcelable {
     * @return The Telecom ID.
     * @hide
     */
    public String getTelecomCallId() {
    @SystemApi
    @TestApi
    public @Nullable String getTelecomCallId() {
        return mTelecomCallId;
    }

+8 −3
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ import static android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE;

import android.Manifest;
import android.annotation.IntDef;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.RequiresPermission;
import android.annotation.SuppressAutoDoc;
@@ -1028,12 +1029,16 @@ public class TelecomManager {
     * by the user.
     *
     * @param includeDisabledAccounts When {@code true}, disabled phone accounts will be included,
     *                                when {@code false}, only
     *                                when {@code false}, only enabled phone accounts will be
     *                                included.
     * @return A list of {@code PhoneAccountHandle} objects.
     * @hide
     */
    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 119305590)
    public List<PhoneAccountHandle> getCallCapablePhoneAccounts(boolean includeDisabledAccounts) {
    @SystemApi
    @TestApi
    @RequiresPermission(READ_PRIVILEGED_PHONE_STATE)
    public @NonNull List<PhoneAccountHandle> getCallCapablePhoneAccounts(
            boolean includeDisabledAccounts) {
        try {
            if (isServiceConnected()) {
                return getTelecomService().getCallCapablePhoneAccounts(