From 8ecc69ffcaa28d4daf2f80afee8a38e185e96c00 Mon Sep 17 00:00:00 2001 From: Nate Myren Date: Tue, 6 Sep 2022 15:51:49 -0700 Subject: [PATCH] Add WATCHABLE_NON_PERMISSION_OPS to AppOpsService Add a list of app ops that are not tied to a permission, but should have note events sent to users. Also add RECEIVE_AMBIENT_TRIGGER_AUDIO to systemApi Fixes: 44518166 Test: manual Change-Id: Iff9d3f5a75bee0a65be6cbb0eaa5151d81f8902a --- core/api/system-current.txt | 1 + core/java/android/app/AppOpsManager.java | 1 + .../core/java/com/android/server/appop/AppOpsService.java | 8 ++++++++ 3 files changed, 10 insertions(+) diff --git a/core/api/system-current.txt b/core/api/system-current.txt index a87f2e2bdaee5..f09244ad7859d 100644 --- a/core/api/system-current.txt +++ b/core/api/system-current.txt @@ -573,6 +573,7 @@ package android.app { field public static final String OPSTR_READ_MEDIA_AUDIO = "android:read_media_audio"; field public static final String OPSTR_READ_MEDIA_IMAGES = "android:read_media_images"; field public static final String OPSTR_READ_MEDIA_VIDEO = "android:read_media_video"; + field public static final String OPSTR_RECEIVE_AMBIENT_TRIGGER_AUDIO = "android:receive_ambient_trigger_audio"; field public static final String OPSTR_RECEIVE_EMERGENCY_BROADCAST = "android:receive_emergency_broadcast"; field public static final String OPSTR_REQUEST_DELETE_PACKAGES = "android:request_delete_packages"; field public static final String OPSTR_REQUEST_INSTALL_PACKAGES = "android:request_install_packages"; diff --git a/core/java/android/app/AppOpsManager.java b/core/java/android/app/AppOpsManager.java index 2a5916dfb6a8f..bc59d60bebd13 100644 --- a/core/java/android/app/AppOpsManager.java +++ b/core/java/android/app/AppOpsManager.java @@ -1812,6 +1812,7 @@ public class AppOpsManager { * * @hide */ + @SystemApi public static final String OPSTR_RECEIVE_AMBIENT_TRIGGER_AUDIO = "android:receive_ambient_trigger_audio"; diff --git a/services/core/java/com/android/server/appop/AppOpsService.java b/services/core/java/com/android/server/appop/AppOpsService.java index 248e35e6964d2..26d98934a6627 100644 --- a/services/core/java/com/android/server/appop/AppOpsService.java +++ b/services/core/java/com/android/server/appop/AppOpsService.java @@ -267,6 +267,10 @@ public class AppOpsService extends IAppOpsService.Stub implements PersistenceSch OP_CAMERA, }; + private static final int[] WATCHABLE_NON_PERMISSION_OPS = { + OP_RECEIVE_AMBIENT_TRIGGER_AUDIO, + }; + private static final int MAX_UNFORWARDED_OPS = 10; private static final int MAX_UNUSED_POOLED_OBJECTS = 3; private static final int RARELY_USED_PACKAGES_INITIALIZATION_DELAY_MILLIS = 300000; @@ -4242,6 +4246,10 @@ public class AppOpsService extends IAppOpsService.Stub implements PersistenceSch public boolean shouldCollectNotes(int opCode) { Preconditions.checkArgumentInRange(opCode, 0, _NUM_OP - 1, "opCode"); + if (ArrayUtils.contains(WATCHABLE_NON_PERMISSION_OPS, opCode)) { + return true; + } + String perm = AppOpsManager.opToPermission(opCode); if (perm == null) { return false;