diff --git a/src/com/android/settings/applications/appinfo/AppInfoDashboardFragment.java b/src/com/android/settings/applications/appinfo/AppInfoDashboardFragment.java index f41c991a98c..2024c2ab885 100755 --- a/src/com/android/settings/applications/appinfo/AppInfoDashboardFragment.java +++ b/src/com/android/settings/applications/appinfo/AppInfoDashboardFragment.java @@ -205,16 +205,22 @@ public class AppInfoDashboardFragment extends DashboardFragment mDpm = (DevicePolicyManager) activity.getSystemService(Context.DEVICE_POLICY_SERVICE); mUserManager = (UserManager) activity.getSystemService(Context.USER_SERVICE); mPm = activity.getPackageManager(); - if (!ensurePackageInfoAvailable(activity)) { return; } - startListeningToPackageRemove(); setHasOptionsMenu(true); } + @Override + public void onCreatePreferences(Bundle savedInstanceState, String rootKey) { + if (!ensurePackageInfoAvailable(getActivity())) { + return; + } + super.onCreatePreferences(savedInstanceState, rootKey); + } + @Override public void onDestroy() { stopListeningToPackageRemove(); diff --git a/tests/robotests/src/com/android/settings/applications/appinfo/AppInfoDashboardFragmentTest.java b/tests/robotests/src/com/android/settings/applications/appinfo/AppInfoDashboardFragmentTest.java index ce8ef15f9cc..79d8a6d0fa3 100644 --- a/tests/robotests/src/com/android/settings/applications/appinfo/AppInfoDashboardFragmentTest.java +++ b/tests/robotests/src/com/android/settings/applications/appinfo/AppInfoDashboardFragmentTest.java @@ -170,7 +170,7 @@ public final class AppInfoDashboardFragmentTest { } @Test - public void launchFragment_hasNoPackageInfo_shouldFinish() { + public void ensurePackageInfoAvailable_hasNoPackageInfo_shouldFinish() { ReflectionHelpers.setField(mFragment, "mPackageInfo", null); assertThat(mFragment.ensurePackageInfoAvailable(mActivity)).isFalse(); @@ -178,7 +178,7 @@ public final class AppInfoDashboardFragmentTest { } @Test - public void launchFragment_hasPackageInfo_shouldReturnTrue() { + public void ensurePackageInfoAvailable_hasPackageInfo_shouldReturnTrue() { final PackageInfo packageInfo = mock(PackageInfo.class); ReflectionHelpers.setField(mFragment, "mPackageInfo", packageInfo); @@ -186,6 +186,16 @@ public final class AppInfoDashboardFragmentTest { verify(mActivity, never()).finishAndRemoveTask(); } + @Test + public void createPreference_hasNoPackageInfo_shouldSkip() { + ReflectionHelpers.setField(mFragment, "mPackageInfo", null); + + mFragment.onCreatePreferences(new Bundle(), "root_key"); + + verify(mActivity).finishAndRemoveTask(); + verify(mFragment, never()).getPreferenceScreen(); + } + @Test public void packageSizeChange_isOtherPackage_shouldNotRefreshUi() { ReflectionHelpers.setField(mFragment, "mPackageName", PACKAGE_NAME);