Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1bfab824 authored by Automerger Merge Worker's avatar Automerger Merge Worker
Browse files

Merge "Copy isEmailAddress" am: ed384ad6 am: a7c70015

Change-Id: I9be78275fa7b63e53b6deaaf8715f9b635c245a5
parents 6a9108de a7c70015
Loading
Loading
Loading
Loading
+38 −6
Original line number Diff line number Diff line
@@ -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 :
@@ -380,7 +412,7 @@ public abstract class SmsMessageBase {
        if (parts.length < 2) return;
        mEmailFrom = parts[0];
        mEmailBody = parts[1];
         mIsEmail = Telephony.Mms.isEmailAddress(mEmailFrom);
        mIsEmail = isEmailAddress(mEmailFrom);
    }

    /**