Merge "Populate 'hasKnownUserIntentEmergency' in RIL framework"
diff --git a/src/java/com/android/internal/telephony/LocaleTracker.java b/src/java/com/android/internal/telephony/LocaleTracker.java
index cae6cf5..f952ae4 100755
--- a/src/java/com/android/internal/telephony/LocaleTracker.java
+++ b/src/java/com/android/internal/telephony/LocaleTracker.java
@@ -417,16 +417,6 @@
mLocalLog.log(msg);
mCurrentCountryIso = countryIso;
- // Inform EmergencyNumberTrack with the change of current Country ISO
- if (mPhone != null && mPhone.getEmergencyNumberTracker() != null) {
- mPhone.getEmergencyNumberTracker().updateEmergencyNumberDatabaseCountryChange(
- getCurrentCountry());
- log("Notified EmergencyNumberTracker");
- } else {
- loge("Cannot notify EmergencyNumberTracker. Phone is null? "
- + Boolean.toString(mPhone == null));
- }
-
TelephonyManager.setTelephonyProperty(mPhone.getPhoneId(),
TelephonyProperties.PROPERTY_OPERATOR_ISO_COUNTRY, mCurrentCountryIso);
diff --git a/src/java/com/android/internal/telephony/PhoneConfigurationManager.java b/src/java/com/android/internal/telephony/PhoneConfigurationManager.java
index acb9f6c..2a7728b 100644
--- a/src/java/com/android/internal/telephony/PhoneConfigurationManager.java
+++ b/src/java/com/android/internal/telephony/PhoneConfigurationManager.java
@@ -162,12 +162,14 @@
* @param numOfSims number of active sims we want to switch to
*/
public void switchMultiSimConfig(int numOfSims) {
+ log("switchMultiSimConfig: with numOfSims = " + numOfSims);
if (getStaticPhoneCapability().logicalModemList.size() < numOfSims) {
log("switchMultiSimConfig: Phone is not capable of enabling "
+ numOfSims + " sims, exiting!");
return;
}
- if (getNumOfActiveSims() != numOfSims) {
+ if (getPhoneCount() != numOfSims) {
+ log("switchMultiSimConfig: sending the request for switching");
Message callback = Message.obtain(
mHandler, EVENT_SWITCH_DSDS_CONFIG_DONE, numOfSims, 0 /**dummy arg*/);
mRadioConfig.setModemsConfig(numOfSims, callback);
@@ -206,6 +208,7 @@
public boolean isRebootRequiredForModemConfigChange() {
String rebootRequired = SystemProperties.get(
TelephonyProperties.PROPERTY_REBOOT_REQUIRED_ON_MODEM_CHANGE);
+ log("isRebootRequiredForModemConfigChange: isRebootRequired = " + rebootRequired);
return !rebootRequired.equals("false");
}
@@ -234,6 +237,9 @@
+ finalMultiSimConfig);
PowerManager pm = (PowerManager) mContext.getSystemService(Context.POWER_SERVICE);
pm.reboot("Switching to " + finalMultiSimConfig);
+ } else {
+ log("setMultiSimProperties: Rebooting is not required to switch multi-sim config to "
+ + finalMultiSimConfig);
}
}
diff --git a/src/java/com/android/internal/telephony/RadioConfig.java b/src/java/com/android/internal/telephony/RadioConfig.java
index 6bfbcd3..ab9afec 100644
--- a/src/java/com/android/internal/telephony/RadioConfig.java
+++ b/src/java/com/android/internal/telephony/RadioConfig.java
@@ -419,7 +419,7 @@
if (DBG) {
logd(rr.serialString() + "> " + requestToString(rr.mRequest)
- + "numOfLiveModems = " + numOfLiveModems);
+ + ", numOfLiveModems = " + numOfLiveModems);
}
try {
diff --git a/src/java/com/android/internal/telephony/emergency/EmergencyNumberTracker.java b/src/java/com/android/internal/telephony/emergency/EmergencyNumberTracker.java
index 9c2b863..303f6a9 100644
--- a/src/java/com/android/internal/telephony/emergency/EmergencyNumberTracker.java
+++ b/src/java/com/android/internal/telephony/emergency/EmergencyNumberTracker.java
@@ -16,6 +16,10 @@
package com.android.internal.telephony.emergency;
+import android.content.Context;
+import android.location.Country;
+import android.location.CountryDetector;
+import android.location.CountryListener;
import android.os.AsyncResult;
import android.os.Handler;
import android.os.Message;
@@ -70,6 +74,7 @@
private final CommandsInterface mCi;
private final Phone mPhone;
+ private CountryDetector mCountryDetector;
private String mCountryIso;
private static final String EMERGENCY_NUMBER_DB_ASSETS_FILE = "eccdata";
@@ -97,6 +102,17 @@
public EmergencyNumberTracker(Phone phone, CommandsInterface ci) {
mPhone = phone;
mCi = ci;
+ if (mPhone != null) {
+ mCountryDetector = (CountryDetector) mPhone.getContext().getSystemService(
+ Context.COUNTRY_DETECTOR);
+ if (mCountryDetector != null) {
+ mCountryDetector.addCountryListener(new CountryListener() {
+ public void onCountryDetected(Country country) {
+ updateEmergencyNumberDatabaseCountryChange(country.getCountryIso());
+ }
+ }, getLooper());
+ }
+ }
initializeDatabaseEmergencyNumberList();
mCi.registerForEmergencyNumberList(this, EVENT_UNSOL_EMERGENCY_NUMBER_LIST, null);
}
@@ -143,11 +159,23 @@
}
private void initializeDatabaseEmergencyNumberList() {
- mCountryIso = getInitialCountryIso().toLowerCase();
- cacheEmergencyDatabaseByCountry(mCountryIso);
+ // If country iso has been cached when listener is set, don't need to cache the initial
+ // country iso and initial database.
+ if (mCountryIso == null) {
+ mCountryIso = getInitialCountryIso().toLowerCase();
+ cacheEmergencyDatabaseByCountry(mCountryIso);
+ }
}
private String getInitialCountryIso() {
+ Country country = null;
+ if (mCountryDetector != null) {
+ country = mCountryDetector.detectCountry();
+ if (country != null) {
+ return country.getCountryIso();
+ }
+ }
+ // Fallback to Telephony's country detector if there are issues with CountryDetector
if (mPhone != null) {
ServiceStateTracker sst = mPhone.getServiceStateTracker();
if (sst != null) {
@@ -216,7 +244,7 @@
mPhone.getContext().getAssets().open(EMERGENCY_NUMBER_DB_ASSETS_FILE));
allEccMessages = ProtobufEccData.AllInfo.parseFrom(readInputStreamToByteArray(
new GZIPInputStream(inputStream)));
- logd("Emergency database is loaded. ");
+ logd(countryIso + " emergency database is loaded. ");
for (ProtobufEccData.CountryInfo countryEccInfo : allEccMessages.countries) {
if (countryEccInfo.isoCode.equals(countryIso.toUpperCase())) {
for (ProtobufEccData.EccInfo eccInfo : countryEccInfo.eccs) {
diff --git a/src/java/com/android/internal/telephony/ims/RcsEventQueryHelper.java b/src/java/com/android/internal/telephony/ims/RcsEventQueryHelper.java
index 995b413..60531e5 100644
--- a/src/java/com/android/internal/telephony/ims/RcsEventQueryHelper.java
+++ b/src/java/com/android/internal/telephony/ims/RcsEventQueryHelper.java
@@ -21,7 +21,6 @@
import static android.provider.Telephony.RcsColumns.RcsEventTypes.PARTICIPANT_JOINED_EVENT_TYPE;
import static android.provider.Telephony.RcsColumns.RcsEventTypes.PARTICIPANT_LEFT_EVENT_TYPE;
import static android.provider.Telephony.RcsColumns.RcsGroupThreadColumns.RCS_GROUP_THREAD_URI;
-import static android.provider.Telephony.RcsColumns.RcsParticipantColumns.RCS_PARTICIPANT_ID_COLUMN;
import static android.provider.Telephony.RcsColumns.RcsParticipantColumns.RCS_PARTICIPANT_URI;
import static android.provider.Telephony.RcsColumns.RcsParticipantEventColumns.ALIAS_CHANGE_EVENT_URI_PART;
import static android.provider.Telephony.RcsColumns.RcsParticipantEventColumns.NEW_ALIAS_COLUMN;
@@ -188,7 +187,7 @@
private RcsParticipantAliasChangedEvent createNewParticipantAliasChangedEvent(Cursor cursor) {
return new RcsParticipantAliasChangedEvent(
cursor.getLong(cursor.getColumnIndex(TIMESTAMP_COLUMN)),
- cursor.getInt(cursor.getColumnIndex(RCS_PARTICIPANT_ID_COLUMN)),
+ cursor.getInt(cursor.getColumnIndex(SOURCE_PARTICIPANT_ID_COLUMN)),
cursor.getString(cursor.getColumnIndex(NEW_ALIAS_COLUMN)));
}
}
diff --git a/src/java/com/android/internal/telephony/ims/RcsMessageStoreController.java b/src/java/com/android/internal/telephony/ims/RcsMessageStoreController.java
index 9edec9a..b0bc024 100644
--- a/src/java/com/android/internal/telephony/ims/RcsMessageStoreController.java
+++ b/src/java/com/android/internal/telephony/ims/RcsMessageStoreController.java
@@ -63,6 +63,7 @@
import static android.provider.Telephony.RcsColumns.RcsThreadEventColumns.DESTINATION_PARTICIPANT_ID_COLUMN;
import static android.provider.Telephony.RcsColumns.RcsThreadEventColumns.NEW_ICON_URI_COLUMN;
import static android.provider.Telephony.RcsColumns.RcsThreadEventColumns.NEW_NAME_COLUMN;
+import static android.provider.Telephony.RcsColumns.RcsThreadEventColumns.SOURCE_PARTICIPANT_ID_COLUMN;
import static android.provider.Telephony.RcsColumns.RcsThreadEventColumns.TIMESTAMP_COLUMN;
import static android.provider.Telephony.RcsColumns.RcsUnifiedThreadColumns.THREAD_TYPE_GROUP;
import static android.provider.Telephony.RcsColumns.TRANSACTION_FAILED;
@@ -210,10 +211,10 @@
}
@Override
- public RcsMessageQueryResult getMessages(RcsMessageQueryParams queryParameters)
+ public RcsMessageQueryResult getMessages(RcsMessageQueryParams queryParams)
throws RemoteException {
Bundle bundle = new Bundle();
- bundle.putParcelable(MESSAGE_QUERY_PARAMETERS_KEY, queryParameters);
+ bundle.putParcelable(MESSAGE_QUERY_PARAMETERS_KEY, queryParams);
return mMessageQueryHelper.performMessageQuery(bundle);
}
@@ -910,7 +911,7 @@
String newAlias) throws RemoteException {
ContentValues contentValues = new ContentValues(4);
contentValues.put(TIMESTAMP_COLUMN, timestamp);
- contentValues.put(RCS_PARTICIPANT_ID_COLUMN, participantId);
+ contentValues.put(SOURCE_PARTICIPANT_ID_COLUMN, participantId);
contentValues.put(NEW_ALIAS_COLUMN, newAlias);
Uri uri = mContentResolver.insert(
diff --git a/tests/telephonytests/src/com/android/internal/telephony/GsmSmsTest.java b/tests/telephonytests/src/com/android/internal/telephony/GsmSmsTest.java
index 06cd54f..ad5d0ab 100644
--- a/tests/telephonytests/src/com/android/internal/telephony/GsmSmsTest.java
+++ b/tests/telephonytests/src/com/android/internal/telephony/GsmSmsTest.java
@@ -48,6 +48,14 @@
}
@SmallTest
+ public void testRecipientAddress() throws Exception {
+ String pdu = "0891683108200505F011000D91683196032930F000000006C8329BFD0E01";
+ SmsMessage sms = SmsMessage.createFromPdu(HexDump.hexStringToByteArray(pdu));
+ assertEquals("+8613800250500", sms.getServiceCenterAddress());
+ assertEquals("+8613693092030", sms.getRecipientAddress());
+ }
+
+ @SmallTest
public void testUdh() throws Exception {
String pdu = "07914140279510F6440A8111110301003BF56080207130138A8C0B05040B8423F"
+ "000032A02010106276170706C69636174696F6E2F766E642E7761702E6D6D732D"
diff --git a/tests/telephonytests/src/com/android/internal/telephony/cdma/sms/CdmaSmsTest.java b/tests/telephonytests/src/com/android/internal/telephony/cdma/sms/CdmaSmsTest.java
index 379815d..a315bde 100644
--- a/tests/telephonytests/src/com/android/internal/telephony/cdma/sms/CdmaSmsTest.java
+++ b/tests/telephonytests/src/com/android/internal/telephony/cdma/sms/CdmaSmsTest.java
@@ -115,6 +115,14 @@
}
@SmallTest
+ public void testRecipientAddress() throws Exception {
+ String pdu = "011a0000001002080d0003100160010610262d5ab500040401448888";
+ SmsMessage sms = SmsMessage.createFromEfRecord(0,
+ HexDump.hexStringToByteArray(pdu));
+ assertEquals("12222", sms.getRecipientAddress());
+ }
+
+ @SmallTest
public void testUserData7bitGsm() throws Exception {
String pdu = "00031040900112488ea794e074d69e1b7392c270326cde9e98";
BearerData bearerData = BearerData.decode(HexDump.hexStringToByteArray(pdu));
diff --git a/tests/telephonytests/src/com/android/internal/telephony/emergency/EmergencyNumberTrackerTest.java b/tests/telephonytests/src/com/android/internal/telephony/emergency/EmergencyNumberTrackerTest.java
index 57c74ab..a07d648 100644
--- a/tests/telephonytests/src/com/android/internal/telephony/emergency/EmergencyNumberTrackerTest.java
+++ b/tests/telephonytests/src/com/android/internal/telephony/emergency/EmergencyNumberTrackerTest.java
@@ -17,6 +17,7 @@
package com.android.internal.telephony.emergency;
import static org.junit.Assert.assertEquals;
+import static org.mockito.Mockito.doReturn;
import android.os.AsyncResult;
import android.os.HandlerThread;
@@ -58,6 +59,7 @@
public void setUp() throws Exception {
logd("EmergencyNumberTrackerTest +Setup!");
super.setUp("EmergencyNumberTrackerTest");
+ doReturn(mContext).when(mPhone).getContext();
initializeEmergencyNumberListTestSamples();
mHandlerThread = new EmergencyNumberTrackerTestHandler("EmergencyNumberTrackerTestHandler");
mHandlerThread.start();