diff --git a/testapps/ImsTestService/src/com/android/phone/testapps/imstestapp/ImsTestServiceApp.java b/testapps/ImsTestService/src/com/android/phone/testapps/imstestapp/ImsTestServiceApp.java
index c71f4f8..6b78a30 100644
--- a/testapps/ImsTestService/src/com/android/phone/testapps/imstestapp/ImsTestServiceApp.java
+++ b/testapps/ImsTestService/src/com/android/phone/testapps/imstestapp/ImsTestServiceApp.java
@@ -19,7 +19,6 @@
 import android.app.Activity;
 import android.content.Intent;
 import android.os.Bundle;
-import android.os.UserHandle;
 import android.widget.Button;
 import android.widget.LinearLayout;
 
@@ -53,16 +52,16 @@
 
     private void launchRegistrationActivity() {
         Intent intent = new Intent(this, ImsRegistrationActivity.class);
-        startActivityAsUser(intent, UserHandle.CURRENT);
+        startActivity(intent);
     }
 
     private void launchCallingActivity() {
         Intent intent = new Intent(this, ImsCallingActivity.class);
-        startActivityAsUser(intent, UserHandle.CURRENT);
+        startActivity(intent);
     }
 
     private void launchConfigActivity() {
         Intent intent = new Intent(this, ImsConfigActivity.class);
-        startActivityAsUser(intent, UserHandle.CURRENT);
+        startActivity(intent);
     }
 }
diff --git a/testapps/SmsManagerTestApp/src/com/android/phone/testapps/smsmanagertestapp/SmsManagerTestApp.java b/testapps/SmsManagerTestApp/src/com/android/phone/testapps/smsmanagertestapp/SmsManagerTestApp.java
index 6d3460b..d599a86 100644
--- a/testapps/SmsManagerTestApp/src/com/android/phone/testapps/smsmanagertestapp/SmsManagerTestApp.java
+++ b/testapps/SmsManagerTestApp/src/com/android/phone/testapps/smsmanagertestapp/SmsManagerTestApp.java
@@ -24,7 +24,6 @@
 import android.content.Intent;
 import android.content.pm.PackageManager;
 import android.os.Bundle;
-import android.os.UserHandle;
 import android.telephony.SmsManager;
 import android.telephony.SubscriptionManager;
 import android.telephony.TelephonyManager;
@@ -185,7 +184,7 @@
         intent.setComponent(SETTINGS_SUB_PICK_ACTIVITY);
         intent.putExtra(DIALOG_TYPE_KEY, SMS_PICK);
         try {
-            startActivityAsUser(intent, UserHandle.CURRENT);
+            startActivity(intent);
         } catch (ActivityNotFoundException anfe) {
             // If Settings is not installed, only log the error as we do not want to break
             // legacy applications.
diff --git a/testapps/TelephonyManagerTestApp/src/com/android/phone/testapps/telephonymanagertestapp/TelephonyManagerTestApp.java b/testapps/TelephonyManagerTestApp/src/com/android/phone/testapps/telephonymanagertestapp/TelephonyManagerTestApp.java
index d6e8e86..815c7e8 100644
--- a/testapps/TelephonyManagerTestApp/src/com/android/phone/testapps/telephonymanagertestapp/TelephonyManagerTestApp.java
+++ b/testapps/TelephonyManagerTestApp/src/com/android/phone/testapps/telephonymanagertestapp/TelephonyManagerTestApp.java
@@ -20,7 +20,6 @@
 import android.app.SearchManager;
 import android.content.Intent;
 import android.os.Bundle;
-import android.os.UserHandle;
 import android.telephony.TelephonyManager;
 import android.view.Menu;
 import android.view.View;
@@ -139,7 +138,7 @@
         sCurrentMethod = mFilteredMethods.get(position);
         Intent intent = new Intent(this, CallingMethodActivity.class);
 
-        startActivityAsUser(intent, UserHandle.CURRENT);
+        startActivity(intent);
     }
 
     @Override
diff --git a/testapps/TestRcsApp/TestApp/src/com/google/android/sample/rcsclient/ContactListActivity.java b/testapps/TestRcsApp/TestApp/src/com/google/android/sample/rcsclient/ContactListActivity.java
index 362ec83..b641606 100644
--- a/testapps/TestRcsApp/TestApp/src/com/google/android/sample/rcsclient/ContactListActivity.java
+++ b/testapps/TestRcsApp/TestApp/src/com/google/android/sample/rcsclient/ContactListActivity.java
@@ -23,7 +23,6 @@
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.Message;
-import android.os.UserHandle;
 import android.telephony.SubscriptionManager;
 import android.util.Log;
 import android.view.MenuItem;
