summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Roozbeh Pournader <roozbeh@google.com> 2017-06-15 17:21:48 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2017-06-15 17:21:58 +0000
commit0a47bdbe4b1d8e99a56c505b65b8578c6e92d657 (patch)
tree4f44c09480dc0aca86b91a120126bafcac74078c
parentbc6a3043a24fe1418d611911c0097ec04c8453f1 (diff)
parentdc8f3ef561503defa43a97ac698fd56396e38766 (diff)
Merge "Make Linkify use the SIM card's country for phone numbers"
-rw-r--r--core/java/android/text/util/Linkify.java26
-rw-r--r--core/tests/coretests/src/android/text/util/LinkifyTest.java4
2 files changed, 21 insertions, 9 deletions
diff --git a/core/java/android/text/util/Linkify.java b/core/java/android/text/util/Linkify.java
index 7e6eb4906c20..768aee91e5b3 100644
--- a/core/java/android/text/util/Linkify.java
+++ b/core/java/android/text/util/Linkify.java
@@ -19,7 +19,9 @@ package android.text.util;
import android.annotation.IntDef;
import android.annotation.NonNull;
import android.annotation.Nullable;
+import android.content.Context;
import android.telephony.PhoneNumberUtils;
+import android.telephony.TelephonyManager;
import android.text.Spannable;
import android.text.SpannableString;
import android.text.Spanned;
@@ -221,6 +223,11 @@ public class Linkify {
* @return True if at least one link is found and applied.
*/
public static final boolean addLinks(@NonNull Spannable text, @LinkifyMask int mask) {
+ return addLinks(text, mask, null);
+ }
+
+ private static boolean addLinks(@NonNull Spannable text, @LinkifyMask int mask,
+ @Nullable Context context) {
if (mask == 0) {
return false;
}
@@ -246,7 +253,7 @@ public class Linkify {
}
if ((mask & PHONE_NUMBERS) != 0) {
- gatherTelLinks(links, text);
+ gatherTelLinks(links, text, context);
}
if ((mask & MAP_ADDRESSES) != 0) {
@@ -282,10 +289,10 @@ public class Linkify {
return false;
}
- CharSequence t = text.getText();
-
+ final Context context = text.getContext();
+ final CharSequence t = text.getText();
if (t instanceof Spannable) {
- if (addLinks((Spannable) t, mask)) {
+ if (addLinks((Spannable) t, mask, context)) {
addLinkMovementMethod(text);
return true;
}
@@ -294,7 +301,7 @@ public class Linkify {
} else {
SpannableString s = SpannableString.valueOf(t);
- if (addLinks(s, mask)) {
+ if (addLinks(s, mask, context)) {
addLinkMovementMethod(text);
text.setText(s);
@@ -528,10 +535,15 @@ public class Linkify {
}
}
- private static final void gatherTelLinks(ArrayList<LinkSpec> links, Spannable s) {
+ private static void gatherTelLinks(ArrayList<LinkSpec> links, Spannable s,
+ @Nullable Context context) {
PhoneNumberUtil phoneUtil = PhoneNumberUtil.getInstance();
+ final TelephonyManager tm = (context == null)
+ ? TelephonyManager.getDefault()
+ : TelephonyManager.from(context);
Iterable<PhoneNumberMatch> matches = phoneUtil.findNumbers(s.toString(),
- Locale.getDefault().getCountry(), Leniency.POSSIBLE, Long.MAX_VALUE);
+ tm.getSimCountryIso().toUpperCase(Locale.US),
+ Leniency.POSSIBLE, Long.MAX_VALUE);
for (PhoneNumberMatch match : matches) {
LinkSpec spec = new LinkSpec();
spec.url = "tel:" + PhoneNumberUtils.normalizeNumber(match.rawString());
diff --git a/core/tests/coretests/src/android/text/util/LinkifyTest.java b/core/tests/coretests/src/android/text/util/LinkifyTest.java
index 73ff046f0f83..be3a0be079bf 100644
--- a/core/tests/coretests/src/android/text/util/LinkifyTest.java
+++ b/core/tests/coretests/src/android/text/util/LinkifyTest.java
@@ -80,7 +80,7 @@ public class LinkifyTest {
tv = new TextView(createUsEnglishContext());
tv.setAutoLinkMask(Linkify.ALL);
- tv.setText("Hey, foo@google.com, call 415-555-1212.");
+ tv.setText("Hey, foo@google.com, call +1-415-555-1212.");
assertTrue(tv.getMovementMethod() instanceof LinkMovementMethod);
assertTrue(tv.getUrls().length == 2);
@@ -93,7 +93,7 @@ public class LinkifyTest {
tv = new TextView(createUsEnglishContext());
tv.setAutoLinkMask(Linkify.ALL);
tv.setLinksClickable(false);
- tv.setText("Hey, foo@google.com, call 415-555-1212.");
+ tv.setText("Hey, foo@google.com, call +1-415-555-1212.");
assertFalse(tv.getMovementMethod() instanceof LinkMovementMethod);
assertTrue(tv.getUrls().length == 2);