Loading api/current.txt +1 −0 Original line number Diff line number Diff line Loading @@ -3934,6 +3934,7 @@ package android.app { method public android.app.PendingIntent getRunningServiceControlPanel(android.content.ComponentName) throws java.lang.SecurityException; method public deprecated java.util.List<android.app.ActivityManager.RunningServiceInfo> getRunningServices(int) throws java.lang.SecurityException; method public deprecated java.util.List<android.app.ActivityManager.RunningTaskInfo> getRunningTasks(int) throws java.lang.SecurityException; method public boolean isActivityStartAllowedOnDisplay(android.content.Context, int, android.content.Intent); method public boolean isBackgroundRestricted(); method public deprecated boolean isInLockTaskMode(); method public boolean isLowRamDevice(); core/java/android/app/ActivityManager.java +26 −0 Original line number Diff line number Diff line Loading @@ -1975,6 +1975,32 @@ public class ActivityManager { } } /** * Check if the context is allowed to start an activity on specified display. Some launch * restrictions may apply to secondary displays that are private, virtual, or owned by the * system, in which case an activity start may throw a {@link SecurityException}. Call this * method prior to starting an activity on a secondary display to check if the current context * has access to it. * * @see ActivityOptions#setLaunchDisplayId(int) * @see android.view.Display.FLAG_PRIVATE * @see android.view.Display.TYPE_VIRTUAL * * @param context Source context, from which an activity will be started. * @param displayId Target display id. * @param intent Intent used to launch an activity. * @return {@code true} if a call to start an activity on the target display is allowed for the * provided context and no {@link SecurityException} will be thrown, {@code false} otherwise. */ public boolean isActivityStartAllowedOnDisplay(Context context, int displayId, Intent intent) { try { return getTaskService().isActivityStartAllowedOnDisplay(displayId, intent, intent.resolveTypeIfNeeded(context.getContentResolver()), context.getUserId()); } catch (RemoteException e) { throw new RuntimeException("Failure from system", e); } } /** * Information you can retrieve about a particular Service that is * currently running in the system. Loading core/java/android/app/IActivityTaskManager.aidl +2 −0 Original line number Diff line number Diff line Loading @@ -119,6 +119,8 @@ interface IActivityTaskManager { in Intent intent, in String resolvedType, in IBinder resultTo, in String resultWho, int requestCode, int flags, in ProfilerInfo profilerInfo, in Bundle options, IBinder permissionToken, boolean ignoreTargetSecurity, int userId); boolean isActivityStartAllowedOnDisplay(int displayId, in Intent intent, in String resolvedType, int userId); void unhandledBack(); boolean finishActivity(in IBinder token, int code, in Intent data, int finishTask); Loading services/core/java/com/android/server/wm/ActivityStartController.java +0 −1 Original line number Diff line number Diff line Loading @@ -355,7 +355,6 @@ public class ActivityStartController { ActivityInfo aInfo = mSupervisor.resolveActivity(intent, resolvedTypes[i], 0, null, userId, ActivityStarter.computeResolveFilterUid( callingUid, realCallingUid, UserHandle.USER_NULL)); // TODO: New, check if this is correct aInfo = mService.mAmInternal.getActivityInfoForUser(aInfo, userId); if (aInfo != null && Loading services/core/java/com/android/server/wm/ActivityTaskManagerService.java +36 −0 Original line number Diff line number Diff line Loading @@ -1425,6 +1425,42 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub { } } /** * Public API to check if the client is allowed to start an activity on specified display. * * If the target display is private or virtual, some restrictions will apply. * * @param displayId Target display id. * @param intent Intent used to launch the activity. * @param resolvedType The MIME type of the intent. * @param userId The id of the user for whom the call is made. * @return {@code true} if a call to start an activity on the target display should succeed and * no {@link SecurityException} will be thrown, {@code false} otherwise. */ @Override public final boolean isActivityStartAllowedOnDisplay(int displayId, Intent intent, String resolvedType, int userId) { final int callingUid = Binder.getCallingUid(); final int callingPid = Binder.getCallingPid(); final long origId = Binder.clearCallingIdentity(); try { // Collect information about the target of the Intent. ActivityInfo aInfo = mStackSupervisor.resolveActivity(intent, resolvedType, 0 /* startFlags */, null /* profilerInfo */, userId, ActivityStarter.computeResolveFilterUid(callingUid, callingUid, UserHandle.USER_NULL)); aInfo = mAmInternal.getActivityInfoForUser(aInfo, userId); synchronized (mGlobalLock) { return mStackSupervisor.canPlaceEntityOnDisplay(displayId, callingPid, callingUid, aInfo); } } finally { Binder.restoreCallingIdentity(origId); } } /** * This is the internal entry point for handling Activity.finish(). * Loading Loading
api/current.txt +1 −0 Original line number Diff line number Diff line Loading @@ -3934,6 +3934,7 @@ package android.app { method public android.app.PendingIntent getRunningServiceControlPanel(android.content.ComponentName) throws java.lang.SecurityException; method public deprecated java.util.List<android.app.ActivityManager.RunningServiceInfo> getRunningServices(int) throws java.lang.SecurityException; method public deprecated java.util.List<android.app.ActivityManager.RunningTaskInfo> getRunningTasks(int) throws java.lang.SecurityException; method public boolean isActivityStartAllowedOnDisplay(android.content.Context, int, android.content.Intent); method public boolean isBackgroundRestricted(); method public deprecated boolean isInLockTaskMode(); method public boolean isLowRamDevice();
core/java/android/app/ActivityManager.java +26 −0 Original line number Diff line number Diff line Loading @@ -1975,6 +1975,32 @@ public class ActivityManager { } } /** * Check if the context is allowed to start an activity on specified display. Some launch * restrictions may apply to secondary displays that are private, virtual, or owned by the * system, in which case an activity start may throw a {@link SecurityException}. Call this * method prior to starting an activity on a secondary display to check if the current context * has access to it. * * @see ActivityOptions#setLaunchDisplayId(int) * @see android.view.Display.FLAG_PRIVATE * @see android.view.Display.TYPE_VIRTUAL * * @param context Source context, from which an activity will be started. * @param displayId Target display id. * @param intent Intent used to launch an activity. * @return {@code true} if a call to start an activity on the target display is allowed for the * provided context and no {@link SecurityException} will be thrown, {@code false} otherwise. */ public boolean isActivityStartAllowedOnDisplay(Context context, int displayId, Intent intent) { try { return getTaskService().isActivityStartAllowedOnDisplay(displayId, intent, intent.resolveTypeIfNeeded(context.getContentResolver()), context.getUserId()); } catch (RemoteException e) { throw new RuntimeException("Failure from system", e); } } /** * Information you can retrieve about a particular Service that is * currently running in the system. Loading
core/java/android/app/IActivityTaskManager.aidl +2 −0 Original line number Diff line number Diff line Loading @@ -119,6 +119,8 @@ interface IActivityTaskManager { in Intent intent, in String resolvedType, in IBinder resultTo, in String resultWho, int requestCode, int flags, in ProfilerInfo profilerInfo, in Bundle options, IBinder permissionToken, boolean ignoreTargetSecurity, int userId); boolean isActivityStartAllowedOnDisplay(int displayId, in Intent intent, in String resolvedType, int userId); void unhandledBack(); boolean finishActivity(in IBinder token, int code, in Intent data, int finishTask); Loading
services/core/java/com/android/server/wm/ActivityStartController.java +0 −1 Original line number Diff line number Diff line Loading @@ -355,7 +355,6 @@ public class ActivityStartController { ActivityInfo aInfo = mSupervisor.resolveActivity(intent, resolvedTypes[i], 0, null, userId, ActivityStarter.computeResolveFilterUid( callingUid, realCallingUid, UserHandle.USER_NULL)); // TODO: New, check if this is correct aInfo = mService.mAmInternal.getActivityInfoForUser(aInfo, userId); if (aInfo != null && Loading
services/core/java/com/android/server/wm/ActivityTaskManagerService.java +36 −0 Original line number Diff line number Diff line Loading @@ -1425,6 +1425,42 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub { } } /** * Public API to check if the client is allowed to start an activity on specified display. * * If the target display is private or virtual, some restrictions will apply. * * @param displayId Target display id. * @param intent Intent used to launch the activity. * @param resolvedType The MIME type of the intent. * @param userId The id of the user for whom the call is made. * @return {@code true} if a call to start an activity on the target display should succeed and * no {@link SecurityException} will be thrown, {@code false} otherwise. */ @Override public final boolean isActivityStartAllowedOnDisplay(int displayId, Intent intent, String resolvedType, int userId) { final int callingUid = Binder.getCallingUid(); final int callingPid = Binder.getCallingPid(); final long origId = Binder.clearCallingIdentity(); try { // Collect information about the target of the Intent. ActivityInfo aInfo = mStackSupervisor.resolveActivity(intent, resolvedType, 0 /* startFlags */, null /* profilerInfo */, userId, ActivityStarter.computeResolveFilterUid(callingUid, callingUid, UserHandle.USER_NULL)); aInfo = mAmInternal.getActivityInfoForUser(aInfo, userId); synchronized (mGlobalLock) { return mStackSupervisor.canPlaceEntityOnDisplay(displayId, callingPid, callingUid, aInfo); } } finally { Binder.restoreCallingIdentity(origId); } } /** * This is the internal entry point for handling Activity.finish(). * Loading