Methods Summary |
---|
public android.app.TaskStackBuilder | addNextIntent(android.content.Intent nextIntent)Add a new Intent to the task stack. The most recently added Intent will invoke
the Activity at the top of the final task stack.
mIntents.add(nextIntent);
return this;
|
public android.app.TaskStackBuilder | addNextIntentWithParentStack(android.content.Intent nextIntent)Add a new Intent with the resolved chain of parents for the target activity to
the task stack.
This is equivalent to calling {@link #addParentStack(ComponentName) addParentStack}
with the resolved ComponentName of nextIntent (if it can be resolved), followed by
{@link #addNextIntent(Intent) addNextIntent} with nextIntent.
ComponentName target = nextIntent.getComponent();
if (target == null) {
target = nextIntent.resolveActivity(mSourceContext.getPackageManager());
}
if (target != null) {
addParentStack(target);
}
addNextIntent(nextIntent);
return this;
|
public android.app.TaskStackBuilder | addParentStack(Activity sourceActivity)Add the activity parent chain as specified by the
{@link Activity#getParentActivityIntent() getParentActivityIntent()} method of the activity
specified and the {@link android.R.attr#parentActivityName parentActivityName} attributes
of each successive activity (or activity-alias) element in the application's manifest
to the task stack builder.
final Intent parent = sourceActivity.getParentActivityIntent();
if (parent != null) {
// We have the actual parent intent, build the rest from static metadata
// then add the direct parent intent to the end.
ComponentName target = parent.getComponent();
if (target == null) {
target = parent.resolveActivity(mSourceContext.getPackageManager());
}
addParentStack(target);
addNextIntent(parent);
}
return this;
|
public android.app.TaskStackBuilder | addParentStack(java.lang.Class sourceActivityClass)Add the activity parent chain as specified by the
{@link android.R.attr#parentActivityName parentActivityName} attribute of the activity
(or activity-alias) element in the application's manifest to the task stack builder.
return addParentStack(new ComponentName(mSourceContext, sourceActivityClass));
|
public android.app.TaskStackBuilder | addParentStack(android.content.ComponentName sourceActivityName)Add the activity parent chain as specified by the
{@link android.R.attr#parentActivityName parentActivityName} attribute of the activity
(or activity-alias) element in the application's manifest to the task stack builder.
final int insertAt = mIntents.size();
PackageManager pm = mSourceContext.getPackageManager();
try {
ActivityInfo info = pm.getActivityInfo(sourceActivityName, 0);
String parentActivity = info.parentActivityName;
while (parentActivity != null) {
final ComponentName target = new ComponentName(info.packageName, parentActivity);
info = pm.getActivityInfo(target, 0);
parentActivity = info.parentActivityName;
final Intent parent = parentActivity == null && insertAt == 0
? Intent.makeMainActivity(target)
: new Intent().setComponent(target);
mIntents.add(insertAt, parent);
}
} catch (NameNotFoundException e) {
Log.e(TAG, "Bad ComponentName while traversing activity parent metadata");
throw new IllegalArgumentException(e);
}
return this;
|
public static android.app.TaskStackBuilder | create(android.content.Context context)Return a new TaskStackBuilder for launching a fresh task stack consisting
of a series of activities.
return new TaskStackBuilder(context);
|
public android.content.Intent | editIntentAt(int index)Return the intent at the specified index for modification.
Useful if you need to modify the flags or extras of an intent that was previously added,
for example with {@link #addParentStack(Activity)}.
return mIntents.get(index);
|
public int | getIntentCount()
return mIntents.size();
|
public android.content.Intent[] | getIntents()Return an array containing the intents added to this builder. The intent at the
root of the task stack will appear as the first item in the array and the
intent at the top of the stack will appear as the last item.
Intent[] intents = new Intent[mIntents.size()];
if (intents.length == 0) return intents;
intents[0] = new Intent(mIntents.get(0)).addFlags(Intent.FLAG_ACTIVITY_NEW_TASK |
Intent.FLAG_ACTIVITY_CLEAR_TASK |
Intent.FLAG_ACTIVITY_TASK_ON_HOME);
for (int i = 1; i < intents.length; i++) {
intents[i] = new Intent(mIntents.get(i));
}
return intents;
|
public PendingIntent | getPendingIntent(int requestCode, int flags)Obtain a {@link PendingIntent} for launching the task constructed by this builder so far.
return getPendingIntent(requestCode, flags, null);
|
public PendingIntent | getPendingIntent(int requestCode, int flags, android.os.Bundle options)Obtain a {@link PendingIntent} for launching the task constructed by this builder so far.
if (mIntents.isEmpty()) {
throw new IllegalStateException(
"No intents added to TaskStackBuilder; cannot getPendingIntent");
}
return PendingIntent.getActivities(mSourceContext, requestCode, getIntents(),
flags, options);
|
public PendingIntent | getPendingIntent(int requestCode, int flags, android.os.Bundle options, android.os.UserHandle user)
if (mIntents.isEmpty()) {
throw new IllegalStateException(
"No intents added to TaskStackBuilder; cannot getPendingIntent");
}
return PendingIntent.getActivitiesAsUser(mSourceContext, requestCode, getIntents(), flags,
options, user);
|
public void | startActivities()Start the task stack constructed by this builder.
startActivities(null);
|
public void | startActivities(android.os.Bundle options, android.os.UserHandle userHandle)Start the task stack constructed by this builder.
if (mIntents.isEmpty()) {
throw new IllegalStateException(
"No intents added to TaskStackBuilder; cannot startActivities");
}
mSourceContext.startActivitiesAsUser(getIntents(), options, userHandle);
|
public void | startActivities(android.os.Bundle options)Start the task stack constructed by this builder.
startActivities(options, new UserHandle(UserHandle.myUserId()));
|