@@ -78,7 +77,7 @@
         mStartChatButton = findViewById(R.id.start_chat_btn);
         mStartChatButton.setOnClickListener(view -> {
             Intent intent = new Intent(ContactListActivity.this, PhoneNumberActivity.class);
-            ContactListActivity.this.startActivityAsUser(intent, UserHandle.CURRENT);
+            ContactListActivity.this.startActivity(intent);
         });
         setButtonClickable(false);
 
@@ -188,7 +187,7 @@
                 Intent intent = new Intent(ContactListActivity.this, ChatActivity.class);
                 intent.putExtra(ChatActivity.EXTRA_REMOTE_PHONE_NUMBER,
                         mContactList.get(position).phoneNumber);
-                ContactListActivity.this.startActivityAsUser(intent, UserHandle.CURRENT);
+                ContactListActivity.this.startActivity(intent);
             });
         } else {
             mListview.setOnItemClickListener(null);
diff --git a/testapps/TestRcsApp/TestApp/src/com/google/android/sample/rcsclient/MainActivity.java b/testapps/TestRcsApp/TestApp/src/com/google/android/sample/rcsclient/MainActivity.java
index 7b9a7c4..5d2db73 100644
--- a/testapps/TestRcsApp/TestApp/src/com/google/android/sample/rcsclient/MainActivity.java
+++ b/testapps/TestRcsApp/TestApp/src/com/google/android/sample/rcsclient/MainActivity.java
@@ -21,7 +21,6 @@
 import android.content.pm.PackageInfo;
 import android.content.pm.PackageManager;
 import android.os.Bundle;
-import android.os.UserHandle;
 import android.text.TextUtils;
 import android.util.Log;
 import android.view.MenuItem;
@@ -63,30 +62,30 @@
         mCarrierLockModeListBtn = findViewById(R.id.setCarrierLockMode);
         mProvisionButton.setOnClickListener(view -> {
             Intent intent = new Intent(this, ProvisioningActivity.class);
-            MainActivity.this.startActivityAsUser(intent, UserHandle.CURRENT);
+            MainActivity.this.startActivity(intent);
         });
 
         mDelegateButton.setOnClickListener(view -> {
             Intent intent = new Intent(this, DelegateActivity.class);
-            MainActivity.this.startActivityAsUser(intent, UserHandle.CURRENT);
+            MainActivity.this.startActivity(intent);
         });
 
         mUceButton.setOnClickListener(view -> {
             Intent intent = new Intent(this, UceActivity.class);
-            MainActivity.this.startActivityAsUser(intent, UserHandle.CURRENT);
+            MainActivity.this.startActivity(intent);
         });
 
         mGbaButton.setOnClickListener(view -> {
             Intent intent = new Intent(this, GbaActivity.class);
-            MainActivity.this.startActivityAsUser(intent, UserHandle.CURRENT);
+            MainActivity.this.startActivity(intent);
         });
         mMessageClientButton.setOnClickListener(view -> {
             Intent intent = new Intent(this, ContactListActivity.class);
-            MainActivity.this.startActivityAsUser(intent, UserHandle.CURRENT);
+            MainActivity.this.startActivity(intent);
         });
         mFileUploadButton.setOnClickListener(view -> {
             Intent intent = new Intent(this, FileUploadActivity.class);
-            MainActivity.this.startActivityAsUser(intent, UserHandle.CURRENT);
+            MainActivity.this.startActivity(intent);
         });
 
         String appVersionName = getVersionCode(getPackageName());
@@ -98,7 +97,7 @@
 
         mCarrierLockModeListBtn.setOnClickListener(view -> {
             Intent intent = new Intent(this, CarrieLockModeListActivity.class);
-            MainActivity.this.startActivityAsUser(intent, UserHandle.CURRENT);
+            MainActivity.this.startActivity(intent);
         });
     }
 
