Merge "Update the way launching default SMS app" into 24D1-dev am: 61079883b3
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/opt/telephony/+/26898750
Change-Id: I11ce54bbf44249617a4ebd9dd187341fff6829a6
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
diff --git a/src/java/com/android/internal/telephony/satellite/SatelliteSOSMessageRecommender.java b/src/java/com/android/internal/telephony/satellite/SatelliteSOSMessageRecommender.java
index 062f431..9e9f9d7 100644
--- a/src/java/com/android/internal/telephony/satellite/SatelliteSOSMessageRecommender.java
+++ b/src/java/com/android/internal/telephony/satellite/SatelliteSOSMessageRecommender.java
@@ -33,6 +33,7 @@
import android.content.Context;
import android.content.Intent;
import android.content.res.Resources;
+import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
@@ -221,7 +222,7 @@
@VisibleForTesting(visibility = VisibleForTesting.Visibility.PRIVATE)
protected ComponentName getDefaultSmsApp() {
- return SmsApplication.getDefaultSmsApplication(mContext, false);
+ return SmsApplication.getDefaultSendToApplication(mContext, false);
}
private void handleEmergencyCallStartedEvent(@NonNull Connection connection) {
@@ -627,14 +628,27 @@
result.putInt(EXTRA_EMERGENCY_CALL_TO_SATELLITE_HANDOVER_TYPE, handoverType);
if (!TextUtils.isEmpty(packageName) && !TextUtils.isEmpty(className)) {
result.putParcelable(EXTRA_EMERGENCY_CALL_TO_SATELLITE_LAUNCH_INTENT,
- createHandoverAppLaunchPendingIntent(packageName, className, action));
+ createHandoverAppLaunchPendingIntent(
+ handoverType, packageName, className, action));
}
return result;
}
- @NonNull private PendingIntent createHandoverAppLaunchPendingIntent(
+ @NonNull private PendingIntent createHandoverAppLaunchPendingIntent(int handoverType,
@NonNull String packageName, @NonNull String className, @Nullable String action) {
- Intent intent = new Intent(action);
+ Intent intent;
+ if (handoverType == EMERGENCY_CALL_TO_SATELLITE_HANDOVER_TYPE_T911) {
+ String emergencyNumber = "911";
+ if (mEmergencyConnection != null) {
+ emergencyNumber = mEmergencyConnection.getAddress().getSchemeSpecificPart();
+ }
+ logd("emergencyNumber=" + emergencyNumber);
+
+ Uri uri = Uri.parse("smsto:" + emergencyNumber);
+ intent = new Intent(Intent.ACTION_SENDTO, uri);
+ } else {
+ intent = new Intent(action);
+ }
intent.setComponent(new ComponentName(packageName, className));
return PendingIntent.getActivity(mContext, 0, intent,
PendingIntent.FLAG_ONE_SHOT | PendingIntent.FLAG_IMMUTABLE);
@@ -661,8 +675,10 @@
private void handleCmdSendEventDisplayEmergencyMessageForcefully(
@NonNull Connection connection) {
logd("Sent EVENT_DISPLAY_EMERGENCY_MESSAGE to Dialer forcefully.");
+ mEmergencyConnection = connection;
Bundle extras = createExtraBundleForEventDisplayEmergencyMessage();
connection.sendConnectionEvent(TelephonyManager.EVENT_DISPLAY_EMERGENCY_MESSAGE, extras);
+ mEmergencyConnection = null;
}
private boolean isMultiSim() {
diff --git a/tests/telephonytests/src/com/android/internal/telephony/satellite/SatelliteSOSMessageRecommenderTest.java b/tests/telephonytests/src/com/android/internal/telephony/satellite/SatelliteSOSMessageRecommenderTest.java
index 67e0174..fc04688 100644
--- a/tests/telephonytests/src/com/android/internal/telephony/satellite/SatelliteSOSMessageRecommenderTest.java
+++ b/tests/telephonytests/src/com/android/internal/telephony/satellite/SatelliteSOSMessageRecommenderTest.java
@@ -38,11 +38,13 @@
import android.content.Context;
import android.content.Intent;
import android.content.res.Resources;
+import android.net.Uri;
import android.os.Bundle;
import android.os.Looper;
import android.os.OutcomeReceiver;
import android.os.RemoteException;
import android.telecom.Connection;
+import android.telecom.TelecomManager;
import android.telephony.BinderCacheManager;
import android.telephony.ServiceState;
import android.telephony.SubscriptionManager;
@@ -96,6 +98,7 @@
"android.com.google.default.SmsMmsApp";
private static final String DEFAULT_HANDOVER_INTENT_ACTION =
"android.com.vendor.action.EMERGENCY_MESSAGING";
+ private static final String DEFAULT_T911_HANDOVER_INTENT_ACTION = Intent.ACTION_SENDTO;
private TestSatelliteController mTestSatelliteController;
private TestImsManager mTestImsManager;
@Mock
@@ -105,6 +108,7 @@
@Mock
private FeatureFlags mFeatureFlags;
private TestConnection mTestConnection;
+ private Uri mTestConnectionAddress = Uri.parse("tel:1234");
private TestSOSMessageRecommender mTestSOSMessageRecommender;
private ServiceState mServiceState2;
@@ -127,6 +131,7 @@
mTestImsManager = new TestImsManager(
mContext, PHONE_ID, mMmTelFeatureConnectionFactory, null, null, null);
mTestConnection = new TestConnection(CALL_ID);
+ mTestConnection.setAddress(mTestConnectionAddress, TelecomManager.PRESENTATION_ALLOWED);
mPhones = new Phone[] {mPhone, mPhone2};
replaceInstance(PhoneFactory.class, "sPhones", null, mPhones);
mServiceState2 = Mockito.mock(ServiceState.class);
@@ -151,7 +156,7 @@
public void testTimeoutBeforeEmergencyCallEnd_T911() {
testTimeoutBeforeEmergencyCallEnd(EMERGENCY_CALL_TO_SATELLITE_HANDOVER_TYPE_T911,
DEFAULT_SATELLITE_MESSAGING_PACKAGE, DEFAULT_SATELLITE_MESSAGING_CLASS,
- DEFAULT_HANDOVER_INTENT_ACTION);
+ DEFAULT_T911_HANDOVER_INTENT_ACTION);
}
@Test
@@ -269,7 +274,7 @@
assertTrue(mTestConnection.isEventSent(TelephonyManager.EVENT_DISPLAY_EMERGENCY_MESSAGE,
EMERGENCY_CALL_TO_SATELLITE_HANDOVER_TYPE_T911,
DEFAULT_SATELLITE_MESSAGING_PACKAGE, DEFAULT_SATELLITE_MESSAGING_CLASS,
- DEFAULT_HANDOVER_INTENT_ACTION));
+ DEFAULT_T911_HANDOVER_INTENT_ACTION));
assertUnregisterForStateChangedEventsTriggered(mPhone, 1, 2, 1);
assertUnregisterForStateChangedEventsTriggered(mPhone2, 1, 2, 1);
mTestSatelliteController.isOemEnabledSatelliteSupported = true;
@@ -333,7 +338,7 @@
assertTrue(mTestConnection.isEventSent(TelephonyManager.EVENT_DISPLAY_EMERGENCY_MESSAGE,
EMERGENCY_CALL_TO_SATELLITE_HANDOVER_TYPE_T911, DEFAULT_SATELLITE_MESSAGING_PACKAGE,
- DEFAULT_SATELLITE_MESSAGING_CLASS, DEFAULT_HANDOVER_INTENT_ACTION));
+ DEFAULT_SATELLITE_MESSAGING_CLASS, DEFAULT_T911_HANDOVER_INTENT_ACTION));
assertUnregisterForStateChangedEventsTriggered(mPhone, 1, 2, 1);
assertUnregisterForStateChangedEventsTriggered(mPhone2, 1, 2, 1);
assertEquals(0, mTestSOSMessageRecommender.getCountOfTimerStarted());
@@ -382,7 +387,7 @@
assertTrue(mTestConnection.isEventSent(TelephonyManager.EVENT_DISPLAY_EMERGENCY_MESSAGE,
EMERGENCY_CALL_TO_SATELLITE_HANDOVER_TYPE_T911, DEFAULT_SATELLITE_MESSAGING_PACKAGE,
- DEFAULT_SATELLITE_MESSAGING_CLASS, DEFAULT_HANDOVER_INTENT_ACTION));
+ DEFAULT_SATELLITE_MESSAGING_CLASS, DEFAULT_T911_HANDOVER_INTENT_ACTION));
assertFalse(mTestSOSMessageRecommender.isTimerStarted());
assertEquals(0, mTestSOSMessageRecommender.getCountOfTimerStarted());
assertUnregisterForStateChangedEventsTriggered(mPhone, 2, 4, 2);
@@ -421,7 +426,7 @@
assertTrue(mTestConnection.isEventSent(TelephonyManager.EVENT_DISPLAY_EMERGENCY_MESSAGE,
EMERGENCY_CALL_TO_SATELLITE_HANDOVER_TYPE_T911, DEFAULT_SATELLITE_MESSAGING_PACKAGE,
- DEFAULT_SATELLITE_MESSAGING_CLASS, DEFAULT_HANDOVER_INTENT_ACTION));
+ DEFAULT_SATELLITE_MESSAGING_CLASS, DEFAULT_T911_HANDOVER_INTENT_ACTION));
assertUnregisterForStateChangedEventsTriggered(mPhone, 1, 2, 1);
assertUnregisterForStateChangedEventsTriggered(mPhone2, 1, 2, 1);
assertEquals(0, mTestSOSMessageRecommender.getCountOfTimerStarted());
@@ -626,7 +631,7 @@
assertTrue(mTestConnection.isEventSent(TelephonyManager.EVENT_DISPLAY_EMERGENCY_MESSAGE,
EMERGENCY_CALL_TO_SATELLITE_HANDOVER_TYPE_T911, DEFAULT_SATELLITE_MESSAGING_PACKAGE,
- DEFAULT_SATELLITE_MESSAGING_CLASS, DEFAULT_HANDOVER_INTENT_ACTION));
+ DEFAULT_SATELLITE_MESSAGING_CLASS, DEFAULT_T911_HANDOVER_INTENT_ACTION));
assertUnregisterForStateChangedEventsTriggered(mPhone, 1, 2, 1);
assertUnregisterForStateChangedEventsTriggered(mPhone2, 1, 2, 1);
assertEquals(0, mTestSOSMessageRecommender.getCountOfTimerStarted());