From 7844b1d11b6f8715ff2782cd3d01a3d1c397f052 Mon Sep 17 00:00:00 2001 From: Andrew Lee Date: Wed, 21 Oct 2015 00:16:37 -0700 Subject: Disable call blocking after emergency call. Will be disabled for 48 hours after an emergency call. + Add utility for noting last time of an emergency call. + Add utility for comparing current time to last time of an emergency call. + If current time is within 48 hours of emergency call, display text in settings explaining why call blocking is disabled. Bug: 24418319 Change-Id: I6824340f04fae17b73f17843a9f6ef991afa0327 --- res/layout/blocked_number_fragment.xml | 8 ------ res/layout/blocked_number_header.xml | 25 +++++++++++++++++ res/values/colors.xml | 1 + res/values/strings.xml | 19 ++++++++++--- .../filterednumber/BlockedNumbersFragment.java | 11 +++++++- .../dialer/filterednumber/FilteredNumbersUtil.java | 32 +++++++++++++++++++++- 6 files changed, 82 insertions(+), 14 deletions(-) diff --git a/res/layout/blocked_number_fragment.xml b/res/layout/blocked_number_fragment.xml index b98b58fc5..7aff06ec7 100644 --- a/res/layout/blocked_number_fragment.xml +++ b/res/layout/blocked_number_fragment.xml @@ -27,12 +27,4 @@ android:divider="@null" android:headerDividersEnabled="false" /> - - diff --git a/res/layout/blocked_number_header.xml b/res/layout/blocked_number_header.xml index 3fcdf398b..ce1d4feab 100644 --- a/res/layout/blocked_number_header.xml +++ b/res/layout/blocked_number_header.xml @@ -19,6 +19,31 @@ android:layout_height="wrap_content" android:orientation="vertical"> + + + + + + + + + #42A5F5 #F44336 @color/dialer_theme_color + #616161 #ffffff diff --git a/res/values/strings.xml b/res/values/strings.xml index 9c70dd46a..df8d0faef 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -826,6 +826,21 @@ Blocked numbers + + + Call blocking temporarily off + + + + + Call blocking has been disabled because you contacted emergency services from this phone + within the last 48 hours. It will be automatically reenabled once the 48 hour period + expires. + + Import numbers @@ -859,10 +874,6 @@ [CHAR LIMIT=NONE]--> Unblock number - - No blocked numbers - Add number diff --git a/src/com/android/dialer/filterednumber/BlockedNumbersFragment.java b/src/com/android/dialer/filterednumber/BlockedNumbersFragment.java index c478b8301..7788cbe1b 100644 --- a/src/com/android/dialer/filterednumber/BlockedNumbersFragment.java +++ b/src/com/android/dialer/filterednumber/BlockedNumbersFragment.java @@ -52,6 +52,7 @@ public class BlockedNumbersFragment extends ListFragment private Switch mHideSettingSwitch; private View mImportSettings; + private View mBlockedNumbersDisabledForEmergency; @Override public void onActivityCreated(Bundle savedInstanceState) { @@ -80,6 +81,8 @@ public class BlockedNumbersFragment extends ListFragment }); mImportSettings = getActivity().findViewById(R.id.import_settings); + mBlockedNumbersDisabledForEmergency = + getActivity().findViewById(R.id.blocked_numbers_disabled_for_emergency); getActivity().findViewById(R.id.import_button).setOnClickListener(this);; getActivity().findViewById(R.id.view_numbers_button).setOnClickListener(this); @@ -122,8 +125,14 @@ public class BlockedNumbersFragment extends ListFragment } }); - mHideSettingSwitch.setChecked(FilteredNumbersUtil.shouldHideBlockedCalls(getActivity())); + mHideSettingSwitch.setChecked(FilteredNumbersUtil.shouldHideBlockedCalls(getContext())); mCallLogQueryHandler.fetchVoicemailStatus(); + + if (FilteredNumbersUtil.hasRecentEmergencyCall(getContext())) { + mBlockedNumbersDisabledForEmergency.setVisibility(View.VISIBLE); + } else { + mBlockedNumbersDisabledForEmergency.setVisibility(View.GONE); + } } @Override diff --git a/src/com/android/dialer/filterednumber/FilteredNumbersUtil.java b/src/com/android/dialer/filterednumber/FilteredNumbersUtil.java index 8bfcea06b..b0423300e 100644 --- a/src/com/android/dialer/filterednumber/FilteredNumbersUtil.java +++ b/src/com/android/dialer/filterednumber/FilteredNumbersUtil.java @@ -44,6 +44,11 @@ import com.android.dialer.database.FilteredNumberContract.FilteredNumberColumns; public class FilteredNumbersUtil { private static final String HIDE_BLOCKED_CALLS_PREF_KEY = "hide_blocked_calls"; + // Pref key for storing the time, in milliseconds after epoch, of end of the last emergency call. + private static final String LAST_EMERGENCY_CALL_PREF_KEY = "last_emergency_call"; + + // Disable incoming call blocking if there was a call within the past 2 days. + private static final long EMERGENCY_CALL_RECENCY_THRESHOLD_MS = 1000 * 60 * 60 * 24 * 2; public interface CheckForSendToVoicemailContactListener { public void onComplete(boolean hasSendToVoicemailContact); @@ -238,7 +243,32 @@ public class FilteredNumbersUtil { } PreferenceManager.getDefaultSharedPreferences(context) .edit() - .putBoolean(FilteredNumbersUtil.HIDE_BLOCKED_CALLS_PREF_KEY, shouldHide) + .putBoolean(HIDE_BLOCKED_CALLS_PREF_KEY, shouldHide) + .apply(); + } + + public static boolean hasRecentEmergencyCall(Context context) { + if (context == null) { + return false; + } + + Long lastEmergencyCallTime = PreferenceManager.getDefaultSharedPreferences(context) + .getLong(LAST_EMERGENCY_CALL_PREF_KEY, 0); + if (lastEmergencyCallTime == 0) { + return false; + } + + return (System.currentTimeMillis() - lastEmergencyCallTime) + < EMERGENCY_CALL_RECENCY_THRESHOLD_MS; + } + + public static void recordLastEmergencyCallTime(Context context) { + if (context == null) { + return; + } + PreferenceManager.getDefaultSharedPreferences(context) + .edit() + .putLong(LAST_EMERGENCY_CALL_PREF_KEY, System.currentTimeMillis()) .apply(); } -- cgit v1.2.3