diff --git a/testapps/TestRcsApp/TestApp/src/com/google/android/sample/rcsclient/PhoneNumberActivity.java b/testapps/TestRcsApp/TestApp/src/com/google/android/sample/rcsclient/PhoneNumberActivity.java
index 34f63c9..b432979 100644
--- a/testapps/TestRcsApp/TestApp/src/com/google/android/sample/rcsclient/PhoneNumberActivity.java
+++ b/testapps/TestRcsApp/TestApp/src/com/google/android/sample/rcsclient/PhoneNumberActivity.java
@@ -18,7 +18,6 @@
 
 import android.content.Intent;
 import android.os.Bundle;
-import android.os.UserHandle;
 import android.util.Log;
 import android.view.MenuItem;
 import android.widget.Button;
@@ -52,7 +51,7 @@
             if (formattedNumber != null) {
                 Intent intent = new Intent(PhoneNumberActivity.this, ChatActivity.class);
                 intent.putExtra(ChatActivity.EXTRA_REMOTE_PHONE_NUMBER, formattedNumber);
-                PhoneNumberActivity.this.startActivityAsUser(intent, UserHandle.CURRENT);
+                PhoneNumberActivity.this.startActivity(intent);
             } else {
                 Toast.makeText(this, "Invalid Number format!",
                         Toast.LENGTH_LONG).show();
diff --git a/testapps/TestSatelliteApp/src/com/android/phone/testapps/satellitetestapp/Datagram.java b/testapps/TestSatelliteApp/src/com/android/phone/testapps/satellitetestapp/Datagram.java
index 9d34532..6c0b227 100644
--- a/testapps/TestSatelliteApp/src/com/android/phone/testapps/satellitetestapp/Datagram.java
+++ b/testapps/TestSatelliteApp/src/com/android/phone/testapps/satellitetestapp/Datagram.java
@@ -29,7 +29,6 @@
 import android.content.Intent;
 import android.content.SharedPreferences;
 import android.os.Bundle;
-import android.os.UserHandle;
 import android.telephony.satellite.EnableRequestAttributes;
 import android.telephony.satellite.PointingInfo;
 import android.telephony.satellite.SatelliteDatagram;
@@ -109,8 +108,7 @@
         findViewById(R.id.Back).setOnClickListener(new OnClickListener() {
             @Override
             public void onClick(View view) {
-                startActivityAsUser(new Intent(Datagram.this, SatelliteTestApp.class),
-                        UserHandle.CURRENT);
+                startActivity(new Intent(Datagram.this, SatelliteTestApp.class));
             }
         });
     }
diff --git a/testapps/TestSatelliteApp/src/com/android/phone/testapps/satellitetestapp/MultipleSendReceive.java b/testapps/TestSatelliteApp/src/com/android/phone/testapps/satellitetestapp/MultipleSendReceive.java
index f8fd412..723f690 100644
--- a/testapps/TestSatelliteApp/src/com/android/phone/testapps/satellitetestapp/MultipleSendReceive.java
+++ b/testapps/TestSatelliteApp/src/com/android/phone/testapps/satellitetestapp/MultipleSendReceive.java
@@ -19,7 +19,6 @@
 import android.app.Activity;
 import android.content.Intent;
 import android.os.Bundle;
-import android.os.UserHandle;
 import android.telephony.satellite.EnableRequestAttributes;
 import android.telephony.satellite.SatelliteDatagram;
 import android.telephony.satellite.SatelliteManager;
@@ -57,8 +56,7 @@
         findViewById(R.id.Back).setOnClickListener(new OnClickListener() {
             @Override
             public void onClick(View view) {
-                startActivityAsUser(new Intent(MultipleSendReceive.this, SatelliteTestApp.class),
-                        UserHandle.CURRENT);
+                startActivity(new Intent(MultipleSendReceive.this, SatelliteTestApp.class));
             }
         });
     }
diff --git a/testapps/TestSatelliteApp/src/com/android/phone/testapps/satellitetestapp/NbIotSatellite.java b/testapps/TestSatelliteApp/src/com/android/phone/testapps/satellitetestapp/NbIotSatellite.java
index 192f81a..17646f0 100644
--- a/testapps/TestSatelliteApp/src/com/android/phone/testapps/satellitetestapp/NbIotSatellite.java
+++ b/testapps/TestSatelliteApp/src/com/android/phone/testapps/satellitetestapp/NbIotSatellite.java
@@ -24,7 +24,6 @@
 import android.content.SharedPreferences;
 import android.os.Bundle;
 import android.os.OutcomeReceiver;
-import android.os.UserHandle;
 import android.telephony.satellite.SatelliteManager;
 import android.telephony.satellite.SatelliteSupportedStateCallback;
 import android.util.Log;
