diff --git a/src/com/android/settings/applications/appinfo/ExternalSourceDetailPreferenceController.java b/src/com/android/settings/applications/appinfo/ExternalSourceDetailPreferenceController.java index a1e85364266..d9b9d6a7d0b 100644 --- a/src/com/android/settings/applications/appinfo/ExternalSourceDetailPreferenceController.java +++ b/src/com/android/settings/applications/appinfo/ExternalSourceDetailPreferenceController.java @@ -17,6 +17,7 @@ package com.android.settings.applications.appinfo; import android.content.Context; +import android.content.pm.PackageInfo; import android.os.UserManager; import android.support.annotation.VisibleForTesting; import android.support.v7.preference.Preference; @@ -57,9 +58,13 @@ public class ExternalSourceDetailPreferenceController extends AppInfoPreferenceC @VisibleForTesting boolean isPotentialAppSource() { + final PackageInfo packageInfo = mParent.getPackageInfo(); + if (packageInfo == null) { + return false; + } AppStateInstallAppsBridge.InstallAppsState appState = new AppStateInstallAppsBridge(mContext, null, null).createInstallAppsStateFor( - mPackageName, mParent.getPackageInfo().applicationInfo.uid); + mPackageName, packageInfo.applicationInfo.uid); return appState.isPotentialAppSource(); } diff --git a/tests/robotests/src/com/android/settings/applications/appinfo/ExternalSourceDetailPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/applications/appinfo/ExternalSourceDetailPreferenceControllerTest.java index dae72fc7ac2..fba4d763207 100644 --- a/tests/robotests/src/com/android/settings/applications/appinfo/ExternalSourceDetailPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/applications/appinfo/ExternalSourceDetailPreferenceControllerTest.java @@ -101,4 +101,12 @@ public class ExternalSourceDetailPreferenceControllerTest { verify(mPreference).setSummary(summary); } + + @Test + public void isPotentialAppSource_nullPackageInfo_shouldNotCrash() { + when(mUserManager.isManagedProfile()).thenReturn(false); + + mController.isPotentialAppSource(); + // no crash + } }