Receive ACTION_CLOSE_SYSTEM_DIALOGS to close RVC when Home is pressed.

Bug: 199516349
Test: Check if RVC is closed when Home button is clicked.
Change-Id: I1138f0083b378cc59b7040fc227044d89179c0a9
diff --git a/tests/CarEvsCameraPreviewApp/Android.bp b/tests/CarEvsCameraPreviewApp/Android.bp
index 99f0505..fea6aaf 100644
--- a/tests/CarEvsCameraPreviewApp/Android.bp
+++ b/tests/CarEvsCameraPreviewApp/Android.bp
@@ -26,8 +26,8 @@
 
     resource_dirs: ["res"],
 
-    // This app uses system APIs.
-    sdk_version: "system_current",
+    // registerReceiverForAllUsers() is a hidden api.
+    platform_apis: true,
 
     certificate: "platform",
 
diff --git a/tests/CarEvsCameraPreviewApp/AndroidManifest.xml b/tests/CarEvsCameraPreviewApp/AndroidManifest.xml
index 6e4c254..9b5b5b1 100644
--- a/tests/CarEvsCameraPreviewApp/AndroidManifest.xml
+++ b/tests/CarEvsCameraPreviewApp/AndroidManifest.xml
@@ -24,6 +24,8 @@
     <uses-permission android:name="android.car.permission.MONITOR_CAR_EVS_STATUS" />
 
     <uses-permission android:name="android.permission.INTERNAL_SYSTEM_WINDOW" />
+    <!-- for registerReceiverForAllUsers() -->
+    <uses-permission android:name="android.permission.INTERACT_ACROSS_USERS_FULL" />
 
     <application android:label="@string/app_name"
             android:icon="@drawable/rearview"
diff --git a/tests/CarEvsCameraPreviewApp/src/com/google/android/car/evs/CarEvsCameraPreviewActivity.java b/tests/CarEvsCameraPreviewApp/src/com/google/android/car/evs/CarEvsCameraPreviewActivity.java
index 6ff7940..cd6c840 100644
--- a/tests/CarEvsCameraPreviewApp/src/com/google/android/car/evs/CarEvsCameraPreviewActivity.java
+++ b/tests/CarEvsCameraPreviewApp/src/com/google/android/car/evs/CarEvsCameraPreviewActivity.java
@@ -24,7 +24,10 @@
 import android.car.CarNotConnectedException;
 import android.car.evs.CarEvsBufferDescriptor;
 import android.car.evs.CarEvsManager;
+import android.content.BroadcastReceiver;
+import android.content.Context;
 import android.content.Intent;
+import android.content.IntentFilter;
 import android.graphics.PixelFormat;
 import android.hardware.display.DisplayManager;
 import android.os.Bundle;
@@ -146,11 +149,32 @@
         }
     };
 
+    private final BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() {
+        @Override
+        public void onReceive(Context context, Intent intent) {
+            if (Intent.ACTION_CLOSE_SYSTEM_DIALOGS.equals(intent.getAction())) {
+                finish();
+            } else {
+                Log.e(TAG, "Unexpected intent " + intent);
+            }
+        }
+    };
+
+    // To close the PreviewActiivty when Home button is clicked.
+    private void registerBroadcastReceiver() {
+        IntentFilter filter = new IntentFilter();
+        filter.addAction(Intent.ACTION_CLOSE_SYSTEM_DIALOGS);
+        // Need to register the receiver for all users, because we want to receive the Intent after
+        // the user is changed.
+        registerReceiverForAllUsers(mBroadcastReceiver, filter, null, null);
+    }
+
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         Log.d(TAG, "onCreate");
         super.onCreate(savedInstanceState);
 
+        registerBroadcastReceiver();
         parseExtra(getIntent());
 
         setShowWhenLocked(true);
@@ -256,6 +280,8 @@
             WindowManager wm = getSystemService(WindowManager.class);
             wm.removeView(mRootView);
         }
+
+        unregisterReceiver(mBroadcastReceiver);
     }
 
     private void handleVideoStreamLocked() {