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

Commit 5cf7557e authored by Chen Xu's avatar Chen Xu Committed by android-build-merger
Browse files

Merge "improve mism support for phonestatelistner" am: ed4d220c

am: a05023c2

Change-Id: Icaade79b765a2c27bcf203f40a095b50d2087763
parents ed6c1306 a05023c2
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -627,6 +627,11 @@ public class TelephonyRegistry extends ITelephonyRegistry.Stub {
                r.callingPackage = callingPackage;
                r.callerUid = Binder.getCallingUid();
                r.callerPid = Binder.getCallingPid();
                if (r.subId != SubscriptionManager.INVALID_SUBSCRIPTION_ID && r.subId != subId) {
                    throw new IllegalArgumentException(
                            "PhoneStateListener cannot concurrently listen on multiple " +
                                    "subscriptions. Previously registered on subId: " + r.subId);
                }
                // Legacy applications pass SubscriptionManager.DEFAULT_SUB_ID,
                // force all illegal subId to SubscriptionManager.DEFAULT_SUB_ID
                if (!SubscriptionManager.isValidSubscriptionId(subId)) {
+23 −18
Original line number Diff line number Diff line
@@ -4755,18 +4755,22 @@ public class TelephonyManager {
     * Registers a listener object to receive notification of changes
     * in specified telephony states.
     * <p>
     * To register a listener, pass a {@link PhoneStateListener}
     * and specify at least one telephony state of interest in
     * the events argument.
     *
     * At registration, and when a specified telephony state
     * changes, the telephony manager invokes the appropriate
     * callback method on the listener object and passes the
     * current (updated) values.
     * To register a listener, pass a {@link PhoneStateListener} and specify at least one telephony
     * state of interest in the events argument.
     *
     * At registration, and when a specified telephony state changes, the telephony manager invokes
     * the appropriate callback method on the listener object and passes the current (updated)
     * values.
     * <p>
     * To unregister a listener, pass the listener object and set the
     * events argument to
     * To un-register a listener, pass the listener object and set the events argument to
     * {@link PhoneStateListener#LISTEN_NONE LISTEN_NONE} (0).
     *
     * If this TelephonyManager object has been created with {@link #createForSubscriptionId},
     * applies to the given subId. Otherwise, applies to
     * {@link SubscriptionManager#getDefaultSubscriptionId()}. To listen events for multiple subIds,
     * pass a separate listener object to each TelephonyManager object created with
     * {@link #createForSubscriptionId}.
     *
     * Note: if you call this method while in the middle of a binder transaction, you <b>must</b>
     * call {@link android.os.Binder#clearCallingIdentity()} before calling this method. A
     * {@link SecurityException} will be thrown otherwise.
@@ -4781,17 +4785,18 @@ 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;
            }

            ITelephonyRegistry registry = getTelephonyRegistry();
            if (registry != null) {
                registry.listenForSubscriber(listener.mSubId, getOpPackageName(),
                // listen to the subId the telephony manager is created with. Ignore subId in
                // PhoneStateListener.
                registry.listenForSubscriber(mSubId, getOpPackageName(),
                        listener.callback, events, notifyNow);
                // TODO: remove this once we remove PhoneStateListener constructor with subId.
                if (events == PhoneStateListener.LISTEN_NONE) {
                    listener.mSubId = SubscriptionManager.INVALID_SUBSCRIPTION_ID;
                } else {
                    listener.mSubId = mSubId;
                }
            } else {
                Rlog.w(TAG, "telephony registry not ready.");
            }