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

Commit 0a3b6b70 authored by Ta-wei Yen's avatar Ta-wei Yen Committed by Gerrit Code Review
Browse files

Merge "Add createForPhoneAccountHandle() and getServicetate() Respect...

Merge "Add createForPhoneAccountHandle() and getServicetate() Respect TelephonyManager's subId when listening to phone state"
parents 44e817fd 05f9112d
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -37211,6 +37211,7 @@ package android.telephony {
  public class TelephonyManager {
    method public boolean canChangeDtmfToneLength();
    method public android.telephony.TelephonyManager createForPhoneAccountHandle(android.telecom.PhoneAccountHandle);
    method public android.telephony.TelephonyManager createForSubscriptionId(int);
    method public java.util.List<android.telephony.CellInfo> getAllCellInfo();
    method public int getCallState();
@@ -37233,6 +37234,7 @@ package android.telephony {
    method public int getNetworkType();
    method public int getPhoneCount();
    method public int getPhoneType();
    method public android.telephony.ServiceState getServiceState();
    method public java.lang.String getSimCountryIso();
    method public java.lang.String getSimOperator();
    method public java.lang.String getSimOperatorName();
+2 −0
Original line number Diff line number Diff line
@@ -40150,6 +40150,7 @@ package android.telephony {
    method public boolean canChangeDtmfToneLength();
    method public int checkCarrierPrivilegesForPackage(java.lang.String);
    method public int checkCarrierPrivilegesForPackageAnyPhone(java.lang.String);
    method public android.telephony.TelephonyManager createForPhoneAccountHandle(android.telecom.PhoneAccountHandle);
    method public android.telephony.TelephonyManager createForSubscriptionId(int);
    method public void dial(java.lang.String);
    method public boolean disableDataConnectivity();
@@ -40187,6 +40188,7 @@ package android.telephony {
    method public int getNetworkType();
    method public int getPhoneCount();
    method public int getPhoneType();
    method public android.telephony.ServiceState getServiceState();
    method public java.lang.String getSimCountryIso();
    method public java.lang.String getSimOperator();
    method public java.lang.String getSimOperatorName();
+2 −0
Original line number Diff line number Diff line
@@ -37288,6 +37288,7 @@ package android.telephony {
  public class TelephonyManager {
    method public boolean canChangeDtmfToneLength();
    method public android.telephony.TelephonyManager createForPhoneAccountHandle(android.telecom.PhoneAccountHandle);
    method public android.telephony.TelephonyManager createForSubscriptionId(int);
    method public java.util.List<android.telephony.CellInfo> getAllCellInfo();
    method public int getCallState();
@@ -37310,6 +37311,7 @@ package android.telephony {
    method public int getNetworkType();
    method public int getPhoneCount();
    method public int getPhoneType();
    method public android.telephony.ServiceState getServiceState();
    method public java.lang.String getSimCountryIso();
    method public java.lang.String getSimOperator();
    method public java.lang.String getSimOperatorName();
+5 −5
Original line number Diff line number Diff line
@@ -233,7 +233,7 @@ public class PhoneStateListener {
     * @hide
     */
    /** @hide */
    protected int mSubId = SubscriptionManager.INVALID_SUBSCRIPTION_ID;
    protected Integer mSubId;

    private final Handler mHandler;

@@ -242,7 +242,7 @@ public class PhoneStateListener {
     * This class requires Looper.myLooper() not return null.
     */
    public PhoneStateListener() {
        this(SubscriptionManager.DEFAULT_SUBSCRIPTION_ID, Looper.myLooper());
        this(null, Looper.myLooper());
    }

    /**
@@ -251,7 +251,7 @@ public class PhoneStateListener {
     * @hide
     */
    public PhoneStateListener(Looper looper) {
        this(SubscriptionManager.DEFAULT_SUBSCRIPTION_ID, looper);
        this(null, looper);
    }

    /**
@@ -260,7 +260,7 @@ public class PhoneStateListener {
     * own non-null Looper use PhoneStateListener(int subId, Looper looper) below.
     * @hide
     */
    public PhoneStateListener(int subId) {
    public PhoneStateListener(Integer subId) {
        this(subId, Looper.myLooper());
    }

@@ -269,7 +269,7 @@ public class PhoneStateListener {
     * and non-null Looper.
     * @hide
     */
    public PhoneStateListener(int subId, Looper looper) {
    public PhoneStateListener(Integer subId, Looper looper) {
        if (DBG) log("ctor: subId=" + subId + " looper=" + looper);
        mSubId = subId;
        mHandler = new Handler(looper) {
+45 −0
Original line number Diff line number Diff line
@@ -255,6 +255,22 @@ public class TelephonyManager {
      return new TelephonyManager(mContext, subId);
    }

    /**
     * Create a new TelephonyManager object pinned to the subscription ID associated with the given
     * phone account.
     *
     * @return a TelephonyManager that uses the given phone account for all calls, or {@code null}
     * if the phone account does not correspond to a valid subscription ID.
     */
    @Nullable
    public TelephonyManager createForPhoneAccountHandle(PhoneAccountHandle phoneAccountHandle) {
        int subId = getSubIdForPhoneAccountHandle(phoneAccountHandle);
        if (!SubscriptionManager.isValidSubscriptionId(subId)) {
            return null;
        }
        return new TelephonyManager(mContext, subId);
    }

    /** {@hide} */
    public boolean isMultiSimEnabled() {
        return (multiSimConfig.equals("dsds") || multiSimConfig.equals("dsda") ||
@@ -2783,6 +2799,12 @@ public class TelephonyManager {
        if (mContext == null) return;
        try {
            Boolean notifyNow = (getITelephony() != null);
            // If the listener has not explicitly set the subId (for example, created with the
            // default constructor), replace the subId so it will listen to the account the
            // telephony manager is created with.
            if (listener.mSubId == null) {
                listener.mSubId = mSubId;
            }
            sRegistry.listenForSubscriber(listener.mSubId, getOpPackageName(),
                    listener.callback, events, notifyNow);
        } catch (RemoteException ex) {
@@ -5146,6 +5168,19 @@ public class TelephonyManager {
        return retval;
    }

    private int getSubIdForPhoneAccountHandle(PhoneAccountHandle phoneAccountHandle) {
        int retval = SubscriptionManager.INVALID_SUBSCRIPTION_ID;
        try {
            ITelecomService service = getTelecomService();
            if (service != null) {
                retval = getSubIdForPhoneAccount(service.getPhoneAccount(phoneAccountHandle));
            }
        } catch (RemoteException e) {
        }

        return retval;
    }

    /**
     * Resets telephony manager settings back to factory defaults.
     *
@@ -5194,6 +5229,16 @@ public class TelephonyManager {
        result.send(0, null);
    }

    /**
     * Returns the current {@link ServiceState} information.
     *
     * <p>Requires Permission:
     *   {@link android.Manifest.permission#READ_PHONE_STATE READ_PHONE_STATE}
     */
    public ServiceState getServiceState() {
        return getServiceStateForSubscriber(getSubId());
    }

    /**
     * Returns the service state information on specified subscription. Callers require
     * either READ_PRIVILEGED_PHONE_STATE or READ_PHONE_STATE to retrieve the information.