Merge "Merge commit 'a14fc12' into merge_work"
diff --git a/res/values/strings.xml b/res/values/strings.xml
index c847940..a8f7bb5 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -1237,9 +1237,11 @@
<!-- Message to describe "BLE scan always available feature" when Bluetooth is off. The
place-holders "LINK_BEGIN" and "LINK_END" must NOT be translated. They mark a link to bring
the user to "scanning settings" screen. -->
- <string name="ble_scan_notify_text">To improve location accuracy, Google services will scan for
- Bluetooth devices, even when Bluetooth is off. You can change this in LINK_BEGINscanning
- settingsLINK_END.</string>
+ <string name="ble_scan_notify_text">To improve location accuracy, apps and
+ services will scan for Bluetooth devices, even when Bluetooth is off.
+ You can change this in
+ <xliff:g id="link_begin">LINK_BEGIN</xliff:g>scanning
+ settings<xliff:g id="link_end">LINK_END</xliff:g>.</string>
<!-- Bluetooth settings. The title of the screen to pick which profiles to connect to on the device. For example, headphones may have both A2DP and headset, this allows the user to choose which one he wants to connect to. -->
@@ -1413,9 +1415,11 @@
<!-- Message to describe "Wi-Fi scan always available feature" when Wi-Fi is off. The
place-holders "LINK_BEGIN" and "LINK_END" must NOT be translated. They mark a link to bring
the user to "scanning settings" screen. -->
- <string name="wifi_scan_notify_text">To improve location accuracy, Google services will scan for
- Wi\u2011Fi networks, even when Wi\u2011Fi is off. You can change this in LINK_BEGINscanning
- settingsLINK_END.</string>
+ <string name="wifi_scan_notify_text">To improve location accuracy, apps and
+ services will scan for Wi\u2011Fi networks, even when Wi\u2011Fi is off.
+ You can change this in
+ <xliff:g id="link_begin">LINK_BEGIN</xliff:g>scanning
+ settings<xliff:g id="link_end">LINK_END</xliff:g>.</string>
<!-- Wifi scan always mode checkbox text -->
<string name="wifi_scan_notify_remember_choice">Don\'t show again</string>
<!-- Setting title for setting the wifi sleep policy. Do we keep Wi-Fi active when the screen turns off? -->
@@ -2606,16 +2610,18 @@
<string name="location_menu_scanning">Scanning</string>
<!-- [CHAR LIMIT=30] Wireless background scanning settings screen, screen title -->
<string name="location_scanning_screen_title">Scanning</string>
- <!-- [CHAR LIMIT=130] Preference title for Wi-Fi always scanning [DO NOT TRANSLATE] -->
- <string name="location_scanning_wifi_always_scanning_title">Wi\u2011Fi scanning always available</string>
- <!-- Preference description text for Wi-Fi always scanning [DO NOT TRANSLATE] -->
- <string name="location_scanning_wifi_always_scanning_description">The clear history button in
- your browser has saved more lives than Superman</string>
- <!-- [CHAR LIMIT=130] Description text for Bluetooth always scanning [DO NOT TRANSLATE] -->
- <string name="location_scanning_bluetooth_always_scanning_title">Bluetooth scanning always available</string>
- <!-- Description text for Bluetooth always scanning [DO NOT TRANSLATE] -->
- <string name="location_scanning_bluetooth_always_scanning_description">If you want to catch a
- squirrel just climb a tree and act like a nut</string>
+ <!-- [CHAR LIMIT=130] Preference title for Wi-Fi always scanning -->
+ <string name="location_scanning_wifi_always_scanning_title">Wi\u2011Fi scanning</string>
+ <!-- Preference description text for Wi-Fi always scanning -->
+ <string name="location_scanning_wifi_always_scanning_description">Improve
+ location by allowing apps and services to scan for Wi\u2011Fi networks
+ even when Wi\u2011Fi is off</string>
+ <!-- [CHAR LIMIT=130] Description text for Bluetooth always scanning -->
+ <string name="location_scanning_bluetooth_always_scanning_title">Bluetooth scanning</string>
+ <!-- Description text for Bluetooth always scanning -->
+ <string name="location_scanning_bluetooth_always_scanning_description">
+ Improve location by allowing system services to scan for Bluetooth
+ devices, even when Bluetooth is off</string>
<!-- [CHAR LIMIT=30] Security & location settings screen, setting check box label for Google location service (cell ID, wifi, etc.) -->
<string name="location_network_based">Wi\u2011Fi & cellular network location</string>
@@ -5643,6 +5649,7 @@
<string name="keywords_emergency_app">emergency ice app default</string>
<string name="keywords_all_apps">apps download applications system</string>
<string name="keywords_app_permissions">apps permissions security</string>
+ <string name="keywords_default_apps">apps default</string>
<!-- Search keywords for different screen unlock modes : slide to unlock, password, pattern and PIN [CHAR LIMIT=none] -->
<string name="keywords_lockscreen">slide password pattern pin</string>
@@ -5913,6 +5920,15 @@
<!-- [CHAR LIMIT=50] Zen mode settings: Events option -->
<string name="zen_mode_events">Events</string>
+ <!-- [CHAR LIMIT=50] Zen mode settings: Selected callers summary -->
+ <string name="zen_mode_selected_callers">Selected callers</string>
+
+ <!-- [CHAR LIMIT=50] Zen mode settings: Repeat callers option -->
+ <string name="zen_mode_repeat_callers">Repeat callers</string>
+
+ <!-- [CHAR LIMIT=200] Zen mode settings: Repeat callers option summary -->
+ <string name="zen_mode_repeat_callers_summary">If the same person calls a second time within a <xliff:g id="minutes">%d</xliff:g> minute period, allow it</string>
+
<!-- [CHAR LIMIT=20] Zen mode settings: When option -->
<string name="zen_mode_when">Automatically turn on</string>
@@ -6169,4 +6185,13 @@
<item quantity="other"><xliff:g id="count" example="10">%d</xliff:g> apps can open their domain URLs</item>
</plurals>
+ <!-- Title for Default Apps settings [CHAR LIMIT=30] -->
+ <string name="default_apps_title">Default Apps</string>
+
+ <!-- Title for Default Browser settings [CHAR LIMIT=30] -->
+ <string name="default_browser_title">Default Browser</string>
+
+ <!-- Summary for No Default Browser settings [CHAR LIMIT=45] -->
+ <string name="default_browser_title_none">No default Browser</string>
+
</resources>
diff --git a/res/xml/advanced_apps.xml b/res/xml/advanced_apps.xml
index 682ab2d..0307a60 100644
--- a/res/xml/advanced_apps.xml
+++ b/res/xml/advanced_apps.xml
@@ -20,6 +20,12 @@
android:key="applications_settings">
<PreferenceScreen
+ android:key="default_apps"
+ android:fragment="com.android.settings.applications.ManageDefaultApps"
+ android:title="@string/default_apps_title"
+ settings:keywords="@string/keywords_default_apps" />
+
+ <PreferenceScreen
android:key="manage_perms"
android:fragment="com.android.settings.applications.ManagePermissions"
android:title="@string/app_permissions"
diff --git a/res/xml/default_apps.xml b/res/xml/default_apps.xml
new file mode 100644
index 0000000..00c2fc0
--- /dev/null
+++ b/res/xml/default_apps.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2015 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<PreferenceScreen
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:settings="http://schemas.android.com/apk/res/com.android.settings"
+ android:key="default_apps">
+
+ <com.android.settings.applications.DefaultBrowserPreference
+ android:key="default_browser"
+ android:title="@string/default_browser_title"
+ android:summary="@string/default_browser_title_none"
+ />
+
+</PreferenceScreen>
diff --git a/res/xml/zen_mode_priority_settings.xml b/res/xml/zen_mode_priority_settings.xml
index 6cdbe95..5b1dbf8 100644
--- a/res/xml/zen_mode_priority_settings.xml
+++ b/res/xml/zen_mode_priority_settings.xml
@@ -67,4 +67,12 @@
android:title="@string/zen_mode_from"
android:persistent="false" />
+ <!-- Repeat callers -->
+ <SwitchPreference
+ android:key="repeat_callers"
+ android:title="@string/zen_mode_repeat_callers"
+ android:persistent="false"
+ android:switchTextOff=""
+ android:switchTextOn="" />
+
</PreferenceScreen>
diff --git a/src/com/android/settings/FingerprintEnroll.java b/src/com/android/settings/FingerprintEnroll.java
index 96e612b..a6424e5 100644
--- a/src/com/android/settings/FingerprintEnroll.java
+++ b/src/com/android/settings/FingerprintEnroll.java
@@ -254,7 +254,7 @@
case EnrollingStart:
mEnrollmentSteps = -1;
long challenge = 0x12345; // TODO: get from keyguard confirmation
- mFingerprintManager.enroll(challenge, mEnrollmentCallback, mEnrollmentCancel,0);
+ mFingerprintManager.enroll(challenge, mEnrollmentCancel, mEnrollmentCallback, 0);
mProgressBar.setProgress(0);
mEnrolling = true;
startFingerprintAnimator(); // XXX hack - this should follow fingerprint detection
diff --git a/src/com/android/settings/FingerprintSettings.java b/src/com/android/settings/FingerprintSettings.java
index c134cfb..b4d6a4f 100644
--- a/src/com/android/settings/FingerprintSettings.java
+++ b/src/com/android/settings/FingerprintSettings.java
@@ -24,6 +24,7 @@
import android.content.Intent;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
+import android.os.CancellationSignal;
import android.os.Handler;
import android.preference.Preference;
import android.preference.Preference.OnPreferenceChangeListener;
@@ -92,8 +93,10 @@
private FingerprintManager mFingerprintManager;
private EditText mDialogTextField;
private PreferenceGroup mManageCategory;
+ private CancellationSignal mFingerprintCancel;
+ private int mMaxFingerprintAttempts;
+
private AuthenticationCallback mAuthCallback = new AuthenticationCallback() {
- int mAttempts;
@Override
public void onAuthenticationSucceeded(AuthenticationResult result) {
mHandler.obtainMessage(MSG_HIGHLIGHT_FINGERPRINT_ITEM,
@@ -101,20 +104,16 @@
retryFingerprint(true);
}
+ public void onAuthenticationFailed() {
+ retryFingerprint(true);
+ };
+
@Override
public void onAuthenticationError(int errMsgId, CharSequence errString) {
Toast.makeText(getActivity(), errString, Toast.LENGTH_SHORT);
- retryFingerprint(false);
- }
-
- private void retryFingerprint(boolean resetAttempts) {
- if (resetAttempts) {
- mAttempts = 0;
+ if (errMsgId != FingerprintManager.FINGERPRINT_ERROR_CANCELED) {
+ retryFingerprint(false);
}
- if (mAttempts < MAX_RETRY_ATTEMPTS) {
- mFingerprintManager.authenticate(null, mAuthCallback, null, 0);
- }
- mAttempts++;
}
@Override
@@ -148,6 +147,24 @@
};
};
+ private void stopFingerprint() {
+ if (mFingerprintCancel != null) {
+ mFingerprintCancel.cancel();
+ mFingerprintCancel = null;
+ }
+ }
+
+ private void retryFingerprint(boolean resetAttempts) {
+ if (resetAttempts) {
+ mMaxFingerprintAttempts = 0;
+ }
+ if (mMaxFingerprintAttempts < MAX_RETRY_ATTEMPTS) {
+ mFingerprintCancel = new CancellationSignal();
+ mFingerprintManager.authenticate(null, mFingerprintCancel, mAuthCallback, 0);
+ }
+ mMaxFingerprintAttempts++;
+ }
+
@Override
protected int getMetricsCategory() {
return MetricsLogger.FINGERPRINT;
@@ -158,7 +175,6 @@
super.onCreate(savedInstanceState);
mFingerprintManager = (FingerprintManager) getActivity().getSystemService(
Context.FINGERPRINT_SERVICE);
- mFingerprintManager.authenticate(null, mAuthCallback, null, 0);
}
protected void removeFingerprintPreference(int fingerprintId) {
@@ -252,6 +268,13 @@
// Make sure we reload the preference hierarchy since fingerprints may be added,
// deleted or renamed.
createPreferenceHierarchy();
+ retryFingerprint(true);
+ }
+
+ @Override
+ public void onPause() {
+ super.onPause();
+ stopFingerprint();
}
@Override
@@ -260,6 +283,7 @@
if (KEY_FINGERPRINT_ADD.equals(key)) {
Intent intent = new Intent();
intent.setClassName("com.android.settings", FingerprintEnroll.class.getName());
+ stopFingerprint();
startActivityForResult(intent, ADD_FINGERPRINT_REQUEST);
} else if (pref instanceof FingerprintPreference) {
FingerprintPreference fpref = (FingerprintPreference) pref;
diff --git a/src/com/android/settings/InstrumentedFragment.java b/src/com/android/settings/InstrumentedFragment.java
index 604af18..ff6f219 100644
--- a/src/com/android/settings/InstrumentedFragment.java
+++ b/src/com/android/settings/InstrumentedFragment.java
@@ -23,9 +23,11 @@
* Instrumented fragment that logs visibility state.
*/
public abstract class InstrumentedFragment extends PreferenceFragment {
- // Declare new temproary categories here, starting after this value.
+ // Declare new temporary categories here, starting after this value.
public static final int VIEW_CATEGORY_UNDECLARED = 100000;
+ public static final int VIEW_CATEGORY_DEFAULT_APPS = VIEW_CATEGORY_UNDECLARED + 1;
+
/**
* Declare the view of this category.
*
diff --git a/src/com/android/settings/applications/DefaultBrowserPreference.java b/src/com/android/settings/applications/DefaultBrowserPreference.java
new file mode 100644
index 0000000..b9ea9c0
--- /dev/null
+++ b/src/com/android/settings/applications/DefaultBrowserPreference.java
@@ -0,0 +1,81 @@
+/*
+ * Copyright (C) 2015 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.applications;
+
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.PackageManager;
+import android.content.pm.ResolveInfo;
+import android.net.Uri;
+import android.os.UserHandle;
+import android.preference.ListPreference;
+import android.util.ArrayMap;
+import android.util.AttributeSet;
+
+import com.android.settings.R;
+
+import java.util.List;
+
+public class DefaultBrowserPreference extends ListPreference {
+
+ final private PackageManager mPm;
+
+ public DefaultBrowserPreference(Context context, AttributeSet attrs) {
+ super(context, attrs);
+
+ mPm = context.getPackageManager();
+ loadBrowserApps();
+ }
+
+ private void loadBrowserApps() {
+ ArrayMap<String, CharSequence> browsers = resolveBrowserApps();
+
+ setEntries(browsers.values().toArray(new CharSequence[browsers.size()]));
+ setEntryValues(browsers.keySet().toArray(new String[browsers.size()]));
+ }
+
+ private ArrayMap<String, CharSequence> resolveBrowserApps() {
+ ArrayMap<String, CharSequence> result = new ArrayMap<>();
+
+ // Create an Intent that will match ALL Browser Apps
+ Intent intent = new Intent();
+ intent.setAction(Intent.ACTION_VIEW);
+ intent.addCategory(Intent.CATEGORY_BROWSABLE);
+ intent.setData(Uri.parse("http:"));
+
+ // Resolve that intent and check that the handleAllWebDataURI boolean is set
+ PackageManager packageManager = getContext().getPackageManager();
+ List<ResolveInfo> list = packageManager.queryIntentActivitiesAsUser(intent, 0,
+ UserHandle.myUserId());
+
+ final int count = list.size();
+ for (int i=0; i<count; i++) {
+ ResolveInfo info = list.get(i);
+ if (info.activityInfo == null || result.containsKey(info.activityInfo.packageName)
+ || !info.handleAllWebDataURI) {
+ continue;
+ }
+
+ String packageName = info.activityInfo.packageName;
+ CharSequence label = info.activityInfo.applicationInfo.loadLabel(packageManager);
+
+ result.put(packageName, label);
+ }
+
+ return result;
+ }
+}
diff --git a/src/com/android/settings/applications/ManageDefaultApps.java b/src/com/android/settings/applications/ManageDefaultApps.java
new file mode 100644
index 0000000..87fc78e
--- /dev/null
+++ b/src/com/android/settings/applications/ManageDefaultApps.java
@@ -0,0 +1,99 @@
+/*
+ * Copyright (C) 2015 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.applications;
+
+import android.annotation.Nullable;
+import android.content.Intent;
+import android.content.pm.PackageManager;
+import android.content.pm.ResolveInfo;
+import android.os.Bundle;
+import android.os.UserHandle;
+import android.preference.Preference;
+import android.text.TextUtils;
+import android.util.Log;
+import android.view.View;
+import com.android.settings.InstrumentedFragment;
+import com.android.settings.SettingsPreferenceFragment;
+
+import com.android.settings.R;
+
+public class ManageDefaultApps extends SettingsPreferenceFragment
+ implements Preference.OnPreferenceClickListener {
+
+ private static final String TAG = ManageDefaultApps.class.getSimpleName();
+
+ private static final String KEY_DEFAULT_BROWSER = "default_browser";
+
+ private DefaultBrowserPreference mDefaultBrowserPreference;
+ private PackageManager mPm;
+ private int myUserId;
+
+ @Override
+ public void onCreate(Bundle icicle) {
+ super.onCreate(icicle);
+
+ addPreferencesFromResource(R.xml.default_apps);
+
+ mPm = getPackageManager();
+ myUserId = UserHandle.myUserId();
+
+ mDefaultBrowserPreference = (DefaultBrowserPreference) findPreference(KEY_DEFAULT_BROWSER);
+ mDefaultBrowserPreference.setOnPreferenceClickListener(
+ new Preference.OnPreferenceClickListener() {
+ @Override
+ public boolean onPreferenceClick(Preference preference) {
+ final CharSequence packageName = mDefaultBrowserPreference.getValue();
+ if (TextUtils.isEmpty(packageName)) {
+ return false;
+ }
+ return mPm.setDefaultBrowserPackageName(packageName.toString(), myUserId);
+ }
+ });
+ }
+
+ @Override
+ public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
+ super.onViewCreated(view, savedInstanceState);
+
+ String packageName = getPackageManager().getDefaultBrowserPackageName(
+ UserHandle.myUserId());
+ if (!TextUtils.isEmpty(packageName)) {
+ // Check if the package is still there
+ Intent intent = new Intent();
+ intent.setPackage(packageName);
+ ResolveInfo info = mPm.resolveActivityAsUser(intent, 0, myUserId);
+ if (info != null) {
+ mDefaultBrowserPreference.setValue(packageName);
+ } else {
+ // Otherwise select the first one
+ mDefaultBrowserPreference.setValueIndex(0);
+ }
+ } else {
+ Log.d(TAG, "Cannot set empty default Browser value!");
+ }
+ }
+
+ @Override
+ protected int getMetricsCategory() {
+ return InstrumentedFragment.VIEW_CATEGORY_DEFAULT_APPS;
+ }
+
+ @Override
+ public boolean onPreferenceClick(Preference preference) {
+ return false;
+ }
+}
diff --git a/src/com/android/settings/notification/ZenModePrioritySettings.java b/src/com/android/settings/notification/ZenModePrioritySettings.java
index af74a46..89e9ea3 100644
--- a/src/com/android/settings/notification/ZenModePrioritySettings.java
+++ b/src/com/android/settings/notification/ZenModePrioritySettings.java
@@ -35,6 +35,7 @@
private static final String KEY_MESSAGES = "messages";
private static final String KEY_CALLS = "calls";
private static final String KEY_STARRED = "starred";
+ private static final String KEY_REPEAT_CALLERS = "repeat_callers";
private boolean mDisableListeners;
private SwitchPreference mReminders;
@@ -42,6 +43,7 @@
private SwitchPreference mMessages;
private SwitchPreference mCalls;
private DropDownPreference mStarred;
+ private SwitchPreference mRepeatCallers;
@Override
public void onCreate(Bundle savedInstanceState) {
@@ -123,6 +125,23 @@
}
});
+ mRepeatCallers = (SwitchPreference) root.findPreference(KEY_REPEAT_CALLERS);
+ mRepeatCallers.setSummary(mContext.getString(R.string.zen_mode_repeat_callers_summary,
+ mContext.getResources().getInteger(com.android.internal.R.integer
+ .config_zen_repeat_callers_threshold)));
+ mRepeatCallers.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
+ @Override
+ public boolean onPreferenceChange(Preference preference, Object newValue) {
+ if (mDisableListeners) return true;
+ final boolean val = (Boolean) newValue;
+ if (val == mConfig.allowRepeatCallers) return true;
+ if (DEBUG) Log.d(TAG, "onPrefChange allowRepeatCallers=" + val);
+ final ZenModeConfig newConfig = mConfig.copy();
+ newConfig.allowRepeatCallers = val;
+ return setZenModeConfig(newConfig);
+ }
+ });
+
updateControls();
}
@@ -143,9 +162,12 @@
}
mMessages.setChecked(mConfig.allowMessages);
mStarred.setSelectedValue(mConfig.allowFrom);
+ mStarred.setEnabled(mConfig.allowCalls || mConfig.allowMessages);
mReminders.setChecked(mConfig.allowReminders);
mEvents.setChecked(mConfig.allowEvents);
- updateStarredEnabled();
+ mRepeatCallers.setChecked(mConfig.allowRepeatCallers);
+ mRepeatCallers.setEnabled(!mConfig.allowCalls
+ || mConfig.allowFrom != ZenModeConfig.SOURCE_ANYONE);
mDisableListeners = false;
}
@@ -154,8 +176,4 @@
return MetricsLogger.NOTIFICATION_ZEN_MODE_PRIORITY;
}
- private void updateStarredEnabled() {
- mStarred.setEnabled(mConfig.allowCalls || mConfig.allowMessages);
- }
-
}
diff --git a/src/com/android/settings/notification/ZenModeSettings.java b/src/com/android/settings/notification/ZenModeSettings.java
index 88ecef5..24774cb 100644
--- a/src/com/android/settings/notification/ZenModeSettings.java
+++ b/src/com/android/settings/notification/ZenModeSettings.java
@@ -159,10 +159,11 @@
}
private void updatePrioritySettingsSummary() {
+ final boolean callers = mConfig.allowCalls || mConfig.allowRepeatCallers;
String s = getResources().getString(R.string.zen_mode_alarms);
s = appendLowercase(s, mConfig.allowReminders, R.string.zen_mode_reminders);
s = appendLowercase(s, mConfig.allowEvents, R.string.zen_mode_events);
- s = appendLowercase(s, mConfig.allowCalls, R.string.zen_mode_calls);
+ s = appendLowercase(s, callers, R.string.zen_mode_selected_callers);
s = appendLowercase(s, mConfig.allowMessages, R.string.zen_mode_messages);
mPrioritySettings.setSummary(s);
}