Loading cmds/am/src/com/android/commands/am/Am.java +1 −1 Original line number Diff line number Diff line Loading @@ -1688,7 +1688,7 @@ public class Am extends BaseCommand { private void runPackageImportance() throws Exception { String packageName = nextArgRequired(); try { int procState = mAm.getPackageProcessState(packageName); int procState = mAm.getPackageProcessState(packageName, "com.android.shell"); System.out.println( ActivityManager.RunningAppProcessInfo.procStateToImportance(procState)); } catch (RemoteException e) { Loading core/java/android/app/ActivityManager.java +2 −1 Original line number Diff line number Diff line Loading @@ -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; Loading core/java/android/app/ActivityManagerNative.java +5 −2 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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(); Loading core/java/android/app/IActivityManager.java +2 −1 Original line number Diff line number Diff line Loading @@ -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; Loading services/core/java/com/android/server/am/ActivityManagerService.java +16 −3 Original line number Diff line number Diff line Loading @@ -3583,10 +3583,23 @@ public final class ActivityManagerService extends ActivityManagerNative } } private boolean hasUsageStatsPermission(String callingPackage) { final int mode = mAppOpsService.checkOperation(AppOpsManager.OP_GET_USAGE_STATS, Binder.getCallingUid(), callingPackage); if (mode == AppOpsManager.MODE_DEFAULT) { return checkCallingPermission(Manifest.permission.PACKAGE_USAGE_STATS) == PackageManager.PERMISSION_GRANTED; } return mode == AppOpsManager.MODE_ALLOWED; } @Override public int getPackageProcessState(String packageName) { public int getPackageProcessState(String packageName, String callingPackage) { if (!hasUsageStatsPermission(callingPackage)) { enforceCallingPermission(android.Manifest.permission.GET_PACKAGE_IMPORTANCE, "getPackageProcessState"); } int procState = ActivityManager.PROCESS_STATE_NONEXISTENT; synchronized (this) { for (int i=mLruProcesses.size()-1; i>=0; i--) { Loading Loading
cmds/am/src/com/android/commands/am/Am.java +1 −1 Original line number Diff line number Diff line Loading @@ -1688,7 +1688,7 @@ public class Am extends BaseCommand { private void runPackageImportance() throws Exception { String packageName = nextArgRequired(); try { int procState = mAm.getPackageProcessState(packageName); int procState = mAm.getPackageProcessState(packageName, "com.android.shell"); System.out.println( ActivityManager.RunningAppProcessInfo.procStateToImportance(procState)); } catch (RemoteException e) { Loading
core/java/android/app/ActivityManager.java +2 −1 Original line number Diff line number Diff line Loading @@ -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; Loading
core/java/android/app/ActivityManagerNative.java +5 −2 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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(); Loading
core/java/android/app/IActivityManager.java +2 −1 Original line number Diff line number Diff line Loading @@ -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; Loading
services/core/java/com/android/server/am/ActivityManagerService.java +16 −3 Original line number Diff line number Diff line Loading @@ -3583,10 +3583,23 @@ public final class ActivityManagerService extends ActivityManagerNative } } private boolean hasUsageStatsPermission(String callingPackage) { final int mode = mAppOpsService.checkOperation(AppOpsManager.OP_GET_USAGE_STATS, Binder.getCallingUid(), callingPackage); if (mode == AppOpsManager.MODE_DEFAULT) { return checkCallingPermission(Manifest.permission.PACKAGE_USAGE_STATS) == PackageManager.PERMISSION_GRANTED; } return mode == AppOpsManager.MODE_ALLOWED; } @Override public int getPackageProcessState(String packageName) { public int getPackageProcessState(String packageName, String callingPackage) { if (!hasUsageStatsPermission(callingPackage)) { enforceCallingPermission(android.Manifest.permission.GET_PACKAGE_IMPORTANCE, "getPackageProcessState"); } int procState = ActivityManager.PROCESS_STATE_NONEXISTENT; synchronized (this) { for (int i=mLruProcesses.size()-1; i>=0; i--) { Loading