diff --git a/src/com/android/settings/applications/AppInfoBase.java b/src/com/android/settings/applications/AppInfoBase.java index a93bfbd4fef..3e83856c0e1 100644 --- a/src/com/android/settings/applications/AppInfoBase.java +++ b/src/com/android/settings/applications/AppInfoBase.java @@ -214,7 +214,9 @@ public abstract class AppInfoBase extends SettingsPreferenceFragment @Override public void onPackageListChanged() { - refreshUi(); + if (!refreshUi()) { + setIntentAndFinish(true, true); + } } public static void startAppInfoFragment(Class fragment, int titleRes, diff --git a/src/com/android/settings/applications/UsageAccessDetails.java b/src/com/android/settings/applications/UsageAccessDetails.java index e40ae37c23f..253ddfdbbba 100644 --- a/src/com/android/settings/applications/UsageAccessDetails.java +++ b/src/com/android/settings/applications/UsageAccessDetails.java @@ -137,6 +137,9 @@ public class UsageAccessDetails extends AppInfoWithHeader implements OnPreferenc @Override protected boolean refreshUi() { + if (mPackageInfo == null) { + return false; + } mUsageState = mUsageBridge.getUsageInfo(mPackageName, mPackageInfo.applicationInfo.uid); diff --git a/tests/robotests/src/com/android/settings/applications/UsageAccessDetailsTest.java b/tests/robotests/src/com/android/settings/applications/UsageAccessDetailsTest.java index 532a92350fc..fba02c3d67d 100644 --- a/tests/robotests/src/com/android/settings/applications/UsageAccessDetailsTest.java +++ b/tests/robotests/src/com/android/settings/applications/UsageAccessDetailsTest.java @@ -17,6 +17,7 @@ package com.android.settings.applications; import android.content.Context; +import android.os.RemoteException; import com.android.internal.logging.nano.MetricsProto; import com.android.settings.SettingsRobolectricTestRunner; @@ -65,4 +66,11 @@ public class UsageAccessDetailsTest { verify(mFeatureFactory.metricsFeatureProvider).action(any(Context.class), eq(MetricsProto.MetricsEvent.APP_SPECIAL_PERMISSION_USAGE_VIEW_DENY), eq("app")); } + + @Test + public void refreshUi_nullPackageInfo_shouldNotCrash() throws RemoteException { + mFragment.mPackageInfo = null; + mFragment.refreshUi(); + // should not crash + } }