summaryrefslogtreecommitdiff
path: root/core/java/android
diff options
context:
space:
mode:
authorAdam Lesinski <adamlesinski@google.com>2015-06-24 13:24:35 -0700
committerAdam Lesinski <adamlesinski@google.com>2015-06-24 13:35:46 -0700
commitc30454c10457fe034a861b4bf19fd1fc240bd893 (patch)
treed3827fd7ad2ed36dd3fa3e9997e8c14df336ca2b /core/java/android
parent6b0f384f0042c21129466c100e20aec1a325a8da (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.java3
-rw-r--r--core/java/android/app/ActivityManagerNative.java7
-rw-r--r--core/java/android/app/IActivityManager.java3
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;