Merge "Avoid using prioritized mimetype on pre-M SDKs" into ub-contactsdialer-b-dev
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 8254f36..9d5af42 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -17,8 +17,8 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.android.dialer"
coreApp="true"
- android:versionCode="20311"
- android:versionName="2.3.11">
+ android:versionCode="20314"
+ android:versionName="2.3.14">
<uses-sdk
android:minSdkVersion="23"
diff --git a/src/com/android/dialer/compat/DialerCompatUtils.java b/src/com/android/dialer/compat/DialerCompatUtils.java
index 678ffb0..cda51c6 100644
--- a/src/com/android/dialer/compat/DialerCompatUtils.java
+++ b/src/com/android/dialer/compat/DialerCompatUtils.java
@@ -30,4 +30,15 @@
return SdkVersionOverride.getSdkVersion(Build.VERSION_CODES.LOLLIPOP)
>= Build.VERSION_CODES.M;
}
+
+ /**
+ * Determines if this version is compatible with a default dialer. Can also force the version to
+ * be lower through SdkVersionOverride.
+ *
+ * @return {@code true} if default dialer is a feature on this device, {@code false} otherwise.
+ */
+ public static boolean isDefaultDialerCompatible() {
+ return SdkVersionOverride.getSdkVersion(Build.VERSION_CODES.LOLLIPOP)
+ >= Build.VERSION_CODES.M;
+ }
}
\ No newline at end of file
diff --git a/src/com/android/dialer/filterednumber/FilteredNumbersUtil.java b/src/com/android/dialer/filterednumber/FilteredNumbersUtil.java
index 23ce8a8..e3870de 100644
--- a/src/com/android/dialer/filterednumber/FilteredNumbersUtil.java
+++ b/src/com/android/dialer/filterednumber/FilteredNumbersUtil.java
@@ -31,10 +31,6 @@
import android.text.TextUtils;
import android.widget.Toast;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.concurrent.TimeUnit;
-
import com.android.contacts.common.testing.NeededForTesting;
import com.android.dialer.R;
import com.android.dialer.database.FilteredNumberAsyncQueryHandler;
@@ -44,6 +40,8 @@
import com.android.dialer.logging.InteractionEvent;
import com.android.dialer.logging.Logger;
+import java.util.concurrent.TimeUnit;
+
/**
* Utility to help with tasks related to filtered numbers.
*/
@@ -53,11 +51,11 @@
private static final long RECENT_EMERGENCY_CALL_THRESHOLD_MS = 1000 * 60 * 60 * 24 * 2;
// Pref key for storing the time of end of the last emergency call in milliseconds after epoch.
- private static final String LAST_EMERGENCY_CALL_MS_PREF_KEY = "last_emergency_call_ms";
+ protected static final String LAST_EMERGENCY_CALL_MS_PREF_KEY = "last_emergency_call_ms";
// Pref key for storing whether a notification has been dispatched to notify the user that call
// blocking has been disabled because of a recent emergency call.
- private static final String NOTIFIED_CALL_BLOCKING_DISABLED_BY_EMERGENCY_CALL_PREF_KEY =
+ protected static final String NOTIFIED_CALL_BLOCKING_DISABLED_BY_EMERGENCY_CALL_PREF_KEY =
"notified_call_blocking_disabled_by_emergency_call";
public static final String CALL_BLOCKING_NOTIFICATION_TAG = "call_blocking";
@@ -241,6 +239,10 @@
return false;
}
+ if (hasRecentEmergencyCall(context)) {
+ return false;
+ }
+
final Cursor cursor = context.getContentResolver().query(
FilteredNumber.CONTENT_URI,
new String[] {
diff --git a/src/com/android/dialer/settings/DialerSettingsActivity.java b/src/com/android/dialer/settings/DialerSettingsActivity.java
index a6e8944..cc84486 100644
--- a/src/com/android/dialer/settings/DialerSettingsActivity.java
+++ b/src/com/android/dialer/settings/DialerSettingsActivity.java
@@ -18,6 +18,7 @@
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
+import android.os.Build;
import android.os.Bundle;
import android.os.UserManager;
import android.preference.PreferenceManager;
@@ -27,6 +28,7 @@
import android.view.MenuItem;
import android.widget.Toast;
+import com.android.contacts.common.compat.SdkVersionOverride;
import com.android.dialer.R;
import com.android.dialer.compat.SettingsCompat;
import com.android.dialer.filterednumber.BlockedNumbersSettingsActivity;
@@ -55,12 +57,16 @@
soundSettingsHeader.id = R.id.settings_header_sounds_and_vibration;
target.add(soundSettingsHeader);
- Header quickResponseSettingsHeader = new Header();
- Intent quickResponseSettingsIntent =
- new Intent(TelecomManager.ACTION_SHOW_RESPOND_VIA_SMS_SETTINGS);
- quickResponseSettingsHeader.titleRes = R.string.respond_via_sms_setting_title;
- quickResponseSettingsHeader.intent = quickResponseSettingsIntent;
- target.add(quickResponseSettingsHeader);
+ if (SdkVersionOverride.getSdkVersion(Build.VERSION_CODES.M)
+ >= Build.VERSION_CODES.M) {
+ Header quickResponseSettingsHeader = new Header();
+ Intent quickResponseSettingsIntent =
+ new Intent(TelecomManager.ACTION_SHOW_RESPOND_VIA_SMS_SETTINGS);
+ quickResponseSettingsHeader.titleRes = R.string.respond_via_sms_setting_title;
+ quickResponseSettingsHeader.intent = quickResponseSettingsIntent;
+ target.add(quickResponseSettingsHeader);
+ }
+
TelephonyManager telephonyManager =
(TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
@@ -92,8 +98,10 @@
blockedCallsHeader.intent = new Intent(this, BlockedNumbersSettingsActivity.class);
target.add(blockedCallsHeader);
- if (telephonyManager.isTtyModeSupported()
- || telephonyManager.isHearingAidCompatibilitySupported()) {
+ if (SdkVersionOverride.getSdkVersion(Build.VERSION_CODES.M)
+ >= Build.VERSION_CODES.M
+ && (telephonyManager.isTtyModeSupported()
+ || telephonyManager.isHearingAidCompatibilitySupported())) {
Header accessibilitySettingsHeader = new Header();
Intent accessibilitySettingsIntent =
new Intent(TelecomManager.ACTION_SHOW_CALL_ACCESSIBILITY_SETTINGS);
diff --git a/src/com/android/dialer/settings/SoundSettingsFragment.java b/src/com/android/dialer/settings/SoundSettingsFragment.java
index 30a25a3..59f8798 100644
--- a/src/com/android/dialer/settings/SoundSettingsFragment.java
+++ b/src/com/android/dialer/settings/SoundSettingsFragment.java
@@ -18,6 +18,7 @@
import android.content.Context;
import android.media.RingtoneManager;
+import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
@@ -32,6 +33,7 @@
import android.telephony.TelephonyManager;
import android.widget.Toast;
+import com.android.contacts.common.compat.SdkVersionOverride;
import com.android.dialer.R;
import com.android.dialer.compat.SettingsCompat;
import com.android.phone.common.util.SettingsUtil;
@@ -109,7 +111,8 @@
TelephonyManager telephonyManager =
(TelephonyManager) getActivity().getSystemService(Context.TELEPHONY_SERVICE);
- if (telephonyManager.canChangeDtmfToneLength()
+ if (SdkVersionOverride.getSdkVersion(Build.VERSION_CODES.M) >= Build.VERSION_CODES.M
+ && telephonyManager.canChangeDtmfToneLength()
&& (telephonyManager.isWorldPhone() || !shouldHideCarrierSettings())) {
mDtmfToneLength.setOnPreferenceChangeListener(this);
mDtmfToneLength.setValueIndex(
diff --git a/src/com/android/dialer/util/TelecomUtil.java b/src/com/android/dialer/util/TelecomUtil.java
index 1230577..a0c8334 100644
--- a/src/com/android/dialer/util/TelecomUtil.java
+++ b/src/com/android/dialer/util/TelecomUtil.java
@@ -28,6 +28,8 @@
import android.text.TextUtils;
import android.util.Log;
+import com.android.dialer.compat.DialerCompatUtils;
+
import java.util.ArrayList;
import java.util.List;
@@ -187,6 +189,10 @@
}
public static boolean isDefaultDialer(Context context) {
+ if (!DialerCompatUtils.isDefaultDialerCompatible()) {
+ return false;
+ }
+
final boolean result = TextUtils.equals(context.getPackageName(),
getTelecomManager(context).getDefaultDialerPackage());
if (result) {
diff --git a/tests/src/com/android/dialer/filterednumber/FilteredNumbersUtilTest.java b/tests/src/com/android/dialer/filterednumber/FilteredNumbersUtilTest.java
index 180295c..ccd95ab 100644
--- a/tests/src/com/android/dialer/filterednumber/FilteredNumbersUtilTest.java
+++ b/tests/src/com/android/dialer/filterednumber/FilteredNumbersUtilTest.java
@@ -15,6 +15,7 @@
*/
package com.android.dialer.filterednumber;
+import android.preference.PreferenceManager;
import android.test.AndroidTestCase;
import com.android.contacts.common.test.mocks.ContactsMockContext;
@@ -46,6 +47,12 @@
public void setUp() throws Exception {
super.setUp();
mContext = new ContactsMockContext(getContext(), FilteredNumberContract.AUTHORITY);
+
+ // Reset whether an emergency number was dialed
+ PreferenceManager.getDefaultSharedPreferences(mContext)
+ .edit()
+ .putLong(FilteredNumbersUtil.LAST_EMERGENCY_CALL_MS_PREF_KEY, 0)
+ .apply();
}
public void testShouldBlockVoicemail_NotBlocked() {
@@ -78,6 +85,17 @@
COUNTRY_ISO, EARLIER_TIME + 30000));
}
+ public void testShouldBlockVoicemail_AfterEmergencyCall() {
+ // Just called emergency services
+ PreferenceManager.getDefaultSharedPreferences(mContext)
+ .edit()
+ .putLong(FilteredNumbersUtil.LAST_EMERGENCY_CALL_MS_PREF_KEY,
+ System.currentTimeMillis())
+ .apply();
+ assertFalse(FilteredNumbersUtil.shouldBlockVoicemail(mContext, NORMALIZED_NUMBER,
+ COUNTRY_ISO, 0));
+ }
+
private void setupShouldBlockVoicemailQuery(long creationTimeMs) {
Query query = mContext.getContactsProvider().expectQuery(FilteredNumber.CONTENT_URI)
.withProjection(FILTERED_NUMBER_PROJECTION)