summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/core/java/com/android/server/TelephonyRegistry.java157
-rw-r--r--telephony/java/com/android/internal/telephony/ITelephonyRegistry.aidl6
2 files changed, 62 insertions, 101 deletions
diff --git a/services/core/java/com/android/server/TelephonyRegistry.java b/services/core/java/com/android/server/TelephonyRegistry.java
index 37c23bb91005..164a4f7cc8d0 100644
--- a/services/core/java/com/android/server/TelephonyRegistry.java
+++ b/services/core/java/com/android/server/TelephonyRegistry.java
@@ -99,8 +99,6 @@ class TelephonyRegistry extends ITelephonyRegistry.Stub {
int phoneId;
- boolean isLegacyApp;
-
@Override
public String toString() {
return "{pkgForDebug=" + pkgForDebug + " callerUid=" + callerUid + " subId=" + subId +
@@ -156,10 +154,6 @@ class TelephonyRegistry extends ITelephonyRegistry.Stub {
private VoLteServiceState mVoLteServiceState = new VoLteServiceState();
- private long mDefaultSubId;
-
- private int mDefaultPhoneIdForDefaultSubId;
-
private DataConnectionRealTimeInfo mDcRtInfo = new DataConnectionRealTimeInfo();
private int mRingingCallState = PreciseCallState.PRECISE_CALL_STATE_IDLE;
@@ -201,23 +195,8 @@ class TelephonyRegistry extends ITelephonyRegistry.Stub {
}
break;
}
- case MSG_UPDATE_DEFAULT_SUB: {
- if (VDBG) {
- log("MSG_UPDATE_DEFAULT_SUB subid=" + mDefaultSubId
- + " phoneId=" + mDefaultPhoneIdForDefaultSubId);
- }
- // Default subscription id changed, update the changed default subscription
- // id in all the legacy application listener records.
- synchronized (mRecords) {
- for (Record r : mRecords) {
- // FIXME: Be sure we're using isLegacyApp correctly!
- if (r.isLegacyApp == true) {
- r.subId = mDefaultSubId;
- r.phoneId = mDefaultPhoneIdForDefaultSubId;
- }
- }
- }
- break;
+ case MSG_UPDATE_DEFAULT_SUB: {// do nothing
+ if (VDBG) log(TAG + "MSG_UPDATE_DEFAULT_SUB");
}
}
}
@@ -233,13 +212,8 @@ class TelephonyRegistry extends ITelephonyRegistry.Stub {
if (DBG) log("onReceive: userHandle=" + userHandle);
mHandler.sendMessage(mHandler.obtainMessage(MSG_USER_SWITCHED, userHandle, 0));
} else if (action.equals(TelephonyIntents.ACTION_DEFAULT_SUBSCRIPTION_CHANGED)) {
- mDefaultSubId = intent.getLongExtra(PhoneConstants.SUBSCRIPTION_KEY,
- SubscriptionManager.getDefaultSubId());
- mDefaultPhoneIdForDefaultSubId = intent.getIntExtra(PhoneConstants.SLOT_KEY,
- SubscriptionManager.getPhoneId(mDefaultSubId));
if (DBG) {
- log("onReceive: mDefaultSubId=" + mDefaultSubId
- + " mDefaultPhoneIdForDefaultSubId=" + mDefaultPhoneIdForDefaultSubId);
+ log(TAG + "onReceive: ACTION_DEFAULT_SUBSCRIPTION_CHANGED");
}
mHandler.sendMessage(mHandler.obtainMessage(MSG_UPDATE_DEFAULT_SUB, 0, 0));
}
@@ -260,10 +234,6 @@ class TelephonyRegistry extends ITelephonyRegistry.Stub {
mBatteryStats = BatteryStatsService.getService();
mConnectedApns = new ArrayList<String>();
- // Initialize default subId and its phoneId.
- mDefaultSubId = SubscriptionManager.getDefaultSubId();
- mDefaultPhoneIdForDefaultSubId = SubscriptionManager.getPhoneId(mDefaultSubId);
-
int numPhones = TelephonyManager.getDefault().getPhoneCount();
if (DBG) log("TelephonyRegistor: ctor numPhones=" + numPhones);
mNumPhones = numPhones;
@@ -322,25 +292,23 @@ class TelephonyRegistry extends ITelephonyRegistry.Stub {
@Override
public void listen(String pkgForDebug, IPhoneStateListener callback, int events,
boolean notifyNow) {
- listen(pkgForDebug, callback, events, notifyNow, mDefaultSubId, true);
+ listenForSubscriber(SubscriptionManager.DEFAULT_SUB_ID, pkgForDebug, callback, events,
+ notifyNow);
}
@Override
public void listenForSubscriber(long subId, String pkgForDebug, IPhoneStateListener callback,
int events, boolean notifyNow) {
- listen(pkgForDebug, callback, events, notifyNow, subId, false);
+ listen(pkgForDebug, callback, events, notifyNow, subId);
}
private void listen(String pkgForDebug, IPhoneStateListener callback, int events,
- boolean notifyNow, long subId, boolean isLegacyApp) {
+ boolean notifyNow, long subId) {
int callerUid = UserHandle.getCallingUserId();
int myUid = UserHandle.myUserId();
- int phoneId = SubscriptionManager.getPhoneId(subId);
if (VDBG) {
log("listen: E pkg=" + pkgForDebug + " events=0x" + Integer.toHexString(events)
- + " notifyNow=" + notifyNow + " subId=" + subId + " phoneId=" + phoneId
- + " isLegacyApp=" + isLegacyApp
- + " myUid=" + myUid
+ + " notifyNow=" + notifyNow + " subId=" + subId + " myUid=" + myUid
+ " callerUid=" + callerUid);
}
if (events != 0) {
@@ -364,28 +332,23 @@ class TelephonyRegistry extends ITelephonyRegistry.Stub {
r.callback = callback;
r.pkgForDebug = pkgForDebug;
r.callerUid = callerUid;
- r.subId = subId;
- r.phoneId = phoneId;
- r.isLegacyApp = isLegacyApp;
- // Legacy applications pass invalid subId(-1), based on
- // the received subId value update the isLegacyApp field
- if ((r.subId <= 0) || (r.subId == SubscriptionManager.INVALID_SUB_ID)) {
- r.subId = mDefaultSubId;
- r.phoneId = mDefaultPhoneIdForDefaultSubId;
- r.isLegacyApp = true; // subId & phoneId are updated when default changes.
- }
- if (r.subId == SubscriptionManager.DEFAULT_SUB_ID) {
- r.subId = mDefaultSubId;
- r.phoneId = mDefaultPhoneIdForDefaultSubId;
- r.isLegacyApp = true; // subId & phoneId are updated when default changes.
- if (DBG) log("listen: DEFAULT_SUB_ID");
+ // Legacy applications pass SubscriptionManager.DEFAULT_SUB_ID,
+ // force all illegal subId to SubscriptionManager.DEFAULT_SUB_ID
+ if (!SubscriptionManager.isValidSubId(subId)) {
+ r.subId = SubscriptionManager.DEFAULT_SUB_ID;
+ } else {//APP specify subID
+ r.subId = subId;
}
+ r.phoneId = SubscriptionManager.getPhoneId(r.subId);
+
mRecords.add(r);
if (DBG) log("listen: add new record");
}
+
+ int phoneId = r.phoneId;
r.events = events;
if (DBG) {
- log("listen: r=" + r + " subId=" + subId + " phoneId=" + phoneId);
+ log("listen: r=" + r + " r.subId=" + r.subId + " phoneId=" + phoneId);
}
if (VDBG) toStringLogSSC("listen");
if (notifyNow && validatePhoneId(phoneId)) {
@@ -525,11 +488,15 @@ class TelephonyRegistry extends ITelephonyRegistry.Stub {
if (!checkNotifyPermission("notifyCallState()")) {
return;
}
+
+ if (VDBG) {
+ log("notifyCallState: state=" + state + " incomingNumber=" + incomingNumber);
+ }
+
synchronized (mRecords) {
for (Record r : mRecords) {
if (((r.events & PhoneStateListener.LISTEN_CALL_STATE) != 0) &&
- (r.isLegacyApp == true)) {
- // FIXME: why does isLegacyApp need to be true?
+ (r.subId == SubscriptionManager.DEFAULT_SUB_ID)) {
try {
r.callback.onCallStateChanged(state, incomingNumber);
} catch (RemoteException ex) {
@@ -539,7 +506,7 @@ class TelephonyRegistry extends ITelephonyRegistry.Stub {
}
handleRemoveListLocked();
}
- broadcastCallStateChanged(state, incomingNumber, mDefaultSubId);
+ broadcastCallStateChanged(state, incomingNumber, SubscriptionManager.DEFAULT_SUB_ID);
}
public void notifyCallStateForSubscriber(long subId, int state, String incomingNumber) {
@@ -557,8 +524,8 @@ class TelephonyRegistry extends ITelephonyRegistry.Stub {
mCallIncomingNumber[phoneId] = incomingNumber;
for (Record r : mRecords) {
if (((r.events & PhoneStateListener.LISTEN_CALL_STATE) != 0) &&
- (r.phoneId == phoneId) &&
- (r.isLegacyApp == false)) { // FIXME: why isLegacyApp false?
+ (r.subId == subId) &&
+ (r.subId != SubscriptionManager.DEFAULT_SUB_ID)) {
try {
r.callback.onCallStateChanged(state, incomingNumber);
} catch (RemoteException ex) {
@@ -572,20 +539,12 @@ class TelephonyRegistry extends ITelephonyRegistry.Stub {
broadcastCallStateChanged(state, incomingNumber, subId);
}
- public void notifyServiceState(ServiceState state) {
- notifyServiceStateForSubscriber(mDefaultSubId, state);
- }
-
- public void notifyServiceStateForSubscriber(long subId, ServiceState state) {
+ public void notifyServiceStateForPhoneId(int phoneId, long subId, ServiceState state) {
if (!checkNotifyPermission("notifyServiceState()")){
return;
}
- if (subId == SubscriptionManager.DEFAULT_SUB_ID) {
- subId = mDefaultSubId;
- if (VDBG) log("notifyServiceStateForSubscriber: using mDefaultSubId=" + mDefaultSubId);
- }
+
synchronized (mRecords) {
- int phoneId = SubscriptionManager.getPhoneId(subId);
if (VDBG) {
log("notifyServiceStateForSubscriber: subId=" + subId + " phoneId=" + phoneId
+ " state=" + state);
@@ -601,7 +560,8 @@ class TelephonyRegistry extends ITelephonyRegistry.Stub {
+ " phoneId=" + phoneId + " state=" + state);
}
if (((r.events & PhoneStateListener.LISTEN_SERVICE_STATE) != 0) &&
- (r.phoneId == phoneId)) {
+ ((r.subId == subId) ||
+ (r.subId == SubscriptionManager.DEFAULT_SUB_ID))) {
try {
if (DBG) {
log("notifyServiceStateForSubscriber: callback.onSSC r=" + r
@@ -623,7 +583,7 @@ class TelephonyRegistry extends ITelephonyRegistry.Stub {
}
public void notifySignalStrength(SignalStrength signalStrength) {
- notifySignalStrengthForSubscriber(mDefaultSubId, signalStrength);
+ notifySignalStrengthForSubscriber(SubscriptionManager.DEFAULT_SUB_ID, signalStrength);
}
public void notifySignalStrengthForSubscriber(long subId, SignalStrength signalStrength) {
@@ -646,7 +606,8 @@ class TelephonyRegistry extends ITelephonyRegistry.Stub {
+ " phoneId=" + phoneId + " ss=" + signalStrength);
}
if (((r.events & PhoneStateListener.LISTEN_SIGNAL_STRENGTHS) != 0) &&
- (r.phoneId == phoneId)) {
+ ((r.subId == subId) ||
+ (r.subId == SubscriptionManager.DEFAULT_SUB_ID))) {
try {
if (DBG) {
log("notifySignalStrengthForSubscriber: callback.onSsS r=" + r
@@ -659,7 +620,8 @@ class TelephonyRegistry extends ITelephonyRegistry.Stub {
}
}
if (((r.events & PhoneStateListener.LISTEN_SIGNAL_STRENGTH) != 0) &&
- (r.phoneId == phoneId)) {
+ ((r.subId == subId) ||
+ (r.subId == SubscriptionManager.DEFAULT_SUB_ID))) {
try {
int gsmSignalStrength = signalStrength.getGsmSignalStrength();
int ss = (gsmSignalStrength == 99 ? -1 : gsmSignalStrength);
@@ -683,7 +645,7 @@ class TelephonyRegistry extends ITelephonyRegistry.Stub {
}
public void notifyCellInfo(List<CellInfo> cellInfo) {
- notifyCellInfoForSubscriber(mDefaultSubId, cellInfo);
+ notifyCellInfoForSubscriber(SubscriptionManager.DEFAULT_SUB_ID, cellInfo);
}
public void notifyCellInfoForSubscriber(long subId, List<CellInfo> cellInfo) {
@@ -700,8 +662,9 @@ class TelephonyRegistry extends ITelephonyRegistry.Stub {
if (validatePhoneId(phoneId)) {
mCellInfo.set(phoneId, cellInfo);
for (Record r : mRecords) {
- if (validateEventsAndUserLocked(r, PhoneStateListener.LISTEN_CELL_INFO)
- && r.subId == subId) {
+ if (validateEventsAndUserLocked(r, PhoneStateListener.LISTEN_CELL_INFO) &&
+ ((r.subId == subId) ||
+ (r.subId == SubscriptionManager.DEFAULT_SUB_ID))) {
try {
if (DBG_LOC) {
log("notifyCellInfo: mCellInfo=" + cellInfo + " r=" + r);
@@ -742,25 +705,22 @@ class TelephonyRegistry extends ITelephonyRegistry.Stub {
}
}
- public void notifyMessageWaitingChanged(boolean mwi) {
- notifyMessageWaitingChangedForSubscriber(mDefaultSubId, mwi);
- }
-
- public void notifyMessageWaitingChangedForSubscriber(long subId, boolean mwi) {
+ @Override
+ public void notifyMessageWaitingChangedForPhoneId(int phoneId, long subId, boolean mwi) {
if (!checkNotifyPermission("notifyMessageWaitingChanged()")) {
return;
}
if (VDBG) {
- log("notifyMessageWaitingChangedForSubscriber: subId=" + subId
+ log("notifyMessageWaitingChangedForSubscriberPhoneID: subId=" + phoneId
+ " mwi=" + mwi);
}
synchronized (mRecords) {
- int phoneId = SubscriptionManager.getPhoneId(subId);
if (validatePhoneId(phoneId)) {
mMessageWaiting[phoneId] = mwi;
for (Record r : mRecords) {
if (((r.events & PhoneStateListener.LISTEN_MESSAGE_WAITING_INDICATOR) != 0) &&
- (r.phoneId == phoneId)) {
+ ((r.subId == subId) ||
+ (r.subId == SubscriptionManager.DEFAULT_SUB_ID))) {
try {
r.callback.onMessageWaitingIndicatorChanged(mwi);
} catch (RemoteException ex) {
@@ -774,7 +734,7 @@ class TelephonyRegistry extends ITelephonyRegistry.Stub {
}
public void notifyCallForwardingChanged(boolean cfi) {
- notifyCallForwardingChangedForSubscriber(mDefaultSubId, cfi);
+ notifyCallForwardingChangedForSubscriber(SubscriptionManager.DEFAULT_SUB_ID, cfi);
}
public void notifyCallForwardingChangedForSubscriber(long subId, boolean cfi) {
@@ -791,7 +751,8 @@ class TelephonyRegistry extends ITelephonyRegistry.Stub {
mCallForwarding[phoneId] = cfi;
for (Record r : mRecords) {
if (((r.events & PhoneStateListener.LISTEN_CALL_FORWARDING_INDICATOR) != 0) &&
- (r.phoneId == phoneId)) {
+ ((r.subId == subId) ||
+ (r.subId == SubscriptionManager.DEFAULT_SUB_ID))) {
try {
r.callback.onCallForwardingIndicatorChanged(cfi);
} catch (RemoteException ex) {
@@ -805,7 +766,7 @@ class TelephonyRegistry extends ITelephonyRegistry.Stub {
}
public void notifyDataActivity(int state) {
- notifyDataActivityForSubscriber(mDefaultSubId, state);
+ notifyDataActivityForSubscriber(SubscriptionManager.DEFAULT_SUB_ID, state);
}
public void notifyDataActivityForSubscriber(long subId, int state) {
@@ -831,8 +792,8 @@ class TelephonyRegistry extends ITelephonyRegistry.Stub {
public void notifyDataConnection(int state, boolean isDataConnectivityPossible,
String reason, String apn, String apnType, LinkProperties linkProperties,
NetworkCapabilities networkCapabilities, int networkType, boolean roaming) {
- notifyDataConnectionForSubscriber(mDefaultSubId, state, isDataConnectivityPossible,
- reason, apn, apnType, linkProperties,
+ notifyDataConnectionForSubscriber(SubscriptionManager.DEFAULT_SUB_ID, state,
+ isDataConnectivityPossible,reason, apn, apnType, linkProperties,
networkCapabilities, networkType, roaming);
}
@@ -888,7 +849,8 @@ class TelephonyRegistry extends ITelephonyRegistry.Stub {
}
for (Record r : mRecords) {
if (((r.events & PhoneStateListener.LISTEN_DATA_CONNECTION_STATE) != 0) &&
- (r.phoneId == phoneId)) {
+ ((r.subId == subId) ||
+ (r.subId == SubscriptionManager.DEFAULT_SUB_ID))) {
try {
log("Notify data connection state changed on sub: " +
subId);
@@ -921,7 +883,8 @@ class TelephonyRegistry extends ITelephonyRegistry.Stub {
}
public void notifyDataConnectionFailed(String reason, String apnType) {
- notifyDataConnectionFailedForSubscriber(mDefaultSubId, reason, apnType);
+ notifyDataConnectionFailedForSubscriber(SubscriptionManager.DEFAULT_SUB_ID,
+ reason, apnType);
}
public void notifyDataConnectionFailedForSubscriber(long subId,
@@ -954,7 +917,7 @@ class TelephonyRegistry extends ITelephonyRegistry.Stub {
}
public void notifyCellLocation(Bundle cellLocation) {
- notifyCellLocationForSubscriber(mDefaultSubId, cellLocation);
+ notifyCellLocationForSubscriber(SubscriptionManager.DEFAULT_SUB_ID, cellLocation);
}
public void notifyCellLocationForSubscriber(long subId, Bundle cellLocation) {
@@ -972,8 +935,9 @@ class TelephonyRegistry extends ITelephonyRegistry.Stub {
if (validatePhoneId(phoneId)) {
mCellLocation[phoneId] = cellLocation;
for (Record r : mRecords) {
- if (validateEventsAndUserLocked(r, PhoneStateListener.LISTEN_CELL_LOCATION)
- && r.subId == subId) {
+ if (validateEventsAndUserLocked(r, PhoneStateListener.LISTEN_CELL_LOCATION) &&
+ ((r.subId == subId) ||
+ (r.subId == SubscriptionManager.DEFAULT_SUB_ID))) {
try {
if (DBG_LOC) {
log("notifyCellLocation: cellLocation=" + cellLocation
@@ -1134,7 +1098,6 @@ class TelephonyRegistry extends ITelephonyRegistry.Stub {
pw.println(" mCellLocation=" + mCellLocation[i]);
pw.println(" mCellInfo=" + mCellInfo.get(i));
}
- pw.println(" mDefaultSubId=" + mDefaultSubId);
pw.println(" mDcRtInfo=" + mDcRtInfo);
pw.println("registrations: count=" + recordCount);
for (Record r : mRecords) {
diff --git a/telephony/java/com/android/internal/telephony/ITelephonyRegistry.aidl b/telephony/java/com/android/internal/telephony/ITelephonyRegistry.aidl
index d77683348cb1..ea5fa2754ce7 100644
--- a/telephony/java/com/android/internal/telephony/ITelephonyRegistry.aidl
+++ b/telephony/java/com/android/internal/telephony/ITelephonyRegistry.aidl
@@ -34,12 +34,10 @@ interface ITelephonyRegistry {
boolean notifyNow);
void notifyCallState(int state, String incomingNumber);
void notifyCallStateForSubscriber(in long subId, int state, String incomingNumber);
- void notifyServiceState(in ServiceState state);
- void notifyServiceStateForSubscriber(in long subId, in ServiceState state);
+ void notifyServiceStateForPhoneId(in int phoneId, in long subId, in ServiceState state);
void notifySignalStrength(in SignalStrength signalStrength);
void notifySignalStrengthForSubscriber(in long subId, in SignalStrength signalStrength);
- void notifyMessageWaitingChanged(boolean mwi);
- void notifyMessageWaitingChangedForSubscriber(in long subId, boolean mwi);
+ void notifyMessageWaitingChangedForPhoneId(in int phoneId, in long subId, in boolean mwi);
void notifyCallForwardingChanged(boolean cfi);
void notifyCallForwardingChangedForSubscriber(in long subId, boolean cfi);
void notifyDataActivity(int state);