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

Commit d0b5f61c authored by Thomas Nguyen's avatar Thomas Nguyen
Browse files

Update the way launching default SMS app

Bug: 333635234
Test: SatelliteSOSMessageRecommenderTest
Manual test with both SOS and T911 handover
End-2-end system test for Skylo with both demo and real mode
SMS/MMS/Call with live network.

Change-Id: Ia95a7cfe2d58f59a46485f9266b7018521055c4d
parent 410d5320
Loading
Loading
Loading
Loading
+20 −4
Original line number Diff line number Diff line
@@ -33,6 +33,7 @@ import android.content.ComponentName;
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 @@ public class SatelliteSOSMessageRecommender extends Handler {

    @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 @@ public class SatelliteSOSMessageRecommender extends Handler {
        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 @@ public class SatelliteSOSMessageRecommender extends Handler {
    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() {
+11 −6
Original line number Diff line number Diff line
@@ -38,11 +38,13 @@ import android.content.ComponentName;
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 @@ public class SatelliteSOSMessageRecommenderTest extends TelephonyTest {
            "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 @@ public class SatelliteSOSMessageRecommenderTest extends TelephonyTest {
    @Mock
    private FeatureFlags mFeatureFlags;
    private TestConnection mTestConnection;
    private Uri mTestConnectionAddress = Uri.parse("tel:1234");
    private TestSOSMessageRecommender mTestSOSMessageRecommender;
    private ServiceState mServiceState2;

@@ -127,6 +131,7 @@ public class SatelliteSOSMessageRecommenderTest extends TelephonyTest {
        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 class SatelliteSOSMessageRecommenderTest extends TelephonyTest {
    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 @@ public class SatelliteSOSMessageRecommenderTest extends TelephonyTest {
        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 @@ public class SatelliteSOSMessageRecommenderTest extends TelephonyTest {

        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 @@ public class SatelliteSOSMessageRecommenderTest extends TelephonyTest {

        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 @@ public class SatelliteSOSMessageRecommenderTest extends TelephonyTest {

        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 @@ public class SatelliteSOSMessageRecommenderTest extends TelephonyTest {

        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());