diff options
| author | 2023-05-10 11:02:04 +0000 | |
|---|---|---|
| committer | 2023-05-10 11:02:04 +0000 | |
| commit | a08ca180432ad9617a02feeafeaf2faa675b4fa5 (patch) | |
| tree | fd880b14c8ce6487c5caf8fbebf9a9d651f6fbed | |
| parent | 1bdf6d26f2b7aa6d6b316f8a2d39d3e2646d5ccc (diff) | |
| parent | 7fb1ca4cb24dbe7bb267f6d00300f4191eea973f (diff) | |
Merge "Adding a way to communicate user space for AppOp changes." into udc-dev
| -rw-r--r-- | core/java/android/app/AppOpsManager.java | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/core/java/android/app/AppOpsManager.java b/core/java/android/app/AppOpsManager.java index 0e5cbe228c1b..ba5a9f741756 100644 --- a/core/java/android/app/AppOpsManager.java +++ b/core/java/android/app/AppOpsManager.java @@ -7089,6 +7089,26 @@ public class AppOpsManager { */ public interface OnOpChangedListener { public void onOpChanged(String op, String packageName); + + /** + * Implementations can override this method to add handling logic for AppOp changes. + * + * Normally, listeners to AppOp changes work in the same User Space as the App whose Op + * has changed. However, in some case listeners can have a single instance responsible for + * multiple users. (For ex single Media Provider instance in user 0 is responsible for both + * cloned and user 0 spaces). For handling such cases correctly, listeners need to be + * passed userId in addition to PackageName and Op. + + * The default impl is to fallback onto {@link #onOpChanged(String, String) + * + * @param op The Op that changed. + * @param packageName Package of the app whose Op changed. + * @param userId User Space of the app whose Op changed. + * @hide + */ + default void onOpChanged(@NonNull String op, @NonNull String packageName, int userId) { + onOpChanged(op, packageName); + } } /** @@ -7785,7 +7805,9 @@ public class AppOpsManager { ((OnOpChangedInternalListener)callback).onOpChanged(op, packageName); } if (sAppOpInfos[op].name != null) { - callback.onOpChanged(sAppOpInfos[op].name, packageName); + + callback.onOpChanged(sAppOpInfos[op].name, packageName, + UserHandle.getUserId(uid)); } } }; |