Merge "Copy isEmailAddress"

This commit is contained in:
Hall Liu
2019-12-31 22:46:49 +00:00
committed by Gerrit Code Review

View File

@@ -18,13 +18,16 @@ package com.android.internal.telephony;
import android.annotation.UnsupportedAppUsage;
import android.os.Build;
import android.provider.Telephony;
import android.telephony.SmsMessage;
import android.text.TextUtils;
import android.util.Patterns;
import com.android.internal.telephony.GsmAlphabet.TextEncodingDetails;
import java.text.BreakIterator;
import java.util.Arrays;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* Base class declaring the specific methods and members for SmsMessage.
@@ -32,6 +35,10 @@ import java.util.Arrays;
*/
public abstract class SmsMessageBase {
// Copied from Telephony.Mms.NAME_ADDR_EMAIL_PATTERN
public static final Pattern NAME_ADDR_EMAIL_PATTERN =
Pattern.compile("\\s*(\"[^\"]*\"|[^<>\"]+)\\s*<([^<>]+)>\\s*");
@UnsupportedAppUsage
public SmsMessageBase() {
}
@@ -356,6 +363,31 @@ public abstract class SmsMessageBase {
}
}
private static String extractAddrSpec(String messageHeader) {
Matcher match = NAME_ADDR_EMAIL_PATTERN.matcher(messageHeader);
if (match.matches()) {
return match.group(2);
}
return messageHeader;
}
/**
* Returns true if the message header string indicates that the message is from a email address.
*
* @param messageHeader message header
* @return {@code true} if it's a message from an email address, {@code false} otherwise.
*/
public static boolean isEmailAddress(String messageHeader) {
if (TextUtils.isEmpty(messageHeader)) {
return false;
}
String s = extractAddrSpec(messageHeader);
Matcher match = Patterns.EMAIL_ADDRESS.matcher(s);
return match.matches();
}
/**
* Try to parse this message as an email gateway message
* There are two ways specified in TS 23.040 Section 3.8 :
@@ -376,11 +408,11 @@ public abstract class SmsMessageBase {
* -or-
* 2. [x@y][ ]/[body]
*/
String[] parts = mMessageBody.split("( /)|( )", 2);
if (parts.length < 2) return;
mEmailFrom = parts[0];
mEmailBody = parts[1];
mIsEmail = Telephony.Mms.isEmailAddress(mEmailFrom);
String[] parts = mMessageBody.split("( /)|( )", 2);
if (parts.length < 2) return;
mEmailFrom = parts[0];
mEmailBody = parts[1];
mIsEmail = isEmailAddress(mEmailFrom);
}
/**