diff --git a/res/values/strings.xml b/res/values/strings.xml
index 1988d9dd688..eabf8974366 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -10778,6 +10778,9 @@
System default
+
+ None
+
This choice is no longer valid. Try again.
diff --git a/src/com/android/settings/connecteddevice/stylus/StylusDevicesController.java b/src/com/android/settings/connecteddevice/stylus/StylusDevicesController.java
index 7ed02491ca3..e04251a218e 100644
--- a/src/com/android/settings/connecteddevice/stylus/StylusDevicesController.java
+++ b/src/com/android/settings/connecteddevice/stylus/StylusDevicesController.java
@@ -85,16 +85,24 @@ public class StylusDevicesController extends AbstractPreferenceController implem
}
@Nullable
- private Preference createDefaultNotesPreference() {
+ private Preference createOrUpdateDefaultNotesPreference(@Nullable Preference preference) {
RoleManager rm = mContext.getSystemService(RoleManager.class);
- if (rm == null) {
+ if (rm == null || !rm.isRoleAvailable(RoleManager.ROLE_NOTES)) {
return null;
}
+ Preference pref = preference == null ? new Preference(mContext) : preference;
+ pref.setKey(KEY_DEFAULT_NOTES);
+ pref.setTitle(mContext.getString(R.string.stylus_default_notes_app));
+ pref.setIcon(R.drawable.ic_article);
+ pref.setOnPreferenceClickListener(this);
+ pref.setEnabled(true);
+
List roleHolders = rm.getRoleHoldersAsUser(RoleManager.ROLE_NOTES,
mContext.getUser());
if (roleHolders.isEmpty()) {
- return null;
+ pref.setSummary(R.string.default_app_none);
+ return pref;
}
String packageName = roleHolders.get(0);
@@ -107,13 +115,6 @@ public class StylusDevicesController extends AbstractPreferenceController implem
} catch (PackageManager.NameNotFoundException e) {
Log.e(TAG, "Notes role package not found.");
}
-
- Preference pref = new Preference(mContext);
- pref.setKey(KEY_DEFAULT_NOTES);
- pref.setTitle(mContext.getString(R.string.stylus_default_notes_app));
- pref.setIcon(R.drawable.ic_article);
- pref.setOnPreferenceClickListener(this);
- pref.setEnabled(true);
pref.setSummary(appName);
return pref;
}
@@ -187,12 +188,10 @@ public class StylusDevicesController extends AbstractPreferenceController implem
private void refresh() {
if (!isAvailable()) return;
- Preference notesPref = mPreferencesContainer.findPreference(KEY_DEFAULT_NOTES);
- if (notesPref == null) {
- notesPref = createDefaultNotesPreference();
- if (notesPref != null) {
- mPreferencesContainer.addPreference(notesPref);
- }
+ Preference currNotesPref = mPreferencesContainer.findPreference(KEY_DEFAULT_NOTES);
+ Preference notesPref = createOrUpdateDefaultNotesPreference(currNotesPref);
+ if (currNotesPref == null && notesPref != null) {
+ mPreferencesContainer.addPreference(notesPref);
}
Preference handwritingPref = mPreferencesContainer.findPreference(KEY_HANDWRITING);
diff --git a/tests/robotests/src/com/android/settings/connecteddevice/stylus/StylusDevicesControllerTest.java b/tests/robotests/src/com/android/settings/connecteddevice/stylus/StylusDevicesControllerTest.java
index be41787882a..d81722fd5fc 100644
--- a/tests/robotests/src/com/android/settings/connecteddevice/stylus/StylusDevicesControllerTest.java
+++ b/tests/robotests/src/com/android/settings/connecteddevice/stylus/StylusDevicesControllerTest.java
@@ -101,6 +101,7 @@ public class StylusDevicesControllerTest {
when(mRm.getRoleHoldersAsUser(eq(RoleManager.ROLE_NOTES), any(UserHandle.class)))
.thenReturn(Collections.singletonList(NOTES_PACKAGE_NAME));
+ when(mRm.isRoleAvailable(RoleManager.ROLE_NOTES)).thenReturn(true);
when(mContext.getPackageManager()).thenReturn(mPm);
when(mPm.getApplicationInfo(eq(NOTES_PACKAGE_NAME),
any(PackageManager.ApplicationInfoFlags.class))).thenReturn(new ApplicationInfo());
@@ -235,16 +236,26 @@ public class StylusDevicesControllerTest {
}
@Test
- public void defaultNotesPreference_noRoleHolder_hidesNotesRoleApp() {
+ public void defaultNotesPreference_roleHolderChanges_updatesPreference() {
+ showScreen(mController);
+ Preference defaultNotesPref = mPreferenceContainer.getPreference(0);
when(mRm.getRoleHoldersAsUser(eq(RoleManager.ROLE_NOTES), any(UserHandle.class)))
.thenReturn(Collections.emptyList());
showScreen(mController);
- for (int i = 0; i < mPreferenceContainer.getPreferenceCount(); i++) {
- Preference pref = mPreferenceContainer.getPreference(i);
- assertThat(pref.getTitle().toString()).isNotEqualTo(
- mContext.getString(R.string.stylus_default_notes_app));
- }
+ assertThat(defaultNotesPref.getSummary().toString()).isEqualTo(
+ mContext.getString(R.string.default_app_none));
+ }
+
+ @Test
+ public void defaultNotesPreference_noRoleHolder_showNoneInSummary() {
+ when(mRm.getRoleHoldersAsUser(eq(RoleManager.ROLE_NOTES), any(UserHandle.class)))
+ .thenReturn(Collections.emptyList());
+ showScreen(mController);
+
+ Preference defaultNotesPref = mPreferenceContainer.getPreference(0);
+ assertThat(defaultNotesPref.getSummary().toString()).isEqualTo(
+ mContext.getString(R.string.default_app_none));
}
@Test