Prompt to start user before choosing a new ringtone
Dead users can't hear, nor see, ringtones. Let's wake them up and give
them a good shake first.
Until then, show a nice friendly "work profile isn't available" message.
Or depending on locale something confusing, egregious, and mismatched
like "work profile isn't available" instead.
Fix: 34735015
Bug: 34734809
Test: make RunSettingsRoboTests && make Settings && adb install -r $OUT/system/priv-app/Settings/Settings.apk && then reboot the device to see what happens
Change-Id: I86e61a7f3f654d7f38f04c43227a31e2f288e18f
diff --git a/src/com/android/settings/DefaultRingtonePreference.java b/src/com/android/settings/DefaultRingtonePreference.java
index 6893a21..09f5af4 100644
--- a/src/com/android/settings/DefaultRingtonePreference.java
+++ b/src/com/android/settings/DefaultRingtonePreference.java
@@ -30,7 +30,7 @@
public class DefaultRingtonePreference extends RingtonePreference {
private static final String TAG = "DefaultRingtonePreference";
- private int mUserId;
+ private int mUserId = UserHandle.USER_CURRENT;
protected Context mUserContext;
public DefaultRingtonePreference(Context context, AttributeSet attrs) {
@@ -40,21 +40,19 @@
public void setUserId(int userId) {
mUserId = userId;
- Context context = getContext();
- mUserContext = Utils.createPackageContextAsUser(context, mUserId);
+ mUserContext = Utils.createPackageContextAsUser(getContext(), mUserId);
}
@Override
public void performClick() {
- if (!Utils.startQuietModeDialogIfNecessary(getContext(), UserManager.get(getContext()),
- mUserId)) {
- super.performClick();
+ if (mUserId != UserHandle.USER_CURRENT) {
+ if (Utils.unlockWorkProfileIfNecessary(getContext(), mUserId) ||
+ Utils.startQuietModeDialogIfNecessary(getContext(),
+ UserManager.get(getContext()), mUserId)) {
+ return;
+ }
}
- }
-
- public void clearUserId(int userId) {
- mUserId = UserHandle.USER_CURRENT;
- mUserContext = getContext();
+ super.performClick();
}
@Override
diff --git a/src/com/android/settings/notification/WorkSoundPreferenceController.java b/src/com/android/settings/notification/WorkSoundPreferenceController.java
index cc671ad..3053f2a 100644
--- a/src/com/android/settings/notification/WorkSoundPreferenceController.java
+++ b/src/com/android/settings/notification/WorkSoundPreferenceController.java
@@ -157,9 +157,8 @@
}
private CharSequence updateRingtoneName(Context context, int type) {
- if (context == null) {
- Log.e(TAG, "Unable to update ringtone name, no context provided");
- return null;
+ if (context == null || !UserManager.get(context).isUserUnlocked(context.getUserId())) {
+ return context.getString(R.string.managed_profile_not_available_label);
}
Uri ringtoneUri = RingtoneManager.getActualDefaultRingtoneUri(context, type);
return Ringtone.getTitle(context, ringtoneUri, false /* followSettingsUri */,