diff options
author | blunden <blunden2@gmail.com> | 2018-03-18 14:02:30 +0100 |
---|---|---|
committer | Michael Bestas <mkbestas@lineageos.org> | 2019-12-11 20:08:21 +0200 |
commit | 8b870d13cd5e0290c741b2232bae5ac0e4fded00 (patch) | |
tree | 71682da54ab131132e7604b2faf78fc4e91af457 /java/com/android/dialer | |
parent | 3dcca2f2f08a028c37cbfba880916563dce81a97 (diff) | |
download | android_packages_apps_Dialer-8b870d13cd5e0290c741b2232bae5ac0e4fded00.tar.gz android_packages_apps_Dialer-8b870d13cd5e0290c741b2232bae5ac0e4fded00.tar.bz2 android_packages_apps_Dialer-8b870d13cd5e0290c741b2232bae5ac0e4fded00.zip |
Add setting to enable Do Not Disturb during calls
Android N and earlier enabled Do Not Disturb mode while in a call.
Reimplement this behavior to prevent incoming notifications from
vibrating or playing sounds.
Change-Id: Ic38ac775c6e353898190e1571b6d6e521c0e5aa1
Diffstat (limited to 'java/com/android/dialer')
3 files changed, 44 insertions, 0 deletions
diff --git a/java/com/android/dialer/app/res/values/cm_strings.xml b/java/com/android/dialer/app/res/values/cm_strings.xml index ba15b469d..0ba0d500a 100644 --- a/java/com/android/dialer/app/res/values/cm_strings.xml +++ b/java/com/android/dialer/app/res/values/cm_strings.xml @@ -18,6 +18,7 @@ <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="incall_category_key" translatable="false">dialer_general_incall_category_key</string> <string name="incall_category_title">In-call</string> + <string name="incall_enable_dnd_title">Enable Do Not Disturb during calls</string> <string name="incall_vibrate_outgoing_key" translatable="false">incall_vibrate_outgoing</string> <string name="incall_vibrate_outgoing_title">Vibrate on answer</string> <string name="incall_vibrate_call_waiting_key" translatable="false">incall_vibrate_call_waiting</string> @@ -27,4 +28,7 @@ <string name="incall_vibrate_45_key" translatable="false">incall_vibrate_45secs</string> <string name="incall_vibrate_45_title">Vibrate every minute</string> <string name="incall_vibrate_45_summary">Vibrates at the 45 second mark of every minute during outgoing calls</string> + <string name="incall_dnd_dialog_message">In order to enable Do Not Disturb, the Phone app needs to be granted the permission to control the Do Not Disturb status.\nPlease allow it.</string> + <string name="allow">Allow</string> + <string name="deny">Deny</string> </resources> diff --git a/java/com/android/dialer/app/res/xml/sound_settings.xml b/java/com/android/dialer/app/res/xml/sound_settings.xml index e26e51aad..4da5c1514 100644 --- a/java/com/android/dialer/app/res/xml/sound_settings.xml +++ b/java/com/android/dialer/app/res/xml/sound_settings.xml @@ -48,6 +48,11 @@ android:title="@string/incall_category_title"> <SwitchPreference + android:defaultValue="false" + android:key="incall_enable_dnd" + android:title="@string/incall_enable_dnd_title"/> + + <SwitchPreference android:key="@string/incall_vibrate_outgoing_key" android:title="@string/incall_vibrate_outgoing_title" /> diff --git a/java/com/android/dialer/app/settings/SoundSettingsFragment.java b/java/com/android/dialer/app/settings/SoundSettingsFragment.java index 3c254cc4b..d9f24ab7e 100644 --- a/java/com/android/dialer/app/settings/SoundSettingsFragment.java +++ b/java/com/android/dialer/app/settings/SoundSettingsFragment.java @@ -16,7 +16,11 @@ package com.android.dialer.app.settings; +import android.app.AlertDialog; +import android.app.NotificationManager; import android.content.Context; +import android.content.DialogInterface; +import android.content.Intent; import android.media.RingtoneManager; import android.os.Build; import android.os.Bundle; @@ -70,6 +74,9 @@ public class SoundSettingsFragment extends PreferenceFragment private SwitchPreference vibrateWhenRinging; private SwitchPreference playDtmfTone; private ListPreference dtmfToneLength; + private SwitchPreference enableDndInCall; + + private NotificationManager notificationManager; @Override public Context getContext() { @@ -92,6 +99,7 @@ public class SoundSettingsFragment extends PreferenceFragment dtmfToneLength = (ListPreference) findPreference(context.getString(R.string.dtmf_tone_length_preference_key)); + enableDndInCall = (SwitchPreference) findPreference("incall_enable_dnd"); if (hasVibrator()) { vibrateWhenRinging.setOnPreferenceChangeListener(this); @@ -116,6 +124,8 @@ public class SoundSettingsFragment extends PreferenceFragment playDtmfTone.setOnPreferenceChangeListener(this); playDtmfTone.setChecked(shouldPlayDtmfTone()); + enableDndInCall.setOnPreferenceChangeListener(this); + TelephonyManager telephonyManager = (TelephonyManager) getActivity().getSystemService(Context.TELEPHONY_SERVICE); if (telephonyManager.canChangeDtmfToneLength() @@ -130,6 +140,7 @@ public class SoundSettingsFragment extends PreferenceFragment getPreferenceScreen().removePreference(dtmfToneLength); dtmfToneLength = null; } + notificationManager = context.getSystemService(NotificationManager.class); } @Override @@ -178,6 +189,30 @@ public class SoundSettingsFragment extends PreferenceFragment int index = dtmfToneLength.findIndexOfValue((String) objValue); Settings.System.putInt( getActivity().getContentResolver(), Settings.System.DTMF_TONE_TYPE_WHEN_DIALING, index); + } else if (preference == enableDndInCall) { + boolean newValue = (Boolean) objValue; + if (newValue && !notificationManager.isNotificationPolicyAccessGranted()) { + new AlertDialog.Builder(getContext()) + .setMessage(R.string.incall_dnd_dialog_message) + .setPositiveButton(R.string.allow, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + dialog.dismiss(); + Intent intent = new Intent(android.provider.Settings.ACTION_NOTIFICATION_POLICY_ACCESS_SETTINGS); + startActivity(intent); + } + }) + .setNegativeButton(R.string.deny, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + dialog.dismiss(); + } + }) + .show(); + + // At this time, it is unknown whether the user granted the permission + return false; + } } return true; } |