diff options
| author | Adam Lesinski <adamlesinski@google.com> | 2015-06-24 13:24:35 -0700 |
|---|---|---|
| committer | Adam Lesinski <adamlesinski@google.com> | 2015-06-24 13:35:46 -0700 |
| commit | c30454c10457fe034a861b4bf19fd1fc240bd893 (patch) | |
| tree | d3827fd7ad2ed36dd3fa3e9997e8c14df336ca2b /core/java/android | |
| parent | 6b0f384f0042c21129466c100e20aec1a325a8da (diff) | |
Allow callers holding PACKAGE_USAGE_STATS permission to call ActivityManager#getPackageImportance()
Bug:22055550
Change-Id: I1e732e95698daf44bcb223cafde3d3c22746d232
Diffstat (limited to 'core/java/android')
| -rw-r--r-- | core/java/android/app/ActivityManager.java | 3 | ||||
| -rw-r--r-- | core/java/android/app/ActivityManagerNative.java | 7 | ||||
| -rw-r--r-- | core/java/android/app/IActivityManager.java | 3 |
3 files changed, 9 insertions, 4 deletions
diff --git a/core/java/android/app/ActivityManager.java b/core/java/android/app/ActivityManager.java index b65593d684a7..9ca206a42c00 100644 --- a/core/java/android/app/ActivityManager.java +++ b/core/java/android/app/ActivityManager.java @@ -2345,7 +2345,8 @@ public class ActivityManager { @SystemApi public int getPackageImportance(String packageName) { try { - int procState = ActivityManagerNative.getDefault().getPackageProcessState(packageName); + int procState = ActivityManagerNative.getDefault().getPackageProcessState(packageName, + mContext.getOpPackageName()); return RunningAppProcessInfo.procStateToImportance(procState); } catch (RemoteException e) { return RunningAppProcessInfo.IMPORTANCE_GONE; diff --git a/core/java/android/app/ActivityManagerNative.java b/core/java/android/app/ActivityManagerNative.java index 680feae0b831..3035e3d94d77 100644 --- a/core/java/android/app/ActivityManagerNative.java +++ b/core/java/android/app/ActivityManagerNative.java @@ -2539,7 +2539,8 @@ public abstract class ActivityManagerNative extends Binder implements IActivityM case GET_PACKAGE_PROCESS_STATE_TRANSACTION: { data.enforceInterface(IActivityManager.descriptor); String pkg = data.readString(); - int res = getPackageProcessState(pkg); + String callingPackage = data.readString(); + int res = getPackageProcessState(pkg, callingPackage); reply.writeNoException(); reply.writeInt(res); return true; @@ -5868,11 +5869,13 @@ class ActivityManagerProxy implements IActivityManager } @Override - public int getPackageProcessState(String packageName) throws RemoteException { + public int getPackageProcessState(String packageName, String callingPackage) + throws RemoteException { Parcel data = Parcel.obtain(); Parcel reply = Parcel.obtain(); data.writeInterfaceToken(IActivityManager.descriptor); data.writeString(packageName); + data.writeString(callingPackage); mRemote.transact(GET_PACKAGE_PROCESS_STATE_TRANSACTION, data, reply, 0); reply.readException(); int res = reply.readInt(); diff --git a/core/java/android/app/IActivityManager.java b/core/java/android/app/IActivityManager.java index e7f7e13b99f0..0328708ff559 100644 --- a/core/java/android/app/IActivityManager.java +++ b/core/java/android/app/IActivityManager.java @@ -503,7 +503,8 @@ public interface IActivityManager extends IInterface { public void updateLockTaskPackages(int userId, String[] packages) throws RemoteException; public void updateDeviceOwner(String packageName) throws RemoteException; - public int getPackageProcessState(String packageName) throws RemoteException; + public int getPackageProcessState(String packageName, String callingPackage) + throws RemoteException; public boolean setProcessMemoryTrimLevel(String process, int uid, int level) throws RemoteException; |
