diff --git a/src/com/android/settings/display/CustomizableLockScreenUtils.java b/src/com/android/settings/display/CustomizableLockScreenUtils.java index d945652e880..23444364c6a 100644 --- a/src/com/android/settings/display/CustomizableLockScreenUtils.java +++ b/src/com/android/settings/display/CustomizableLockScreenUtils.java @@ -60,6 +60,12 @@ public final class CustomizableLockScreenUtils { @VisibleForTesting static final String AFFORDANCE_NAME = "affordance_name"; + @VisibleForTesting + static final String WALLPAPER_LAUNCH_SOURCE = "com.android.wallpaper.LAUNCH_SOURCE"; + @VisibleForTesting + static final String LAUNCH_SOURCE_SETTINGS = "app_launched_settings"; + + private CustomizableLockScreenUtils() {} /** @@ -163,7 +169,14 @@ public final class CustomizableLockScreenUtils { * activity. */ public static Intent newIntent() { - return new Intent(Intent.ACTION_SET_WALLPAPER); + final Intent intent = new Intent(Intent.ACTION_SET_WALLPAPER); + // By adding the launch source here, we tell our destination (in this case, the wallpaper + // picker app) that it's been launched from within settings. That way, if we are in a + // multi-pane configuration (for example, for large screens), the wallpaper picker app can + // safely skip redirecting to the multi-pane version of its activity, as it's already opened + // within a multi-pane configuration context. + intent.putExtra(WALLPAPER_LAUNCH_SOURCE, LAUNCH_SOURCE_SETTINGS); + return intent; } private static boolean isWallpaperPickerInstalled(Context context) { diff --git a/tests/robotests/src/com/android/settings/display/CustomizableLockScreenQuickAffordancesPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/display/CustomizableLockScreenQuickAffordancesPreferenceControllerTest.java index e92dbe6cb5e..bf316e9d9bc 100644 --- a/tests/robotests/src/com/android/settings/display/CustomizableLockScreenQuickAffordancesPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/display/CustomizableLockScreenQuickAffordancesPreferenceControllerTest.java @@ -114,6 +114,9 @@ public class CustomizableLockScreenQuickAffordancesPreferenceControllerTest { assertThat(intentCaptor.getValue().getPackage()).isEqualTo( mContext.getString(R.string.config_wallpaper_picker_package)); assertThat(intentCaptor.getValue().getAction()).isEqualTo(Intent.ACTION_SET_WALLPAPER); + assertThat(intentCaptor.getValue().getStringExtra( + CustomizableLockScreenUtils.WALLPAPER_LAUNCH_SOURCE)).isEqualTo( + CustomizableLockScreenUtils.LAUNCH_SOURCE_SETTINGS); assertThat(intentCaptor.getValue().getStringExtra("destination")) .isEqualTo("quick_affordances"); }