@@ -70,8 +69,7 @@
         findViewById(R.id.Back).setOnClickListener(new OnClickListener() {
             @Override
             public void onClick(View view) {
-                startActivityAsUser(new Intent(NbIotSatellite.this, SatelliteTestApp.class),
-                        UserHandle.CURRENT);
+                startActivity(new Intent(NbIotSatellite.this, SatelliteTestApp.class));
             }
         });
 
diff --git a/testapps/TestSatelliteApp/src/com/android/phone/testapps/satellitetestapp/Provisioning.java b/testapps/TestSatelliteApp/src/com/android/phone/testapps/satellitetestapp/Provisioning.java
index da4070e..15c8fd8 100644
--- a/testapps/TestSatelliteApp/src/com/android/phone/testapps/satellitetestapp/Provisioning.java
+++ b/testapps/TestSatelliteApp/src/com/android/phone/testapps/satellitetestapp/Provisioning.java
@@ -22,7 +22,6 @@
 import android.os.Bundle;
 import android.os.CancellationSignal;
 import android.os.OutcomeReceiver;
-import android.os.UserHandle;
 import android.telephony.satellite.SatelliteManager;
 import android.telephony.satellite.SatelliteProvisionStateCallback;
 import android.telephony.satellite.stub.SatelliteResult;
@@ -70,8 +69,7 @@
         findViewById(R.id.Back).setOnClickListener(new OnClickListener() {
             @Override
             public void onClick(View view) {
-                startActivityAsUser(new Intent(Provisioning.this, SatelliteTestApp.class),
-                        UserHandle.CURRENT);
+                startActivity(new Intent(Provisioning.this, SatelliteTestApp.class));
             }
         });
     }
diff --git a/testapps/TestSatelliteApp/src/com/android/phone/testapps/satellitetestapp/SatelliteControl.java b/testapps/TestSatelliteApp/src/com/android/phone/testapps/satellitetestapp/SatelliteControl.java
index efad3aa..379fc74 100644
--- a/testapps/TestSatelliteApp/src/com/android/phone/testapps/satellitetestapp/SatelliteControl.java
+++ b/testapps/TestSatelliteApp/src/com/android/phone/testapps/satellitetestapp/SatelliteControl.java
@@ -20,7 +20,6 @@
 import android.content.Intent;
 import android.os.Bundle;
 import android.os.OutcomeReceiver;
-import android.os.UserHandle;
 import android.telephony.SubscriptionInfo;
 import android.telephony.SubscriptionManager;
 import android.telephony.satellite.EnableRequestAttributes;
@@ -96,8 +95,7 @@
         findViewById(R.id.Back).setOnClickListener(new OnClickListener() {
             @Override
             public void onClick(View view) {
-                startActivityAsUser(new Intent(SatelliteControl.this, SatelliteTestApp.class),
-                        UserHandle.CURRENT);
+                startActivity(new Intent(SatelliteControl.this, SatelliteTestApp.class));
             }
         });
     }
diff --git a/testapps/TestSatelliteApp/src/com/android/phone/testapps/satellitetestapp/SatelliteTestApp.java b/testapps/TestSatelliteApp/src/com/android/phone/testapps/satellitetestapp/SatelliteTestApp.java
index d686cd6..7c4ae00 100644
--- a/testapps/TestSatelliteApp/src/com/android/phone/testapps/satellitetestapp/SatelliteTestApp.java
+++ b/testapps/TestSatelliteApp/src/com/android/phone/testapps/satellitetestapp/SatelliteTestApp.java
@@ -23,7 +23,6 @@
 import android.content.ServiceConnection;
 import android.os.Bundle;
 import android.os.IBinder;
-import android.os.UserHandle;
 import android.telephony.satellite.stub.SatelliteDatagram;
 import android.util.Log;
 import android.view.View;
