aboutsummaryrefslogtreecommitdiffstats
path: root/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/ContactHelper.java
diff options
context:
space:
mode:
authorDominik Schürmann <dominik@dominikschuermann.de>2015-03-06 11:14:27 +0100
committerDominik Schürmann <dominik@dominikschuermann.de>2015-03-06 11:14:27 +0100
commita03f6d35d6a39e18c81a794e746863792c14a447 (patch)
treef65ede4aeb55d21e1e788449214252a92ee2f834 /OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/ContactHelper.java
parentf31ada30d0d07b999e677ed9f801056451a781d6 (diff)
downloadopen-keychain-a03f6d35d6a39e18c81a794e746863792c14a447.tar.gz
open-keychain-a03f6d35d6a39e18c81a794e746863792c14a447.tar.bz2
open-keychain-a03f6d35d6a39e18c81a794e746863792c14a447.zip
Improve way of getting possible names by filtering out emails
Diffstat (limited to 'OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/ContactHelper.java')
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/ContactHelper.java26
1 files changed, 25 insertions, 1 deletions
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/ContactHelper.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/ContactHelper.java
index c66dc04d0..1de5fca30 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/ContactHelper.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/ContactHelper.java
@@ -43,9 +43,11 @@ import java.io.InputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
+import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
+import java.util.regex.Matcher;
public class ContactHelper {
@@ -54,6 +56,17 @@ public class ContactHelper {
public static List<String> getPossibleUserEmails(Context context) {
Set<String> accountMails = getAccountEmails(context);
accountMails.addAll(getMainProfileContactEmails(context));
+
+ // remove items that are not an email
+ Iterator<String> it = accountMails.iterator();
+ while (it.hasNext()) {
+ String email = it.next();
+ Matcher emailMatcher = Patterns.EMAIL_ADDRESS.matcher(email);
+ if (!emailMatcher.matches()) {
+ it.remove();
+ }
+ }
+
// now return the Set (without duplicates) as a List
return new ArrayList<>(accountMails);
}
@@ -62,6 +75,17 @@ public class ContactHelper {
Set<String> accountMails = getAccountEmails(context);
Set<String> names = getContactNamesFromEmails(context, accountMails);
names.addAll(getMainProfileContactName(context));
+
+ // remove items that are an email
+ Iterator<String> it = names.iterator();
+ while (it.hasNext()) {
+ String email = it.next();
+ Matcher emailMatcher = Patterns.EMAIL_ADDRESS.matcher(email);
+ if (emailMatcher.matches()) {
+ it.remove();
+ }
+ }
+
return new ArrayList<>(names);
}
@@ -256,7 +280,7 @@ public class ContactHelper {
}
public static Bitmap loadPhotoByMasterKeyId(ContentResolver contentResolver, long masterKeyId,
- boolean highRes) {
+ boolean highRes) {
if (masterKeyId == -1) {
return null;
}