Merge "Allowing ProxyActivityStarter without result." into main
diff --git a/quickstep/src/com/android/launcher3/proxy/ProxyActivityStarter.java b/quickstep/src/com/android/launcher3/proxy/ProxyActivityStarter.java
index 6d90b035..212a5ff 100644
--- a/quickstep/src/com/android/launcher3/proxy/ProxyActivityStarter.java
+++ b/quickstep/src/com/android/launcher3/proxy/ProxyActivityStarter.java
@@ -53,13 +53,10 @@
try {
if (mParams.intent != null) {
- startActivityForResult(mParams.intent, mParams.requestCode, mParams.options);
+ startActivity();
return;
} else if (mParams.intentSender != null) {
- startIntentSenderForResult(mParams.intentSender, mParams.requestCode,
- mParams.fillInIntent, mParams.flagsMask, mParams.flagsValues,
- mParams.extraFlags,
- mParams.options);
+ startIntentSender();
return;
}
} catch (NullPointerException | ActivityNotFoundException | SecurityException
@@ -83,4 +80,26 @@
.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED
| Intent.FLAG_ACTIVITY_CLEAR_TASK);
}
+
+ private void startActivity() throws SendIntentException {
+ if (mParams.requireActivityResult) {
+ startActivityForResult(mParams.intent, mParams.requestCode, mParams.options);
+ } else {
+ startActivity(mParams.intent, mParams.options);
+ finishAndRemoveTask();
+ }
+ }
+
+ private void startIntentSender() throws SendIntentException {
+ if (mParams.requireActivityResult) {
+ startIntentSenderForResult(mParams.intentSender, mParams.requestCode,
+ mParams.fillInIntent, mParams.flagsMask, mParams.flagsValues,
+ mParams.extraFlags,
+ mParams.options);
+ } else {
+ startIntentSender(mParams.intentSender, mParams.fillInIntent, mParams.flagsMask,
+ mParams.flagsValues, mParams.extraFlags, mParams.options);
+ finishAndRemoveTask();
+ }
+ }
}
diff --git a/quickstep/src/com/android/launcher3/uioverrides/ApiWrapper.java b/quickstep/src/com/android/launcher3/uioverrides/ApiWrapper.java
index 3ebc8ed..5c4eb9d 100644
--- a/quickstep/src/com/android/launcher3/uioverrides/ApiWrapper.java
+++ b/quickstep/src/com/android/launcher3/uioverrides/ApiWrapper.java
@@ -138,6 +138,11 @@
|| Flags.enablePrivateSpaceInstallShortcut())) {
StartActivityParams params = new StartActivityParams((PendingIntent) null, 0);
params.intentSender = launcherApps.getAppMarketActivityIntent(packageName, user);
+ ActivityOptions options = ActivityOptions.makeBasic()
+ .setPendingIntentBackgroundActivityStartMode(ActivityOptions
+ .MODE_BACKGROUND_ACTIVITY_START_ALLOWED);
+ params.options = options.toBundle();
+ params.requireActivityResult = false;
return ProxyActivityStarter.getLaunchIntent(context, params);
} else {
return new Intent(Intent.ACTION_VIEW)
diff --git a/src/com/android/launcher3/util/StartActivityParams.java b/src/com/android/launcher3/util/StartActivityParams.java
index b48562f..d66b0a0 100644
--- a/src/com/android/launcher3/util/StartActivityParams.java
+++ b/src/com/android/launcher3/util/StartActivityParams.java
@@ -52,6 +52,7 @@
public int flagsValues;
public int extraFlags;
public Bundle options;
+ public boolean requireActivityResult = true;
public StartActivityParams(Activity activity, int requestCode) {
this(activity.createPendingResult(requestCode, new Intent(),
@@ -74,6 +75,7 @@
flagsValues = parcel.readInt();
extraFlags = parcel.readInt();
options = parcel.readBundle();
+ requireActivityResult = parcel.readInt() != 0;
}
@@ -94,6 +96,7 @@
parcel.writeInt(flagsValues);
parcel.writeInt(extraFlags);
parcel.writeBundle(options);
+ parcel.writeInt(requireActivityResult ? 1 : 0);
}
/** Perform the operation on the pendingIntent. */