From b573e23b48c5b02e8b69fb49eabbba8ee3bcfd3c Mon Sep 17 00:00:00 2001 From: "rongrong.x.gao" Date: Thu, 2 Mar 2017 17:29:34 +0800 Subject: [PATCH] Launch new Home app when selecting Home app in Settings Launches the newly selected Home app when it has been selected in Default Home app settings. This CL makes the change take effect immediately, instead of when the Home button is pressed. Bug: 70697830 Test: make RunSettingsRoboTests Test: Manual - Change default home app in Settings Change-Id: If7e2956bc6f8ddba0a7e8da48a0d38e3936c57e9 --- .../applications/defaultapps/DefaultHomePicker.java | 9 +++++++++ .../applications/defaultapps/DefaultHomePickerTest.java | 5 ++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/com/android/settings/applications/defaultapps/DefaultHomePicker.java b/src/com/android/settings/applications/defaultapps/DefaultHomePicker.java index dca7ad18584..aebe3435a71 100644 --- a/src/com/android/settings/applications/defaultapps/DefaultHomePicker.java +++ b/src/com/android/settings/applications/defaultapps/DefaultHomePicker.java @@ -18,6 +18,7 @@ package com.android.settings.applications.defaultapps; import android.content.ComponentName; import android.content.Context; +import android.content.Intent; import android.content.IntentFilter; import android.content.pm.ActivityInfo; import android.content.pm.ApplicationInfo; @@ -104,6 +105,14 @@ public class DefaultHomePicker extends DefaultAppPickerFragment { IntentFilter.MATCH_CATEGORY_EMPTY, allComponents.toArray(new ComponentName[0]), component); + + // Launch the new Home app so the change is immediately visible even if + // the Home button is not pressed. + final Context context = getContext(); + Intent i = new Intent(Intent.ACTION_MAIN); + i.addCategory(Intent.CATEGORY_HOME); + i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + context.startActivity(i); return true; } return false; diff --git a/tests/robotests/src/com/android/settings/applications/defaultapps/DefaultHomePickerTest.java b/tests/robotests/src/com/android/settings/applications/defaultapps/DefaultHomePickerTest.java index f425d2fa19e..c024e3a534a 100644 --- a/tests/robotests/src/com/android/settings/applications/defaultapps/DefaultHomePickerTest.java +++ b/tests/robotests/src/com/android/settings/applications/defaultapps/DefaultHomePickerTest.java @@ -73,6 +73,7 @@ public class DefaultHomePickerTest { @Mock private PackageManager mPackageManager; + private Context mContext; private DefaultHomePicker mPicker; @Before @@ -85,7 +86,8 @@ public class DefaultHomePickerTest { mPicker.onAttach((Context) mActivity); ReflectionHelpers.setField(mPicker, "mPm", mPackageManagerWrapper); - doReturn(RuntimeEnvironment.application).when(mPicker).getContext(); + mContext = spy(RuntimeEnvironment.application); + doReturn(mContext).when(mPicker).getContext(); } @Test @@ -94,6 +96,7 @@ public class DefaultHomePickerTest { verify(mPackageManagerWrapper).replacePreferredActivity(any(IntentFilter.class), anyInt(), any(ComponentName[].class), any(ComponentName.class)); + verify(mContext).startActivity(any()); } @Test