Skip to content

Commit 90f2233

Browse files
SubSideagologan
authored andcommitted
Add FLAG_ACTIVITY_NEW_TASK when calling context is not an activity (openid#765)
1 parent d7f2ac9 commit 90f2233

File tree

1 file changed

+18
-2
lines changed

1 file changed

+18
-2
lines changed

library/java/net/openid/appauth/AuthorizationService.java

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import android.app.PendingIntent;
2222
import android.content.ActivityNotFoundException;
2323
import android.content.Context;
24+
import android.content.ContextWrapper;
2425
import android.content.Intent;
2526
import android.net.Uri;
2627
import android.os.AsyncTask;
@@ -336,13 +337,28 @@ private void performAuthManagementRequest(
336337
checkNotNull(customTabsIntent);
337338

338339
Intent authIntent = prepareAuthorizationRequestIntent(request, customTabsIntent);
339-
mContext.startActivity(AuthorizationManagementActivity.createStartIntent(
340+
Intent startIntent = AuthorizationManagementActivity.createStartIntent(
340341
mContext,
341342
request,
342343
authIntent,
343344
completedIntent,
344-
canceledIntent));
345+
canceledIntent);
345346

347+
// Calling start activity from outside an activity requires FLAG_ACTIVITY_NEW_TASK.
348+
if (!isActivity(mContext)) {
349+
startIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
350+
}
351+
mContext.startActivity(startIntent);
352+
}
353+
354+
private boolean isActivity(Context context) {
355+
while (context instanceof ContextWrapper) {
356+
if (context instanceof Activity) {
357+
return true;
358+
}
359+
context = ((ContextWrapper) context).getBaseContext();
360+
}
361+
return false;
346362
}
347363

348364
/**

0 commit comments

Comments
 (0)