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