Merge "Require MODIFY_PHONE_STATE to start EuiccUiDispatcherActivity."
diff --git a/sip/src/com/android/services/telephony/sip/SipIncomingCallReceiver.java b/sip/src/com/android/services/telephony/sip/SipIncomingCallReceiver.java
index c754ae4..19f5882 100644
--- a/sip/src/com/android/services/telephony/sip/SipIncomingCallReceiver.java
+++ b/sip/src/com/android/services/telephony/sip/SipIncomingCallReceiver.java
@@ -25,6 +25,7 @@
import android.telecom.PhoneAccount;
import android.telecom.PhoneAccountHandle;
import android.telecom.TelecomManager;
+import android.text.TextUtils;
import android.util.Log;
/**
@@ -38,6 +39,11 @@
public void onReceive(Context context, final Intent intent) {
String action = intent.getAction();
+ if (TextUtils.isEmpty(action)) {
+ log("SipIncomingCallReceiver called with no action");
+ return;
+ }
+
if (!isRunningInSystemUser()) {
if (VERBOSE) log("SipIncomingCallReceiver only run in system user, ignore " + action);
return;
diff --git a/src/com/android/phone/CarrierConfigLoader.java b/src/com/android/phone/CarrierConfigLoader.java
index b3e5b11..1ea4180 100644
--- a/src/com/android/phone/CarrierConfigLoader.java
+++ b/src/com/android/phone/CarrierConfigLoader.java
@@ -186,9 +186,6 @@
}
}
- if (mConfigFromDefaultApp[phoneId] == null
- && mConfigFromCarrierApp[phoneId] == null) break;
-
mConfigFromDefaultApp[phoneId] = null;
mConfigFromCarrierApp[phoneId] = null;
mServiceConnection[phoneId] = null;
@@ -586,6 +583,7 @@
intent.putExtra(TelephonyManager.EXTRA_CARRIER_ID, getCarrierIdForPhoneId(phoneId));
}
intent.putExtra(CarrierConfigManager.EXTRA_SLOT_INDEX, phoneId);
+ log("Broadcast CARRIER_CONFIG_CHANGED for phone " + phoneId);
ActivityManager.broadcastStickyIntent(intent, UserHandle.USER_ALL);
mHasSentConfigChange[phoneId] = true;
}
diff --git a/src/com/android/phone/PhoneInterfaceManager.java b/src/com/android/phone/PhoneInterfaceManager.java
index cbda21b..722a32b 100755
--- a/src/com/android/phone/PhoneInterfaceManager.java
+++ b/src/com/android/phone/PhoneInterfaceManager.java
@@ -835,7 +835,9 @@
case CMD_GET_MODEM_ACTIVITY_INFO:
request = (MainThreadRequest) msg.obj;
onCompleted = obtainMessage(EVENT_GET_MODEM_ACTIVITY_INFO_DONE, request);
- defaultPhone.getModemActivityInfo(onCompleted, request.workSource);
+ if (defaultPhone != null) {
+ defaultPhone.getModemActivityInfo(onCompleted, request.workSource);
+ }
break;
case EVENT_GET_MODEM_ACTIVITY_INFO_DONE:
@@ -6772,6 +6774,27 @@
}
}
+ /**
+ * Whether a modem stack is enabled or not.
+ */
+ @Override
+ public boolean isModemEnabledForSlot(int slotIndex, String callingPackage) {
+ Phone phone = PhoneFactory.getPhone(slotIndex);
+ if (phone == null) return false;
+
+ if (!TelephonyPermissions.checkCallingOrSelfReadPhoneState(
+ mApp, phone.getSubId(), callingPackage, "isModemEnabledForSlot")) {
+ throw new SecurityException("Requires READ_PHONE_STATE permission.");
+ }
+
+ final long identity = Binder.clearCallingIdentity();
+ try {
+ return PhoneConfigurationManager.getInstance().getPhoneStatus(phone);
+ } finally {
+ Binder.restoreCallingIdentity(identity);
+ }
+ }
+
@Override
public void setMultiSimCarrierRestriction(boolean isMultiSimCarrierRestricted) {
enforceModifyPermission();