Expose ActivityOptions.fromBundle() as ModuleApi.
CarService mainline module will use it. Changed to accept NonNull only. Bug: 195598146 Test: atest android.app.cts.ActivityOptionsTest Change-Id: Iae70522fe1ad8b17a01c230ca8afb7a18b83a7ed
This commit is contained in:
@@ -15,6 +15,10 @@ package android.app {
|
||||
method @RequiresPermission(android.Manifest.permission.CHANGE_CONFIGURATION) public boolean updateMccMncConfiguration(@NonNull String, @NonNull String);
|
||||
}
|
||||
|
||||
public class ActivityOptions {
|
||||
method @NonNull public static android.app.ActivityOptions fromBundle(@NonNull android.os.Bundle);
|
||||
}
|
||||
|
||||
public class AppOpsManager {
|
||||
field public static final String OPSTR_NO_ISOLATED_STORAGE = "android:no_isolated_storage";
|
||||
}
|
||||
|
||||
@@ -140,6 +140,7 @@ package android.app {
|
||||
}
|
||||
|
||||
public class ActivityOptions {
|
||||
method @NonNull public static android.app.ActivityOptions fromBundle(@NonNull android.os.Bundle);
|
||||
method @NonNull public static android.app.ActivityOptions makeCustomAnimation(@NonNull android.content.Context, int, int, @Nullable android.os.Handler, @Nullable android.app.ActivityOptions.OnAnimationStartedListener, @Nullable android.app.ActivityOptions.OnAnimationFinishedListener);
|
||||
method @NonNull @RequiresPermission(android.Manifest.permission.START_TASKS_FROM_RECENTS) public static android.app.ActivityOptions makeCustomTaskAnimation(@NonNull android.content.Context, int, int, @Nullable android.os.Handler, @Nullable android.app.ActivityOptions.OnAnimationStartedListener, @Nullable android.app.ActivityOptions.OnAnimationFinishedListener);
|
||||
method public static void setExitTransitionTimeout(long);
|
||||
|
||||
@@ -26,6 +26,7 @@ import android.annotation.IntDef;
|
||||
import android.annotation.NonNull;
|
||||
import android.annotation.Nullable;
|
||||
import android.annotation.RequiresPermission;
|
||||
import android.annotation.SystemApi;
|
||||
import android.annotation.TestApi;
|
||||
import android.app.ExitTransitionCoordinator.ActivityExitTransitionCallbacks;
|
||||
import android.app.ExitTransitionCoordinator.ExitTransitionCallbacks;
|
||||
@@ -1352,9 +1353,17 @@ public class ActivityOptions {
|
||||
return mRemoteTransition;
|
||||
}
|
||||
|
||||
/** @hide */
|
||||
public static ActivityOptions fromBundle(Bundle bOptions) {
|
||||
return bOptions != null ? new ActivityOptions(bOptions) : null;
|
||||
/**
|
||||
* Creates an ActivityOptions from the Bundle generated from {@link ActivityOptions#toBundle()}.
|
||||
* Returns an instance of ActivityOptions populated with options with known keys from the
|
||||
* provided Bundle, stripping out unknown entries.
|
||||
* @hide
|
||||
*/
|
||||
@SystemApi(client = SystemApi.Client.MODULE_LIBRARIES)
|
||||
@TestApi
|
||||
@NonNull
|
||||
public static ActivityOptions fromBundle(@NonNull Bundle bOptions) {
|
||||
return new ActivityOptions(bOptions);
|
||||
}
|
||||
|
||||
/** @hide */
|
||||
|
||||
@@ -187,7 +187,7 @@ public class LaunchActivityItem extends ClientTransactionItem {
|
||||
in.readPersistableBundle(getClass().getClassLoader()),
|
||||
in.createTypedArrayList(ResultInfo.CREATOR),
|
||||
in.createTypedArrayList(ReferrerIntent.CREATOR),
|
||||
ActivityOptions.fromBundle(in.readBundle()), in.readBoolean(),
|
||||
readActivityOptions(in), in.readBoolean(),
|
||||
in.readTypedObject(ProfilerInfo.CREATOR),
|
||||
in.readStrongBinder(),
|
||||
IActivityClientController.Stub.asInterface(in.readStrongBinder()),
|
||||
@@ -196,6 +196,11 @@ public class LaunchActivityItem extends ClientTransactionItem {
|
||||
in.readStrongBinder());
|
||||
}
|
||||
|
||||
private static ActivityOptions readActivityOptions(Parcel in) {
|
||||
Bundle bundle = in.readBundle();
|
||||
return bundle != null ? ActivityOptions.fromBundle(bundle) : null;
|
||||
}
|
||||
|
||||
public static final @NonNull Creator<LaunchActivityItem> CREATOR =
|
||||
new Creator<LaunchActivityItem>() {
|
||||
public LaunchActivityItem createFromParcel(Parcel in) {
|
||||
|
||||
@@ -23,6 +23,7 @@ import android.annotation.Nullable;
|
||||
import android.app.ActivityOptions;
|
||||
import android.app.ActivityThread.ActivityClientRecord;
|
||||
import android.app.ClientTransactionHandler;
|
||||
import android.os.Bundle;
|
||||
import android.os.Parcel;
|
||||
import android.os.Trace;
|
||||
|
||||
@@ -83,7 +84,8 @@ public class StartActivityItem extends ActivityLifecycleItem {
|
||||
|
||||
/** Read from Parcel. */
|
||||
private StartActivityItem(Parcel in) {
|
||||
mActivityOptions = ActivityOptions.fromBundle(in.readBundle());
|
||||
Bundle bundle = in.readBundle();
|
||||
mActivityOptions = bundle != null ? ActivityOptions.fromBundle(bundle) : null;
|
||||
}
|
||||
|
||||
public static final @NonNull Creator<StartActivityItem> CREATOR =
|
||||
|
||||
@@ -352,7 +352,8 @@ public final class PendingIntentRecord extends IIntentSender.Stub {
|
||||
|
||||
// Apply any launch flags from the ActivityOptions. This is to ensure that the caller
|
||||
// can specify a consistent launch mode even if the PendingIntent is immutable
|
||||
final ActivityOptions opts = ActivityOptions.fromBundle(options);
|
||||
final ActivityOptions opts = options != null ? ActivityOptions.fromBundle(options)
|
||||
: null;
|
||||
if (opts != null) {
|
||||
finalIntent.addFlags(opts.getPendingIntentLaunchFlags());
|
||||
}
|
||||
|
||||
@@ -995,11 +995,13 @@ public class LauncherAppsService extends SystemService {
|
||||
// Note the target activity doesn't have to be exported.
|
||||
|
||||
// Flag for bubble
|
||||
ActivityOptions options = ActivityOptions.fromBundle(startActivityOptions);
|
||||
if (options != null && options.isApplyActivityFlagsForBubbles()) {
|
||||
// Flag for bubble to make behaviour match documentLaunchMode=always.
|
||||
intents[0].addFlags(FLAG_ACTIVITY_NEW_DOCUMENT);
|
||||
intents[0].addFlags(FLAG_ACTIVITY_MULTIPLE_TASK);
|
||||
if (startActivityOptions != null) {
|
||||
ActivityOptions options = ActivityOptions.fromBundle(startActivityOptions);
|
||||
if (options.isApplyActivityFlagsForBubbles()) {
|
||||
// Flag for bubble to make behaviour match documentLaunchMode=always.
|
||||
intents[0].addFlags(FLAG_ACTIVITY_NEW_DOCUMENT);
|
||||
intents[0].addFlags(FLAG_ACTIVITY_MULTIPLE_TASK);
|
||||
}
|
||||
}
|
||||
|
||||
intents[0].addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||
|
||||
Reference in New Issue
Block a user