diff options
author | Andrew Lee <anwlee@google.com> | 2015-10-21 00:16:37 -0700 |
---|---|---|
committer | Andrew Lee <anwlee@google.com> | 2015-10-21 13:39:49 -0700 |
commit | 7844b1d11b6f8715ff2782cd3d01a3d1c397f052 (patch) | |
tree | 19fc0265d0051bac31730dd50abdf804c7238e05 /src | |
parent | d625d28ec6cf22c128d0ef0b8e64a9fff4b64aec (diff) |
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
Diffstat (limited to 'src')
-rw-r--r-- | src/com/android/dialer/filterednumber/BlockedNumbersFragment.java | 11 | ||||
-rw-r--r-- | src/com/android/dialer/filterednumber/FilteredNumbersUtil.java | 32 |
2 files changed, 41 insertions, 2 deletions
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(); } |