diff --git a/src/com/android/settings/notification/NotificationAssistantPreferenceController.java b/src/com/android/settings/notification/NotificationAssistantPreferenceController.java index 2c02db9c327..ee36273d85c 100644 --- a/src/com/android/settings/notification/NotificationAssistantPreferenceController.java +++ b/src/com/android/settings/notification/NotificationAssistantPreferenceController.java @@ -141,7 +141,10 @@ public class NotificationAssistantPreferenceController extends TogglePreferenceC @Override public void updateState(Preference preference) { super.updateState(preference); - if (isNASSettingActivityAvailable()) { + if (mDefaultNASComponent == null) { + preference.setEnabled(false); + ((PrimarySwitchPreference) preference).setSwitchEnabled(false); + } else if (isNASSettingActivityAvailable()) { preference.setIntent(mNASSettingIntent); } else { // Cannot find settings activity from the default NAS app diff --git a/tests/robotests/src/com/android/settings/notification/NotificationAssistantPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/notification/NotificationAssistantPreferenceControllerTest.java index b5946673815..1dac399dd70 100644 --- a/tests/robotests/src/com/android/settings/notification/NotificationAssistantPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/notification/NotificationAssistantPreferenceControllerTest.java @@ -226,4 +226,14 @@ public class NotificationAssistantPreferenceControllerTest { .setNASMigrationDoneAndResetDefault(eq(10), anyBoolean()); } + @Test + public void testNASUnavailable_settingDisabled() throws Exception { + when(mBackend.getDefaultNotificationAssistant()).thenReturn(null); + mPreferenceController.getDefaultNASIntent(); + mPreferenceController.updateState(mPreference); + + verify(mPreference, times(1)).setSwitchEnabled(eq(false)); + assertFalse(mPreference.isEnabled()); + } + }