From 8b49a5c0aa18f70bc59b972e888d5ad455e4d7ca Mon Sep 17 00:00:00 2001 From: Bryce Lee Date: Tue, 2 May 2017 16:58:22 -0700 Subject: [PATCH] Disallow starting activities without new task from non-activity context. A change to the conditions to allow such behavior when a task id was specified now allows for all non-activity contexts to start activities as long as no options bundle is specified. This changelist corrects the condition. Change-Id: Ifaff4fc6d875ba74ec532b3e3ce91c6aa3ca3362 Fixes: 32625589 Test: cts/hostsidetests/services/activityandwindowmanager/util/run-test CtsServicesHostTestCases android.server.cts.StartActivityTests --- core/java/android/app/ContextImpl.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/core/java/android/app/ContextImpl.java b/core/java/android/app/ContextImpl.java index 424e783603aee..8469931c91cba 100644 --- a/core/java/android/app/ContextImpl.java +++ b/core/java/android/app/ContextImpl.java @@ -843,8 +843,9 @@ class ContextImpl extends Context { // Calling start activity from outside an activity without FLAG_ACTIVITY_NEW_TASK is // generally not allowed, except if the caller specifies the task id the activity should // be launched in. - if ((intent.getFlags()&Intent.FLAG_ACTIVITY_NEW_TASK) == 0 - && options != null && ActivityOptions.fromBundle(options).getLaunchTaskId() == -1) { + if ((intent.getFlags() & Intent.FLAG_ACTIVITY_NEW_TASK) == 0 + && (options == null + || ActivityOptions.fromBundle(options).getLaunchTaskId() == -1)) { throw new AndroidRuntimeException( "Calling startActivity() from outside of an Activity " + " context requires the FLAG_ACTIVITY_NEW_TASK flag."