@@ -59,49 +58,49 @@
             @Override
             public void onClick(View view) {
                 Intent intent = new Intent(SatelliteTestApp.this, SatelliteControl.class);
-                startActivityAsUser(intent, UserHandle.CURRENT);
+                startActivity(intent);
             }
         });
         findViewById(R.id.Datagram).setOnClickListener(new OnClickListener() {
             @Override
             public void onClick(View view) {
                 Intent intent = new Intent(SatelliteTestApp.this, Datagram.class);
-                startActivityAsUser(intent, UserHandle.CURRENT);
+                startActivity(intent);
             }
         });
         findViewById(R.id.Provisioning).setOnClickListener(new OnClickListener() {
             @Override
             public void onClick(View view) {
                 Intent intent = new Intent(SatelliteTestApp.this, Provisioning.class);
-                startActivityAsUser(intent, UserHandle.CURRENT);
+                startActivity(intent);
             }
         });
         findViewById(R.id.MultipleSendReceive).setOnClickListener(new OnClickListener() {
             @Override
             public void onClick(View view) {
                 Intent intent = new Intent(SatelliteTestApp.this, MultipleSendReceive.class);
-                startActivityAsUser(intent, UserHandle.CURRENT);
+                startActivity(intent);
             }
         });
         findViewById(R.id.SendReceive).setOnClickListener(new OnClickListener() {
             @Override
             public void onClick(View view) {
                 Intent intent = new Intent(SatelliteTestApp.this, SendReceive.class);
-                startActivityAsUser(intent, UserHandle.CURRENT);
+                startActivity(intent);
             }
         });
         findViewById(R.id.NbIotSatellite).setOnClickListener(new OnClickListener() {
             @Override
             public void onClick(View view) {
                 Intent intent = new Intent(SatelliteTestApp.this, NbIotSatellite.class);
-                startActivityAsUser(intent, UserHandle.CURRENT);
+                startActivity(intent);
             }
         });
         findViewById(R.id.TestSatelliteWrapper).setOnClickListener(new OnClickListener() {
             @Override
             public void onClick(View view) {
                 Intent intent = new Intent(SatelliteTestApp.this, TestSatelliteWrapper.class);
-                startActivityAsUser(intent, UserHandle.CURRENT);
+                startActivity(intent);
             }
         });
     }
diff --git a/testapps/TestSatelliteApp/src/com/android/phone/testapps/satellitetestapp/SendReceive.java b/testapps/TestSatelliteApp/src/com/android/phone/testapps/satellitetestapp/SendReceive.java
index 5ce2b65..ede2377 100644
--- a/testapps/TestSatelliteApp/src/com/android/phone/testapps/satellitetestapp/SendReceive.java
+++ b/testapps/TestSatelliteApp/src/com/android/phone/testapps/satellitetestapp/SendReceive.java
@@ -21,7 +21,6 @@
 import android.os.Bundle;
 import android.os.CancellationSignal;
 import android.os.OutcomeReceiver;
-import android.os.UserHandle;
 import android.telephony.satellite.EnableRequestAttributes;
 import android.telephony.satellite.PointingInfo;
 import android.telephony.satellite.SatelliteCapabilities;
@@ -73,8 +72,7 @@
         findViewById(R.id.Back).setOnClickListener(new OnClickListener() {
             @Override
             public void onClick(View view) {
-                startActivityAsUser(new Intent(SendReceive.this, SatelliteTestApp.class),
-                        UserHandle.CURRENT);
+                startActivity(new Intent(SendReceive.this, SatelliteTestApp.class));
             }
         });
     }
diff --git a/testapps/TestSatelliteApp/src/com/android/phone/testapps/satellitetestapp/TestSatelliteWrapper.java b/testapps/TestSatelliteApp/src/com/android/phone/testapps/satellitetestapp/TestSatelliteWrapper.java
index ff1c5fa..d8e6e7c 100644
--- a/testapps/TestSatelliteApp/src/com/android/phone/testapps/satellitetestapp/TestSatelliteWrapper.java
+++ b/testapps/TestSatelliteApp/src/com/android/phone/testapps/satellitetestapp/TestSatelliteWrapper.java
@@ -21,7 +21,6 @@
 import android.content.Intent;
 import android.os.Bundle;
 import android.os.OutcomeReceiver;
-import android.os.UserHandle;
 import android.telephony.SubscriptionInfo;
 import android.telephony.SubscriptionManager;
 import android.telephony.satellite.wrapper.CarrierRoamingNtnModeListenerWrapper2;
@@ -122,8 +121,7 @@
         findViewById(R.id.Back).setOnClickListener(new OnClickListener() {
             @Override
             public void onClick(View view) {
-                startActivityAsUser(new Intent(TestSatelliteWrapper.this, SatelliteTestApp.class),
-                        UserHandle.CURRENT);
+                startActivity(new Intent(TestSatelliteWrapper.this, SatelliteTestApp.class));
             }
         });
         findViewById(R.id.ClearLog).setOnClickListener(new OnClickListener() {
