diff options
| author | 2019-03-20 23:44:16 +0000 | |
|---|---|---|
| committer | 2019-03-20 23:44:16 +0000 | |
| commit | 5212157f0b1d2ddefb8dcec3b4195ebcb08d3485 (patch) | |
| tree | de93289c5bd143e7f6e5c502c61a5dee15484852 | |
| parent | 7ae19ecebacb8fa9bf6976914925e9c74dcb412c (diff) | |
| parent | 8e5bf968c15837f048a9c5ae57b379540044e39b (diff) | |
Merge "Fix reading app ops data - framework"
| -rw-r--r-- | api/test-current.txt | 5 | ||||
| -rw-r--r-- | core/java/android/app/AppOpsManager.java | 19 | ||||
| -rw-r--r-- | core/java/com/android/internal/app/IAppOpsService.aidl | 2 | ||||
| -rw-r--r-- | services/core/java/com/android/server/appop/AppOpsService.java | 11 |
4 files changed, 34 insertions, 3 deletions
diff --git a/api/test-current.txt b/api/test-current.txt index 9e8b02ae63e8..e3fea0aef795 100644 --- a/api/test-current.txt +++ b/api/test-current.txt @@ -134,16 +134,19 @@ package android.app { method @RequiresPermission("android.permission.MANAGE_APPOPS") public void addHistoricalOps(@NonNull android.app.AppOpsManager.HistoricalOps); method @RequiresPermission("android.permission.MANAGE_APPOPS") public void clearHistory(); method @RequiresPermission("android.permission.GET_APP_OPS_STATS") public void getHistoricalOps(@NonNull android.app.AppOpsManager.HistoricalOpsRequest, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<android.app.AppOpsManager.HistoricalOps>); - method @RequiresPermission("android.permission.GET_APP_OPS_STATS") public void getHistoricalOpsFromDiskRaw(@NonNull android.app.AppOpsManager.HistoricalOpsRequest, @Nullable java.util.concurrent.Executor, @NonNull java.util.function.Consumer<android.app.AppOpsManager.HistoricalOps>); + method @RequiresPermission("android.permission.MANAGE_APPOPS") public void getHistoricalOpsFromDiskRaw(@NonNull android.app.AppOpsManager.HistoricalOpsRequest, @Nullable java.util.concurrent.Executor, @NonNull java.util.function.Consumer<android.app.AppOpsManager.HistoricalOps>); method public static int getNumOps(); method public static String[] getOpStrs(); method public boolean isOperationActive(int, int, String); method @RequiresPermission("android.permission.MANAGE_APPOPS") public void offsetHistory(long); + method public static int opToDefaultMode(@NonNull String); method public static String opToPermission(int); method public static int permissionToOpCode(String); + method @RequiresPermission("android.permission.MANAGE_APPOPS") public void reloadNonHistoricalState(); method @RequiresPermission("android.permission.MANAGE_APPOPS") public void resetHistoryParameters(); method @RequiresPermission("android.permission.MANAGE_APPOPS") public void setHistoryParameters(int, long, int); method @RequiresPermission("android.permission.MANAGE_APP_OPS_MODES") public void setMode(int, int, String, int); + method @RequiresPermission("android.permission.MANAGE_APP_OPS_MODES") public void setMode(String, int, String, int); method @RequiresPermission("android.permission.MANAGE_APP_OPS_MODES") public void setUidMode(String, int, int); method public void startWatchingActive(@NonNull int[], @NonNull android.app.AppOpsManager.OnOpActiveChangedListener); method public void stopWatchingActive(@NonNull android.app.AppOpsManager.OnOpActiveChangedListener); diff --git a/core/java/android/app/AppOpsManager.java b/core/java/android/app/AppOpsManager.java index 1066fc7598e9..fab61b282c55 100644 --- a/core/java/android/app/AppOpsManager.java +++ b/core/java/android/app/AppOpsManager.java @@ -2153,6 +2153,7 @@ public class AppOpsManager { * * @hide */ + @TestApi @SystemApi public static int opToDefaultMode(@NonNull String appOp) { return opToDefaultMode(strOpToOp(appOp)); @@ -4465,7 +4466,7 @@ public class AppOpsManager { * @hide */ @TestApi - @RequiresPermission(android.Manifest.permission.GET_APP_OPS_STATS) + @RequiresPermission(Manifest.permission.MANAGE_APPOPS) public void getHistoricalOpsFromDiskRaw(@NonNull HistoricalOpsRequest request, @Nullable Executor executor, @NonNull Consumer<HistoricalOps> callback) { Preconditions.checkNotNull(executor, "executor cannot be null"); @@ -4488,6 +4489,21 @@ public class AppOpsManager { } /** + * Reloads the non historical state to allow testing the read/write path. + * + * @hide + */ + @TestApi + @RequiresPermission(Manifest.permission.MANAGE_APPOPS) + public void reloadNonHistoricalState() { + try { + mService.reloadNonHistoricalState(); + } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); + } + } + + /** * Sets given app op in the specified mode for app ops in the UID. * This applies to all apps currently in the UID or installed in * this UID in the future. @@ -4570,6 +4586,7 @@ public class AppOpsManager { * be changed. * @hide */ + @TestApi @SystemApi @RequiresPermission(android.Manifest.permission.MANAGE_APP_OPS_MODES) public void setMode(String op, int uid, String packageName, @Mode int mode) { diff --git a/core/java/com/android/internal/app/IAppOpsService.aidl b/core/java/com/android/internal/app/IAppOpsService.aidl index c4af4c797d37..1c901823566a 100644 --- a/core/java/com/android/internal/app/IAppOpsService.aidl +++ b/core/java/com/android/internal/app/IAppOpsService.aidl @@ -79,4 +79,6 @@ interface IAppOpsService { void stopWatchingNoted(IAppOpsNotedCallback callback); int checkOperationRaw(int code, int uid, String packageName); + + void reloadNonHistoricalState(); } diff --git a/services/core/java/com/android/server/appop/AppOpsService.java b/services/core/java/com/android/server/appop/AppOpsService.java index 9c26526920a0..10b67c1047cf 100644 --- a/services/core/java/com/android/server/appop/AppOpsService.java +++ b/services/core/java/com/android/server/appop/AppOpsService.java @@ -1132,7 +1132,7 @@ public class AppOpsService extends IAppOpsService.Stub { .build(); Preconditions.checkNotNull(callback, "callback cannot be null"); - mContext.enforcePermission(android.Manifest.permission.GET_APP_OPS_STATS, + mContext.enforcePermission(Manifest.permission.MANAGE_APPOPS, Binder.getCallingPid(), Binder.getCallingUid(), "getHistoricalOps"); final String[] opNamesArray = (opNames != null) @@ -1144,6 +1144,14 @@ public class AppOpsService extends IAppOpsService.Stub { } @Override + public void reloadNonHistoricalState() { + mContext.enforcePermission(Manifest.permission.MANAGE_APPOPS, + Binder.getCallingPid(), Binder.getCallingUid(), "reloadNonHistoricalState"); + writeState(); + readState(); + } + + @Override public List<AppOpsManager.PackageOps> getUidOps(int uid, int[] ops) { mContext.enforcePermission(android.Manifest.permission.GET_APP_OPS_STATS, Binder.getCallingPid(), Binder.getCallingUid(), null); @@ -2998,6 +3006,7 @@ public class AppOpsService extends IAppOpsService.Stub { final LongSparseArray keys = op.collectKeys(); if (keys == null || keys.size() <= 0) { + out.endTag(null, "op"); continue; } |