Loading core/java/android/app/AppOpsManager.java +8 −0 Original line number Diff line number Diff line Loading @@ -187,6 +187,14 @@ public class AppOpsManager { return null; } public List<AppOpsManager.PackageOps> getOpsForPackage(int uid, String packageName, int[] ops) { try { return mService.getOpsForPackage(uid, packageName, ops); } catch (RemoteException e) { } return null; } public int checkOp(int op, int uid, String packageName) { try { int mode = mService.checkOperation(op, uid, packageName); Loading core/java/com/android/internal/app/IAppOpsService.aidl +1 −0 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ import android.app.AppOpsManager; interface IAppOpsService { List<AppOpsManager.PackageOps> getPackagesForOps(in int[] ops); List<AppOpsManager.PackageOps> getOpsForPackage(int uid, String packageName, in int[] ops); int checkOperation(int code, int uid, String packageName); int noteOperation(int code, int uid, String packageName); int startOperation(int code, int uid, String packageName); Loading services/java/com/android/server/AppOpsService.java +56 −21 Original line number Diff line number Diff line Loading @@ -127,15 +127,7 @@ public class AppOpsService extends IAppOpsService.Stub { } } @Override public List<AppOpsManager.PackageOps> getPackagesForOps(int[] ops) { mContext.enforcePermission(android.Manifest.permission.GET_APP_OPS_STATS, Binder.getCallingPid(), Binder.getCallingUid(), null); ArrayList<AppOpsManager.PackageOps> res = null; synchronized (this) { for (int i=0; i<mUidOps.size(); i++) { HashMap<String, Ops> packages = mUidOps.valueAt(i); for (Ops pkgOps : packages.values()) { private ArrayList<AppOpsManager.OpEntry> collectOps(Ops pkgOps, int[] ops) { ArrayList<AppOpsManager.OpEntry> resOps = null; if (ops == null) { resOps = new ArrayList<AppOpsManager.OpEntry>(); Loading @@ -156,6 +148,19 @@ public class AppOpsService extends IAppOpsService.Stub { } } } return resOps; } @Override public List<AppOpsManager.PackageOps> getPackagesForOps(int[] ops) { mContext.enforcePermission(android.Manifest.permission.GET_APP_OPS_STATS, Binder.getCallingPid(), Binder.getCallingUid(), null); ArrayList<AppOpsManager.PackageOps> res = null; synchronized (this) { for (int i=0; i<mUidOps.size(); i++) { HashMap<String, Ops> packages = mUidOps.valueAt(i); for (Ops pkgOps : packages.values()) { ArrayList<AppOpsManager.OpEntry> resOps = collectOps(pkgOps, ops); if (resOps != null) { if (res == null) { res = new ArrayList<AppOpsManager.PackageOps>(); Loading @@ -170,6 +175,28 @@ public class AppOpsService extends IAppOpsService.Stub { return res; } @Override public List<AppOpsManager.PackageOps> getOpsForPackage(int uid, String packageName, int[] ops) { mContext.enforcePermission(android.Manifest.permission.GET_APP_OPS_STATS, Binder.getCallingPid(), Binder.getCallingUid(), null); synchronized (this) { Ops pkgOps = getOpsLocked(uid, packageName, false); if (pkgOps == null) { return null; } ArrayList<AppOpsManager.OpEntry> resOps = collectOps(pkgOps, ops); if (resOps == null) { return null; } ArrayList<AppOpsManager.PackageOps> res = new ArrayList<AppOpsManager.PackageOps>(); AppOpsManager.PackageOps resPackage = new AppOpsManager.PackageOps( pkgOps.packageName, pkgOps.uid, resOps); res.add(resPackage); return res; } } @Override public int checkOperation(int code, int uid, String packageName) { uid = handleIncomingUid(uid); Loading Loading @@ -252,7 +279,7 @@ public class AppOpsService extends IAppOpsService.Stub { return uid; } private Op getOpLocked(int code, int uid, String packageName, boolean edit) { private Ops getOpsLocked(int uid, String packageName, boolean edit) { HashMap<String, Ops> pkgOps = mUidOps.get(uid); if (pkgOps == null) { if (!edit) { Loading Loading @@ -289,6 +316,14 @@ public class AppOpsService extends IAppOpsService.Stub { ops = new Ops(packageName, uid); pkgOps.put(packageName, ops); } return ops; } private Op getOpLocked(int code, int uid, String packageName, boolean edit) { Ops ops = getOpsLocked(uid, packageName, edit); if (ops == null) { return null; } Op op = ops.get(code); if (op == null) { if (!edit) { Loading Loading
core/java/android/app/AppOpsManager.java +8 −0 Original line number Diff line number Diff line Loading @@ -187,6 +187,14 @@ public class AppOpsManager { return null; } public List<AppOpsManager.PackageOps> getOpsForPackage(int uid, String packageName, int[] ops) { try { return mService.getOpsForPackage(uid, packageName, ops); } catch (RemoteException e) { } return null; } public int checkOp(int op, int uid, String packageName) { try { int mode = mService.checkOperation(op, uid, packageName); Loading
core/java/com/android/internal/app/IAppOpsService.aidl +1 −0 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ import android.app.AppOpsManager; interface IAppOpsService { List<AppOpsManager.PackageOps> getPackagesForOps(in int[] ops); List<AppOpsManager.PackageOps> getOpsForPackage(int uid, String packageName, in int[] ops); int checkOperation(int code, int uid, String packageName); int noteOperation(int code, int uid, String packageName); int startOperation(int code, int uid, String packageName); Loading
services/java/com/android/server/AppOpsService.java +56 −21 Original line number Diff line number Diff line Loading @@ -127,15 +127,7 @@ public class AppOpsService extends IAppOpsService.Stub { } } @Override public List<AppOpsManager.PackageOps> getPackagesForOps(int[] ops) { mContext.enforcePermission(android.Manifest.permission.GET_APP_OPS_STATS, Binder.getCallingPid(), Binder.getCallingUid(), null); ArrayList<AppOpsManager.PackageOps> res = null; synchronized (this) { for (int i=0; i<mUidOps.size(); i++) { HashMap<String, Ops> packages = mUidOps.valueAt(i); for (Ops pkgOps : packages.values()) { private ArrayList<AppOpsManager.OpEntry> collectOps(Ops pkgOps, int[] ops) { ArrayList<AppOpsManager.OpEntry> resOps = null; if (ops == null) { resOps = new ArrayList<AppOpsManager.OpEntry>(); Loading @@ -156,6 +148,19 @@ public class AppOpsService extends IAppOpsService.Stub { } } } return resOps; } @Override public List<AppOpsManager.PackageOps> getPackagesForOps(int[] ops) { mContext.enforcePermission(android.Manifest.permission.GET_APP_OPS_STATS, Binder.getCallingPid(), Binder.getCallingUid(), null); ArrayList<AppOpsManager.PackageOps> res = null; synchronized (this) { for (int i=0; i<mUidOps.size(); i++) { HashMap<String, Ops> packages = mUidOps.valueAt(i); for (Ops pkgOps : packages.values()) { ArrayList<AppOpsManager.OpEntry> resOps = collectOps(pkgOps, ops); if (resOps != null) { if (res == null) { res = new ArrayList<AppOpsManager.PackageOps>(); Loading @@ -170,6 +175,28 @@ public class AppOpsService extends IAppOpsService.Stub { return res; } @Override public List<AppOpsManager.PackageOps> getOpsForPackage(int uid, String packageName, int[] ops) { mContext.enforcePermission(android.Manifest.permission.GET_APP_OPS_STATS, Binder.getCallingPid(), Binder.getCallingUid(), null); synchronized (this) { Ops pkgOps = getOpsLocked(uid, packageName, false); if (pkgOps == null) { return null; } ArrayList<AppOpsManager.OpEntry> resOps = collectOps(pkgOps, ops); if (resOps == null) { return null; } ArrayList<AppOpsManager.PackageOps> res = new ArrayList<AppOpsManager.PackageOps>(); AppOpsManager.PackageOps resPackage = new AppOpsManager.PackageOps( pkgOps.packageName, pkgOps.uid, resOps); res.add(resPackage); return res; } } @Override public int checkOperation(int code, int uid, String packageName) { uid = handleIncomingUid(uid); Loading Loading @@ -252,7 +279,7 @@ public class AppOpsService extends IAppOpsService.Stub { return uid; } private Op getOpLocked(int code, int uid, String packageName, boolean edit) { private Ops getOpsLocked(int uid, String packageName, boolean edit) { HashMap<String, Ops> pkgOps = mUidOps.get(uid); if (pkgOps == null) { if (!edit) { Loading Loading @@ -289,6 +316,14 @@ public class AppOpsService extends IAppOpsService.Stub { ops = new Ops(packageName, uid); pkgOps.put(packageName, ops); } return ops; } private Op getOpLocked(int code, int uid, String packageName, boolean edit) { Ops ops = getOpsLocked(uid, packageName, edit); if (ops == null) { return null; } Op op = ops.get(code); if (op == null) { if (!edit) { Loading