Fix checking for invalid numbers.
Some of the checking for invalid numbers was broken by code
cleanups yesterday, and blocking of numbers which can't be normalized
had been allowed (which is no good). Fixing this, by unifying checks
for whether or not a number can be blocked.
Bug: 25343277
Change-Id: Ia631a3e53e3f9ed58e173055a5e18086d95c9d02
diff --git a/src/com/android/dialer/CallDetailActivity.java b/src/com/android/dialer/CallDetailActivity.java
index 47c3cf0..4e7e7b3 100644
--- a/src/com/android/dialer/CallDetailActivity.java
+++ b/src/com/android/dialer/CallDetailActivity.java
@@ -196,7 +196,6 @@
private PhoneCallDetails mDetails;
protected String mNumber;
private Uri mVoicemailUri;
- private String mDefaultCountryIso;
private String mDisplayNumber;
private ListView mHistoryList;
@@ -242,7 +241,6 @@
mCallerName = (TextView) findViewById(R.id.caller_name);
mCallerNumber = (TextView) findViewById(R.id.caller_number);
mAccountLabel = (TextView) findViewById(R.id.phone_account_label);
- mDefaultCountryIso = GeoUtil.getCurrentCountryIso(this);
mContactPhotoManager = ContactPhotoManager.getInstance(this);
mCallButton = findViewById(R.id.call_back_button);
@@ -391,7 +389,8 @@
}
private void updatePhotoAndBlockActionItem() {
- if (mDetails == null || !FilteredNumbersUtil.canBlockNumber(this, mNumber)) {
+ if (mDetails == null ||
+ !FilteredNumbersUtil.canBlockNumber(this, mNumber, mDetails.countryIso)) {
return;
}
diff --git a/src/com/android/dialer/calllog/CallLogListItemViewHolder.java b/src/com/android/dialer/calllog/CallLogListItemViewHolder.java
index c6337bc..28e406f 100644
--- a/src/com/android/dialer/calllog/CallLogListItemViewHolder.java
+++ b/src/com/android/dialer/calllog/CallLogListItemViewHolder.java
@@ -303,7 +303,7 @@
.setOnMenuItemClickListener(this);
}
- if (FilteredNumbersUtil.canBlockNumber(mContext, number)) {
+ if (FilteredNumbersUtil.canBlockNumber(mContext, number, countryIso)) {
mFilteredNumberAsyncQueryHandler.startBlockedQuery(
new FilteredNumberAsyncQueryHandler.OnCheckBlockedListener() {
@Override
diff --git a/src/com/android/dialer/filterednumber/BlockNumberDialogFragment.java b/src/com/android/dialer/filterednumber/BlockNumberDialogFragment.java
index 425a729..7a94eeb 100644
--- a/src/com/android/dialer/filterednumber/BlockNumberDialogFragment.java
+++ b/src/com/android/dialer/filterednumber/BlockNumberDialogFragment.java
@@ -151,7 +151,7 @@
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
- if (!FilteredNumbersUtil.canBlockNumber(getActivity(), mNumber)) {
+ if (!FilteredNumbersUtil.canBlockNumber(getActivity(), mNumber, mCountryIso)) {
dismiss();
Toast.makeText(getContext(), getString(R.string.invalidNumber, mDisplayNumber),
Toast.LENGTH_SHORT).show();
diff --git a/src/com/android/dialer/filterednumber/FilteredNumbersUtil.java b/src/com/android/dialer/filterednumber/FilteredNumbersUtil.java
index 8a0d792..e7097f4 100644
--- a/src/com/android/dialer/filterednumber/FilteredNumbersUtil.java
+++ b/src/com/android/dialer/filterednumber/FilteredNumbersUtil.java
@@ -37,7 +37,6 @@
import java.util.List;
import com.android.contacts.common.testing.NeededForTesting;
-import com.android.contacts.common.util.PhoneNumberHelper;
import com.android.dialer.R;
import com.android.dialer.database.FilteredNumberAsyncQueryHandler;
import com.android.dialer.database.FilteredNumberAsyncQueryHandler.OnHasBlockedNumbersListener;
@@ -357,9 +356,10 @@
});
}
- public static boolean canBlockNumber(Context context, String number) {
- return !TextUtils.isEmpty(number) && !PhoneNumberUtils.isEmergencyNumber(number)
- && !PhoneNumberHelper.isUriNumber(number);
+ public static boolean canBlockNumber(Context context, String number, String countryIso) {
+ final String normalizedNumber = PhoneNumberUtils.formatNumberToE164(number, countryIso);
+ return !TextUtils.isEmpty(normalizedNumber)
+ && !PhoneNumberUtils.isEmergencyNumber(normalizedNumber);
}
private static long getRecentEmergencyCallThresholdMs(Context context) {