172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project/*
2bd09a4b8c2d1f922f1459c4d7b61e7e87ed4ddf3The Android Open Source Project * Copyright (C) 2009 The Android Open Source Project
372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project *
472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License");
572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * you may not use this file except in compliance with the License.
672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * You may obtain a copy of the License at
772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project *
872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project *      http://www.apache.org/licenses/LICENSE-2.0
972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project *
1072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * Unless required by applicable law or agreed to in writing, software
1172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS,
1272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * See the License for the specific language governing permissions and
1472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * limitations under the License.
1572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project */
1672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
1772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Projectpackage com.android.mms;
1872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
1986a1cf79bf92dbb2b9d09431379bff6de83c2581Tom Taylorimport java.io.IOException;
2086a1cf79bf92dbb2b9d09431379bff6de83c2581Tom Taylor
2186a1cf79bf92dbb2b9d09431379bff6de83c2581Tom Taylorimport org.xmlpull.v1.XmlPullParser;
2286a1cf79bf92dbb2b9d09431379bff6de83c2581Tom Taylorimport org.xmlpull.v1.XmlPullParserException;
2386a1cf79bf92dbb2b9d09431379bff6de83c2581Tom Taylor
2486a1cf79bf92dbb2b9d09431379bff6de83c2581Tom Taylorimport android.content.Context;
2586a1cf79bf92dbb2b9d09431379bff6de83c2581Tom Taylorimport android.content.res.XmlResourceParser;
2686a1cf79bf92dbb2b9d09431379bff6de83c2581Tom Taylorimport android.util.Log;
2786a1cf79bf92dbb2b9d09431379bff6de83c2581Tom Taylor
28d64419030e1fec1e751695dab3bd7236e2fb0214Roger Chenimport com.android.internal.telephony.TelephonyProperties;
29d64419030e1fec1e751695dab3bd7236e2fb0214Roger Chen
3072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Projectpublic class MmsConfig {
3186a1cf79bf92dbb2b9d09431379bff6de83c2581Tom Taylor    private static final String TAG = "MmsConfig";
324dbb2b9b7786d168b36f6af101456315dcb75039Tom Taylor    private static final boolean DEBUG = true;
33150c4179995cc0a75f934ef194372f9295957ca2Joe Onorato    private static final boolean LOCAL_LOGV = false;
343b3d9ba082ee58fe2d408890ec3cbeee846e57ffWei Huang
353b3d9ba082ee58fe2d408890ec3cbeee846e57ffWei Huang    private static final String DEFAULT_HTTP_KEY_X_WAP_PROFILE = "x-wap-profile";
361b37c93a3b67483ee9b0ad604a2e1e9d8aaa84d9Wei Huang    private static final String DEFAULT_USER_AGENT = "Android-Mms/2.0";
373b3d9ba082ee58fe2d408890ec3cbeee846e57ffWei Huang
386e78b272d691669e12519d32c77d9b85abf0b05fWei Huang    private static final int MAX_IMAGE_HEIGHT = 480;
396e78b272d691669e12519d32c77d9b85abf0b05fWei Huang    private static final int MAX_IMAGE_WIDTH = 640;
405751c241c4a9cb19668788e2ae83ca6e8287375cSoojung Shin    private static final int MAX_TEXT_LENGTH = 2000;
416e78b272d691669e12519d32c77d9b85abf0b05fWei Huang
4272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    /**
43bd09a4b8c2d1f922f1459c4d7b61e7e87ed4ddf3The Android Open Source Project     * Whether to hide MMS functionality from the user (i.e. SMS only).
4472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project     */
45604b2555f16c8f90dd083b326590ab4bd8526244Satish Roddom    private static boolean mTransIdEnabled = false;
466e78b272d691669e12519d32c77d9b85abf0b05fWei Huang    private static int mMmsEnabled = 1;                         // default to true
476e78b272d691669e12519d32c77d9b85abf0b05fWei Huang    private static int mMaxMessageSize = 300 * 1024;            // default to 300k max size
486e78b272d691669e12519d32c77d9b85abf0b05fWei Huang    private static String mUserAgent = DEFAULT_USER_AGENT;
496e78b272d691669e12519d32c77d9b85abf0b05fWei Huang    private static String mUaProfTagName = DEFAULT_HTTP_KEY_X_WAP_PROFILE;
5086a1cf79bf92dbb2b9d09431379bff6de83c2581Tom Taylor    private static String mUaProfUrl = null;
5189e7af1acc0b62f2822ace8df6d56f4c6d37a40fChristian Gustafsson    private static String mHttpParams = null;
5289e7af1acc0b62f2822ace8df6d56f4c6d37a40fChristian Gustafsson    private static String mHttpParamsLine1Key = null;
53cea16acf02be8943133bc5048b1d64286bfef1d8Satish Roddom    private static String mEmailGateway = null;
546e78b272d691669e12519d32c77d9b85abf0b05fWei Huang    private static int mMaxImageHeight = MAX_IMAGE_HEIGHT;      // default value
556e78b272d691669e12519d32c77d9b85abf0b05fWei Huang    private static int mMaxImageWidth = MAX_IMAGE_WIDTH;        // default value
5653a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor    private static int mRecipientLimit = Integer.MAX_VALUE;     // default value
578718d3d672175f47b24cf82107943fa80232d80dTom Taylor    private static int mDefaultSMSMessagesPerThread = 500;      // default value
588718d3d672175f47b24cf82107943fa80232d80dTom Taylor    private static int mDefaultMMSMessagesPerThread = 50;       // default value
592f3a42025f51d410162b9b4b3583528077117374Tom Taylor    private static int mMinMessageCountPerThread = 2;           // default value
6053a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor    private static int mMaxMessageCountPerThread = 5000;        // default value
61293000e15498b71a4986d7247e60fe8bdaa05a4bWei Huang    private static int mHttpSocketTimeout = 60*1000;            // default to 1 min
62e6367524d22c6bfedfb81c7e068e475b0f807053Tom Taylor    private static int mMinimumSlideElementDuration = 7;        // default to 7 sec
63161c9154aa7aafa397332caee40b2776db988bf7Christian Gustafsson    private static boolean mNotifyWapMMSC = false;
644d620299628c41f9149024f0cf9f42d008aedcf5Tom Taylor    private static boolean mAllowAttachAudio = true;
653356a1506f63daf7b7388d9f541045587036177aTom Taylor
666ac41e1f86acd6fdd37f72c98ea4dc386a1700b3Tom Taylor    // If mEnableMultipartSMS is true, long sms messages are always sent as multi-part sms
676ac41e1f86acd6fdd37f72c98ea4dc386a1700b3Tom Taylor    // messages, with no checked limit on the number of segments.
686ac41e1f86acd6fdd37f72c98ea4dc386a1700b3Tom Taylor    // If mEnableMultipartSMS is false, then as soon as the user types a message longer
696ac41e1f86acd6fdd37f72c98ea4dc386a1700b3Tom Taylor    // than a single segment (i.e. 140 chars), then the message will turn into and be sent
706ac41e1f86acd6fdd37f72c98ea4dc386a1700b3Tom Taylor    // as an mms message. This feature exists for carriers that don't support multi-part sms's.
719aed641d68fafdec88f83d9c4f949ca9ab6fdb0eSoojung Shin    private static boolean mEnableMultipartSMS = true;
723356a1506f63daf7b7388d9f541045587036177aTom Taylor
73364d926784135e4889d74c570868db046a67ccebTom Taylor    // If mEnableMultipartSMS is true and mSmsToMmsTextThreshold > 1, then multi-part SMS messages
74364d926784135e4889d74c570868db046a67ccebTom Taylor    // will be converted into a single mms message. For example, if the mms_config.xml file
75364d926784135e4889d74c570868db046a67ccebTom Taylor    // specifies <int name="smsToMmsTextThreshold">4</int>, then on the 5th sms segment, the
76364d926784135e4889d74c570868db046a67ccebTom Taylor    // message will be converted to an mms.
77364d926784135e4889d74c570868db046a67ccebTom Taylor    private static int mSmsToMmsTextThreshold = -1;
78364d926784135e4889d74c570868db046a67ccebTom Taylor
799aed641d68fafdec88f83d9c4f949ca9ab6fdb0eSoojung Shin    private static boolean mEnableSlideDuration = true;
80602025862f535f493bb348dc2a6cc9a1fe150fb1Tom Taylor    private static boolean mEnableMMSReadReports = true;        // key: "enableMMSReadReports"
81602025862f535f493bb348dc2a6cc9a1fe150fb1Tom Taylor    private static boolean mEnableSMSDeliveryReports = true;    // key: "enableSMSDeliveryReports"
82602025862f535f493bb348dc2a6cc9a1fe150fb1Tom Taylor    private static boolean mEnableMMSDeliveryReports = true;    // key: "enableMMSDeliveryReports"
835751c241c4a9cb19668788e2ae83ca6e8287375cSoojung Shin    private static int mMaxTextLength = -1;
84692636241c9858b6b535c876a79be2f04d8201b5Tom Taylor
85692636241c9858b6b535c876a79be2f04d8201b5Tom Taylor    // This is the max amount of storage multiplied by mMaxMessageSize that we
86692636241c9858b6b535c876a79be2f04d8201b5Tom Taylor    // allow of unsent messages before blocking the user from sending any more
87225e57fc21ad8c625dd0d5af19211b8d8ec2d157Tom Taylor    // MMS's.
88692636241c9858b6b535c876a79be2f04d8201b5Tom Taylor    private static int mMaxSizeScaleForPendingMmsAllowed = 4;       // default value
8907fd438290f18696092b00813ff1c57ac16fa81cTom Taylor
90f6ddd0bb7fff9f479f6c306d3d3e154c6c533061Wei Huang    // Email gateway alias support, including the master switch and different rules
91f6ddd0bb7fff9f479f6c306d3d3e154c6c533061Wei Huang    private static boolean mAliasEnabled = false;
92f6ddd0bb7fff9f479f6c306d3d3e154c6c533061Wei Huang    private static int mAliasRuleMinChars = 2;
93f6ddd0bb7fff9f479f6c306d3d3e154c6c533061Wei Huang    private static int mAliasRuleMaxChars = 48;
94f6ddd0bb7fff9f479f6c306d3d3e154c6c533061Wei Huang
9534396f17239fc1893e8e3c8e157e10c362df9e53Tom Taylor    private static int mMaxSubjectLength = 40;  // maximum number of characters allowed for mms
9634396f17239fc1893e8e3c8e157e10c362df9e53Tom Taylor                                                // subject
9734396f17239fc1893e8e3c8e157e10c362df9e53Tom Taylor
98c1f03822994dc09939060c41e0ce9cb37175b054Tom Taylor    // If mEnableGroupMms is true, a message with multiple recipients, regardless of contents,
99c1f03822994dc09939060c41e0ce9cb37175b054Tom Taylor    // will be sent as a single MMS message with multiple "TO" fields set for each recipient.
1009889006f9d29d0509c1c036987ce028de43ac96eTom Taylor    // If mEnableGroupMms is false, the group MMS setting/preference will be hidden in the settings
1019889006f9d29d0509c1c036987ce028de43ac96eTom Taylor    // activity.
102c1f03822994dc09939060c41e0ce9cb37175b054Tom Taylor    private static boolean mEnableGroupMms = true;
103c1f03822994dc09939060c41e0ce9cb37175b054Tom Taylor
10486a1cf79bf92dbb2b9d09431379bff6de83c2581Tom Taylor    public static void init(Context context) {
10586a1cf79bf92dbb2b9d09431379bff6de83c2581Tom Taylor        if (LOCAL_LOGV) {
10686a1cf79bf92dbb2b9d09431379bff6de83c2581Tom Taylor            Log.v(TAG, "MmsConfig.init()");
10786a1cf79bf92dbb2b9d09431379bff6de83c2581Tom Taylor        }
10810ca1d3969305df50fb07a17f5d23b0ed59f7868Tom Taylor        // Always put the mnc/mcc in the log so we can tell which mms_config.xml was loaded.
10910ca1d3969305df50fb07a17f5d23b0ed59f7868Tom Taylor        Log.v(TAG, "mnc/mcc: " +
11010ca1d3969305df50fb07a17f5d23b0ed59f7868Tom Taylor                android.os.SystemProperties.get(TelephonyProperties.PROPERTY_ICC_OPERATOR_NUMERIC));
11186a1cf79bf92dbb2b9d09431379bff6de83c2581Tom Taylor
11286a1cf79bf92dbb2b9d09431379bff6de83c2581Tom Taylor        loadMmsSettings(context);
11386a1cf79bf92dbb2b9d09431379bff6de83c2581Tom Taylor    }
11407fd438290f18696092b00813ff1c57ac16fa81cTom Taylor
115364d926784135e4889d74c570868db046a67ccebTom Taylor    public static int getSmsToMmsTextThreshold() {
116364d926784135e4889d74c570868db046a67ccebTom Taylor        return mSmsToMmsTextThreshold;
117364d926784135e4889d74c570868db046a67ccebTom Taylor    }
118364d926784135e4889d74c570868db046a67ccebTom Taylor
11986a1cf79bf92dbb2b9d09431379bff6de83c2581Tom Taylor    public static boolean getMmsEnabled() {
12086a1cf79bf92dbb2b9d09431379bff6de83c2581Tom Taylor        return mMmsEnabled == 1 ? true : false;
12186a1cf79bf92dbb2b9d09431379bff6de83c2581Tom Taylor    }
12207fd438290f18696092b00813ff1c57ac16fa81cTom Taylor
12386a1cf79bf92dbb2b9d09431379bff6de83c2581Tom Taylor    public static int getMaxMessageSize() {
1244dbb2b9b7786d168b36f6af101456315dcb75039Tom Taylor        if (LOCAL_LOGV) {
1254dbb2b9b7786d168b36f6af101456315dcb75039Tom Taylor            Log.v(TAG, "MmsConfig.getMaxMessageSize(): " + mMaxMessageSize);
1264dbb2b9b7786d168b36f6af101456315dcb75039Tom Taylor        }
1274dbb2b9b7786d168b36f6af101456315dcb75039Tom Taylor       return mMaxMessageSize;
12886a1cf79bf92dbb2b9d09431379bff6de83c2581Tom Taylor    }
12907fd438290f18696092b00813ff1c57ac16fa81cTom Taylor
130604b2555f16c8f90dd083b326590ab4bd8526244Satish Roddom    /**
131604b2555f16c8f90dd083b326590ab4bd8526244Satish Roddom     * This function returns the value of "enabledTransID" present in mms_config file.
132604b2555f16c8f90dd083b326590ab4bd8526244Satish Roddom     * In case of single segment wap push message, this "enabledTransID" indicates whether
133604b2555f16c8f90dd083b326590ab4bd8526244Satish Roddom     * TransactionID should be appended to URI or not.
134604b2555f16c8f90dd083b326590ab4bd8526244Satish Roddom     */
135604b2555f16c8f90dd083b326590ab4bd8526244Satish Roddom    public static boolean getTransIdEnabled() {
136604b2555f16c8f90dd083b326590ab4bd8526244Satish Roddom        return mTransIdEnabled;
137604b2555f16c8f90dd083b326590ab4bd8526244Satish Roddom    }
138604b2555f16c8f90dd083b326590ab4bd8526244Satish Roddom
13989e7af1acc0b62f2822ace8df6d56f4c6d37a40fChristian Gustafsson    public static String getUserAgent() {
14089e7af1acc0b62f2822ace8df6d56f4c6d37a40fChristian Gustafsson        return mUserAgent;
14189e7af1acc0b62f2822ace8df6d56f4c6d37a40fChristian Gustafsson    }
14289e7af1acc0b62f2822ace8df6d56f4c6d37a40fChristian Gustafsson
14389e7af1acc0b62f2822ace8df6d56f4c6d37a40fChristian Gustafsson    public static String getUaProfTagName() {
14489e7af1acc0b62f2822ace8df6d56f4c6d37a40fChristian Gustafsson        return mUaProfTagName;
14589e7af1acc0b62f2822ace8df6d56f4c6d37a40fChristian Gustafsson    }
14689e7af1acc0b62f2822ace8df6d56f4c6d37a40fChristian Gustafsson
14786a1cf79bf92dbb2b9d09431379bff6de83c2581Tom Taylor    public static String getUaProfUrl() {
14886a1cf79bf92dbb2b9d09431379bff6de83c2581Tom Taylor        return mUaProfUrl;
14986a1cf79bf92dbb2b9d09431379bff6de83c2581Tom Taylor    }
15086a1cf79bf92dbb2b9d09431379bff6de83c2581Tom Taylor
15189e7af1acc0b62f2822ace8df6d56f4c6d37a40fChristian Gustafsson    public static String getHttpParams() {
15289e7af1acc0b62f2822ace8df6d56f4c6d37a40fChristian Gustafsson        return mHttpParams;
15389e7af1acc0b62f2822ace8df6d56f4c6d37a40fChristian Gustafsson    }
15489e7af1acc0b62f2822ace8df6d56f4c6d37a40fChristian Gustafsson
15589e7af1acc0b62f2822ace8df6d56f4c6d37a40fChristian Gustafsson    public static String getHttpParamsLine1Key() {
15689e7af1acc0b62f2822ace8df6d56f4c6d37a40fChristian Gustafsson        return mHttpParamsLine1Key;
15789e7af1acc0b62f2822ace8df6d56f4c6d37a40fChristian Gustafsson    }
15889e7af1acc0b62f2822ace8df6d56f4c6d37a40fChristian Gustafsson
159cea16acf02be8943133bc5048b1d64286bfef1d8Satish Roddom    public static String getEmailGateway() {
160cea16acf02be8943133bc5048b1d64286bfef1d8Satish Roddom        return mEmailGateway;
161cea16acf02be8943133bc5048b1d64286bfef1d8Satish Roddom    }
162cea16acf02be8943133bc5048b1d64286bfef1d8Satish Roddom
16386a1cf79bf92dbb2b9d09431379bff6de83c2581Tom Taylor    public static int getMaxImageHeight() {
16486a1cf79bf92dbb2b9d09431379bff6de83c2581Tom Taylor        return mMaxImageHeight;
16586a1cf79bf92dbb2b9d09431379bff6de83c2581Tom Taylor    }
16607fd438290f18696092b00813ff1c57ac16fa81cTom Taylor
16786a1cf79bf92dbb2b9d09431379bff6de83c2581Tom Taylor    public static int getMaxImageWidth() {
16886a1cf79bf92dbb2b9d09431379bff6de83c2581Tom Taylor        return mMaxImageWidth;
16986a1cf79bf92dbb2b9d09431379bff6de83c2581Tom Taylor    }
17086a1cf79bf92dbb2b9d09431379bff6de83c2581Tom Taylor
17107fd438290f18696092b00813ff1c57ac16fa81cTom Taylor    public static int getRecipientLimit() {
17207fd438290f18696092b00813ff1c57ac16fa81cTom Taylor        return mRecipientLimit;
17307fd438290f18696092b00813ff1c57ac16fa81cTom Taylor    }
17407fd438290f18696092b00813ff1c57ac16fa81cTom Taylor
1755751c241c4a9cb19668788e2ae83ca6e8287375cSoojung Shin    public static int getMaxTextLimit() {
1765751c241c4a9cb19668788e2ae83ca6e8287375cSoojung Shin        return mMaxTextLength > -1 ? mMaxTextLength : MAX_TEXT_LENGTH;
1775751c241c4a9cb19668788e2ae83ca6e8287375cSoojung Shin    }
1785751c241c4a9cb19668788e2ae83ca6e8287375cSoojung Shin
17953a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor    public static int getDefaultSMSMessagesPerThread() {
18053a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor        return mDefaultSMSMessagesPerThread;
18153a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor    }
18253a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor
18353a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor    public static int getDefaultMMSMessagesPerThread() {
18453a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor        return mDefaultMMSMessagesPerThread;
18553a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor    }
18653a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor
18753a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor    public static int getMinMessageCountPerThread() {
18853a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor        return mMinMessageCountPerThread;
18953a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor    }
19053a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor
19153a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor    public static int getMaxMessageCountPerThread() {
19253a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor        return mMaxMessageCountPerThread;
19353a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor    }
19453a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor
195293000e15498b71a4986d7247e60fe8bdaa05a4bWei Huang    public static int getHttpSocketTimeout() {
196293000e15498b71a4986d7247e60fe8bdaa05a4bWei Huang        return mHttpSocketTimeout;
197293000e15498b71a4986d7247e60fe8bdaa05a4bWei Huang    }
198293000e15498b71a4986d7247e60fe8bdaa05a4bWei Huang
199e6367524d22c6bfedfb81c7e068e475b0f807053Tom Taylor    public static int getMinimumSlideElementDuration() {
200e6367524d22c6bfedfb81c7e068e475b0f807053Tom Taylor        return mMinimumSlideElementDuration;
201e6367524d22c6bfedfb81c7e068e475b0f807053Tom Taylor    }
202e6367524d22c6bfedfb81c7e068e475b0f807053Tom Taylor
2039aed641d68fafdec88f83d9c4f949ca9ab6fdb0eSoojung Shin    public static boolean getMultipartSmsEnabled() {
2049aed641d68fafdec88f83d9c4f949ca9ab6fdb0eSoojung Shin        return mEnableMultipartSMS;
2059aed641d68fafdec88f83d9c4f949ca9ab6fdb0eSoojung Shin    }
2069aed641d68fafdec88f83d9c4f949ca9ab6fdb0eSoojung Shin
2079aed641d68fafdec88f83d9c4f949ca9ab6fdb0eSoojung Shin    public static boolean getSlideDurationEnabled() {
2089aed641d68fafdec88f83d9c4f949ca9ab6fdb0eSoojung Shin        return mEnableSlideDuration;
2099aed641d68fafdec88f83d9c4f949ca9ab6fdb0eSoojung Shin    }
2109aed641d68fafdec88f83d9c4f949ca9ab6fdb0eSoojung Shin
211602025862f535f493bb348dc2a6cc9a1fe150fb1Tom Taylor    public static boolean getMMSReadReportsEnabled() {
212602025862f535f493bb348dc2a6cc9a1fe150fb1Tom Taylor        return mEnableMMSReadReports;
213602025862f535f493bb348dc2a6cc9a1fe150fb1Tom Taylor    }
214602025862f535f493bb348dc2a6cc9a1fe150fb1Tom Taylor
215602025862f535f493bb348dc2a6cc9a1fe150fb1Tom Taylor    public static boolean getSMSDeliveryReportsEnabled() {
216602025862f535f493bb348dc2a6cc9a1fe150fb1Tom Taylor        return mEnableSMSDeliveryReports;
217602025862f535f493bb348dc2a6cc9a1fe150fb1Tom Taylor    }
218602025862f535f493bb348dc2a6cc9a1fe150fb1Tom Taylor
219602025862f535f493bb348dc2a6cc9a1fe150fb1Tom Taylor    public static boolean getMMSDeliveryReportsEnabled() {
220602025862f535f493bb348dc2a6cc9a1fe150fb1Tom Taylor        return mEnableMMSDeliveryReports;
221602025862f535f493bb348dc2a6cc9a1fe150fb1Tom Taylor    }
222602025862f535f493bb348dc2a6cc9a1fe150fb1Tom Taylor
223161c9154aa7aafa397332caee40b2776db988bf7Christian Gustafsson    public static boolean getNotifyWapMMSC() {
224161c9154aa7aafa397332caee40b2776db988bf7Christian Gustafsson        return mNotifyWapMMSC;
225161c9154aa7aafa397332caee40b2776db988bf7Christian Gustafsson    }
226161c9154aa7aafa397332caee40b2776db988bf7Christian Gustafsson
227692636241c9858b6b535c876a79be2f04d8201b5Tom Taylor    public static int getMaxSizeScaleForPendingMmsAllowed() {
228692636241c9858b6b535c876a79be2f04d8201b5Tom Taylor        return mMaxSizeScaleForPendingMmsAllowed;
229c44a89a040956a7b9635de4a9bcf1d7230692750Tom Taylor    }
230c44a89a040956a7b9635de4a9bcf1d7230692750Tom Taylor
231f6ddd0bb7fff9f479f6c306d3d3e154c6c533061Wei Huang    public static boolean isAliasEnabled() {
232f6ddd0bb7fff9f479f6c306d3d3e154c6c533061Wei Huang        return mAliasEnabled;
233f6ddd0bb7fff9f479f6c306d3d3e154c6c533061Wei Huang    }
234f6ddd0bb7fff9f479f6c306d3d3e154c6c533061Wei Huang
235f6ddd0bb7fff9f479f6c306d3d3e154c6c533061Wei Huang    public static int getAliasMinChars() {
236f6ddd0bb7fff9f479f6c306d3d3e154c6c533061Wei Huang        return mAliasRuleMinChars;
237f6ddd0bb7fff9f479f6c306d3d3e154c6c533061Wei Huang    }
238f6ddd0bb7fff9f479f6c306d3d3e154c6c533061Wei Huang
239f6ddd0bb7fff9f479f6c306d3d3e154c6c533061Wei Huang    public static int getAliasMaxChars() {
240f6ddd0bb7fff9f479f6c306d3d3e154c6c533061Wei Huang        return mAliasRuleMaxChars;
241f6ddd0bb7fff9f479f6c306d3d3e154c6c533061Wei Huang    }
242f6ddd0bb7fff9f479f6c306d3d3e154c6c533061Wei Huang
2434d620299628c41f9149024f0cf9f42d008aedcf5Tom Taylor    public static boolean getAllowAttachAudio() {
2444d620299628c41f9149024f0cf9f42d008aedcf5Tom Taylor        return mAllowAttachAudio;
2454d620299628c41f9149024f0cf9f42d008aedcf5Tom Taylor    }
2464d620299628c41f9149024f0cf9f42d008aedcf5Tom Taylor
24734396f17239fc1893e8e3c8e157e10c362df9e53Tom Taylor    public static int getMaxSubjectLength() {
24834396f17239fc1893e8e3c8e157e10c362df9e53Tom Taylor        return mMaxSubjectLength;
24934396f17239fc1893e8e3c8e157e10c362df9e53Tom Taylor    }
25034396f17239fc1893e8e3c8e157e10c362df9e53Tom Taylor
251c1f03822994dc09939060c41e0ce9cb37175b054Tom Taylor    public static boolean getGroupMmsEnabled() {
252c1f03822994dc09939060c41e0ce9cb37175b054Tom Taylor        return mEnableGroupMms;
253c1f03822994dc09939060c41e0ce9cb37175b054Tom Taylor    }
254c1f03822994dc09939060c41e0ce9cb37175b054Tom Taylor
2554d33cdcbb402a87ffeeaddb58237c70c4608c6f5Dianne Hackborn    public static final void beginDocument(XmlPullParser parser, String firstElementName) throws XmlPullParserException, IOException
2564d33cdcbb402a87ffeeaddb58237c70c4608c6f5Dianne Hackborn    {
2574d33cdcbb402a87ffeeaddb58237c70c4608c6f5Dianne Hackborn        int type;
2584d33cdcbb402a87ffeeaddb58237c70c4608c6f5Dianne Hackborn        while ((type=parser.next()) != parser.START_TAG
2594d33cdcbb402a87ffeeaddb58237c70c4608c6f5Dianne Hackborn                   && type != parser.END_DOCUMENT) {
2604d33cdcbb402a87ffeeaddb58237c70c4608c6f5Dianne Hackborn            ;
2614d33cdcbb402a87ffeeaddb58237c70c4608c6f5Dianne Hackborn        }
2624d33cdcbb402a87ffeeaddb58237c70c4608c6f5Dianne Hackborn
2634d33cdcbb402a87ffeeaddb58237c70c4608c6f5Dianne Hackborn        if (type != parser.START_TAG) {
2644d33cdcbb402a87ffeeaddb58237c70c4608c6f5Dianne Hackborn            throw new XmlPullParserException("No start tag found");
2654d33cdcbb402a87ffeeaddb58237c70c4608c6f5Dianne Hackborn        }
2664d33cdcbb402a87ffeeaddb58237c70c4608c6f5Dianne Hackborn
2674d33cdcbb402a87ffeeaddb58237c70c4608c6f5Dianne Hackborn        if (!parser.getName().equals(firstElementName)) {
2684d33cdcbb402a87ffeeaddb58237c70c4608c6f5Dianne Hackborn            throw new XmlPullParserException("Unexpected start tag: found " + parser.getName() +
2694d33cdcbb402a87ffeeaddb58237c70c4608c6f5Dianne Hackborn                    ", expected " + firstElementName);
2704d33cdcbb402a87ffeeaddb58237c70c4608c6f5Dianne Hackborn        }
2714d33cdcbb402a87ffeeaddb58237c70c4608c6f5Dianne Hackborn    }
2724d33cdcbb402a87ffeeaddb58237c70c4608c6f5Dianne Hackborn
2734d33cdcbb402a87ffeeaddb58237c70c4608c6f5Dianne Hackborn    public static final void nextElement(XmlPullParser parser) throws XmlPullParserException, IOException
2744d33cdcbb402a87ffeeaddb58237c70c4608c6f5Dianne Hackborn    {
2754d33cdcbb402a87ffeeaddb58237c70c4608c6f5Dianne Hackborn        int type;
2764d33cdcbb402a87ffeeaddb58237c70c4608c6f5Dianne Hackborn        while ((type=parser.next()) != parser.START_TAG
2774d33cdcbb402a87ffeeaddb58237c70c4608c6f5Dianne Hackborn                   && type != parser.END_DOCUMENT) {
2784d33cdcbb402a87ffeeaddb58237c70c4608c6f5Dianne Hackborn            ;
2794d33cdcbb402a87ffeeaddb58237c70c4608c6f5Dianne Hackborn        }
2804d33cdcbb402a87ffeeaddb58237c70c4608c6f5Dianne Hackborn    }
2814dbb2b9b7786d168b36f6af101456315dcb75039Tom Taylor
28286a1cf79bf92dbb2b9d09431379bff6de83c2581Tom Taylor    private static void loadMmsSettings(Context context) {
2836e78b272d691669e12519d32c77d9b85abf0b05fWei Huang        XmlResourceParser parser = context.getResources().getXml(R.xml.mms_config);
28486a1cf79bf92dbb2b9d09431379bff6de83c2581Tom Taylor
28586a1cf79bf92dbb2b9d09431379bff6de83c2581Tom Taylor        try {
2864d33cdcbb402a87ffeeaddb58237c70c4608c6f5Dianne Hackborn            beginDocument(parser, "mms_config");
28707fd438290f18696092b00813ff1c57ac16fa81cTom Taylor
28886a1cf79bf92dbb2b9d09431379bff6de83c2581Tom Taylor            while (true) {
2894d33cdcbb402a87ffeeaddb58237c70c4608c6f5Dianne Hackborn                nextElement(parser);
29086a1cf79bf92dbb2b9d09431379bff6de83c2581Tom Taylor                String tag = parser.getName();
29186a1cf79bf92dbb2b9d09431379bff6de83c2581Tom Taylor                if (tag == null) {
29286a1cf79bf92dbb2b9d09431379bff6de83c2581Tom Taylor                    break;
29386a1cf79bf92dbb2b9d09431379bff6de83c2581Tom Taylor                }
29486a1cf79bf92dbb2b9d09431379bff6de83c2581Tom Taylor                String name = parser.getAttributeName(0);
29586a1cf79bf92dbb2b9d09431379bff6de83c2581Tom Taylor                String value = parser.getAttributeValue(0);
29686a1cf79bf92dbb2b9d09431379bff6de83c2581Tom Taylor                String text = null;
29786a1cf79bf92dbb2b9d09431379bff6de83c2581Tom Taylor                if (parser.next() == XmlPullParser.TEXT) {
29886a1cf79bf92dbb2b9d09431379bff6de83c2581Tom Taylor                    text = parser.getText();
29986a1cf79bf92dbb2b9d09431379bff6de83c2581Tom Taylor                }
30086a1cf79bf92dbb2b9d09431379bff6de83c2581Tom Taylor
30107fd438290f18696092b00813ff1c57ac16fa81cTom Taylor                if (DEBUG) {
30269a363ed65b1d8b9948f20f499d124bd31e0c941Tom Taylor                    Log.v(TAG, "tag: " + tag + " value: " + value + " - " +
30369a363ed65b1d8b9948f20f499d124bd31e0c941Tom Taylor                            text);
30407fd438290f18696092b00813ff1c57ac16fa81cTom Taylor                }
30586a1cf79bf92dbb2b9d09431379bff6de83c2581Tom Taylor                if ("name".equalsIgnoreCase(name)) {
30686a1cf79bf92dbb2b9d09431379bff6de83c2581Tom Taylor                    if ("bool".equals(tag)) {
30786a1cf79bf92dbb2b9d09431379bff6de83c2581Tom Taylor                        // bool config tags go here
30886a1cf79bf92dbb2b9d09431379bff6de83c2581Tom Taylor                        if ("enabledMMS".equalsIgnoreCase(value)) {
30986a1cf79bf92dbb2b9d09431379bff6de83c2581Tom Taylor                            mMmsEnabled = "true".equalsIgnoreCase(text) ? 1 : 0;
310604b2555f16c8f90dd083b326590ab4bd8526244Satish Roddom                        } else if ("enabledTransID".equalsIgnoreCase(value)) {
311604b2555f16c8f90dd083b326590ab4bd8526244Satish Roddom                            mTransIdEnabled = "true".equalsIgnoreCase(text);
312161c9154aa7aafa397332caee40b2776db988bf7Christian Gustafsson                        } else if ("enabledNotifyWapMMSC".equalsIgnoreCase(value)) {
313161c9154aa7aafa397332caee40b2776db988bf7Christian Gustafsson                            mNotifyWapMMSC = "true".equalsIgnoreCase(text);
314f6ddd0bb7fff9f479f6c306d3d3e154c6c533061Wei Huang                        } else if ("aliasEnabled".equalsIgnoreCase(value)) {
315f6ddd0bb7fff9f479f6c306d3d3e154c6c533061Wei Huang                            mAliasEnabled = "true".equalsIgnoreCase(text);
3164d620299628c41f9149024f0cf9f42d008aedcf5Tom Taylor                        } else if ("allowAttachAudio".equalsIgnoreCase(value)) {
3174d620299628c41f9149024f0cf9f42d008aedcf5Tom Taylor                            mAllowAttachAudio = "true".equalsIgnoreCase(text);
3189aed641d68fafdec88f83d9c4f949ca9ab6fdb0eSoojung Shin                        } else if ("enableMultipartSMS".equalsIgnoreCase(value)) {
3199aed641d68fafdec88f83d9c4f949ca9ab6fdb0eSoojung Shin                            mEnableMultipartSMS = "true".equalsIgnoreCase(text);
3209aed641d68fafdec88f83d9c4f949ca9ab6fdb0eSoojung Shin                        } else if ("enableSlideDuration".equalsIgnoreCase(value)) {
3219aed641d68fafdec88f83d9c4f949ca9ab6fdb0eSoojung Shin                            mEnableSlideDuration = "true".equalsIgnoreCase(text);
322602025862f535f493bb348dc2a6cc9a1fe150fb1Tom Taylor                        } else if ("enableMMSReadReports".equalsIgnoreCase(value)) {
323602025862f535f493bb348dc2a6cc9a1fe150fb1Tom Taylor                            mEnableMMSReadReports = "true".equalsIgnoreCase(text);
324602025862f535f493bb348dc2a6cc9a1fe150fb1Tom Taylor                        } else if ("enableSMSDeliveryReports".equalsIgnoreCase(value)) {
325602025862f535f493bb348dc2a6cc9a1fe150fb1Tom Taylor                            mEnableSMSDeliveryReports = "true".equalsIgnoreCase(text);
326602025862f535f493bb348dc2a6cc9a1fe150fb1Tom Taylor                        } else if ("enableMMSDeliveryReports".equalsIgnoreCase(value)) {
327602025862f535f493bb348dc2a6cc9a1fe150fb1Tom Taylor                            mEnableMMSDeliveryReports = "true".equalsIgnoreCase(text);
3289889006f9d29d0509c1c036987ce028de43ac96eTom Taylor                        } else if ("enableGroupMms".equalsIgnoreCase(value)) {
329c1f03822994dc09939060c41e0ce9cb37175b054Tom Taylor                            mEnableGroupMms = "true".equalsIgnoreCase(text);
33086a1cf79bf92dbb2b9d09431379bff6de83c2581Tom Taylor                        }
33186a1cf79bf92dbb2b9d09431379bff6de83c2581Tom Taylor                    } else if ("int".equals(tag)) {
33286a1cf79bf92dbb2b9d09431379bff6de83c2581Tom Taylor                        // int config tags go here
33386a1cf79bf92dbb2b9d09431379bff6de83c2581Tom Taylor                        if ("maxMessageSize".equalsIgnoreCase(value)) {
33486a1cf79bf92dbb2b9d09431379bff6de83c2581Tom Taylor                            mMaxMessageSize = Integer.parseInt(text);
33586a1cf79bf92dbb2b9d09431379bff6de83c2581Tom Taylor                        } else if ("maxImageHeight".equalsIgnoreCase(value)) {
33686a1cf79bf92dbb2b9d09431379bff6de83c2581Tom Taylor                            mMaxImageHeight = Integer.parseInt(text);
33786a1cf79bf92dbb2b9d09431379bff6de83c2581Tom Taylor                        } else if ("maxImageWidth".equalsIgnoreCase(value)) {
33886a1cf79bf92dbb2b9d09431379bff6de83c2581Tom Taylor                            mMaxImageWidth = Integer.parseInt(text);
33953a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor                        } else if ("defaultSMSMessagesPerThread".equalsIgnoreCase(value)) {
34053a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor                            mDefaultSMSMessagesPerThread = Integer.parseInt(text);
34153a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor                        } else if ("defaultMMSMessagesPerThread".equalsIgnoreCase(value)) {
34253a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor                            mDefaultMMSMessagesPerThread = Integer.parseInt(text);
34353a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor                        } else if ("minMessageCountPerThread".equalsIgnoreCase(value)) {
34453a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor                            mMinMessageCountPerThread = Integer.parseInt(text);
34553a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor                        } else if ("maxMessageCountPerThread".equalsIgnoreCase(value)) {
34653a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor                            mMaxMessageCountPerThread = Integer.parseInt(text);
34707fd438290f18696092b00813ff1c57ac16fa81cTom Taylor                        } else if ("recipientLimit".equalsIgnoreCase(value)) {
34807fd438290f18696092b00813ff1c57ac16fa81cTom Taylor                            mRecipientLimit = Integer.parseInt(text);
34907fd438290f18696092b00813ff1c57ac16fa81cTom Taylor                            if (mRecipientLimit < 0) {
35007fd438290f18696092b00813ff1c57ac16fa81cTom Taylor                                mRecipientLimit = Integer.MAX_VALUE;
35107fd438290f18696092b00813ff1c57ac16fa81cTom Taylor                            }
352293000e15498b71a4986d7247e60fe8bdaa05a4bWei Huang                        } else if ("httpSocketTimeout".equalsIgnoreCase(value)) {
353293000e15498b71a4986d7247e60fe8bdaa05a4bWei Huang                            mHttpSocketTimeout = Integer.parseInt(text);
354e6367524d22c6bfedfb81c7e068e475b0f807053Tom Taylor                        } else if ("minimumSlideElementDuration".equalsIgnoreCase(value)) {
355e6367524d22c6bfedfb81c7e068e475b0f807053Tom Taylor                            mMinimumSlideElementDuration = Integer.parseInt(text);
356692636241c9858b6b535c876a79be2f04d8201b5Tom Taylor                        } else if ("maxSizeScaleForPendingMmsAllowed".equalsIgnoreCase(value)) {
357692636241c9858b6b535c876a79be2f04d8201b5Tom Taylor                            mMaxSizeScaleForPendingMmsAllowed = Integer.parseInt(text);
358f6ddd0bb7fff9f479f6c306d3d3e154c6c533061Wei Huang                        } else if ("aliasMinChars".equalsIgnoreCase(value)) {
359f6ddd0bb7fff9f479f6c306d3d3e154c6c533061Wei Huang                            mAliasRuleMinChars = Integer.parseInt(text);
360f6ddd0bb7fff9f479f6c306d3d3e154c6c533061Wei Huang                        } else if ("aliasMaxChars".equalsIgnoreCase(value)) {
361f6ddd0bb7fff9f479f6c306d3d3e154c6c533061Wei Huang                            mAliasRuleMaxChars = Integer.parseInt(text);
362364d926784135e4889d74c570868db046a67ccebTom Taylor                        } else if ("smsToMmsTextThreshold".equalsIgnoreCase(value)) {
363364d926784135e4889d74c570868db046a67ccebTom Taylor                            mSmsToMmsTextThreshold = Integer.parseInt(text);
3645751c241c4a9cb19668788e2ae83ca6e8287375cSoojung Shin                        } else if ("maxMessageTextSize".equalsIgnoreCase(value)) {
3655751c241c4a9cb19668788e2ae83ca6e8287375cSoojung Shin                            mMaxTextLength = Integer.parseInt(text);
36634396f17239fc1893e8e3c8e157e10c362df9e53Tom Taylor                        } else if ("maxSubjectLength".equalsIgnoreCase(value)) {
36734396f17239fc1893e8e3c8e157e10c362df9e53Tom Taylor                            mMaxSubjectLength = Integer.parseInt(text);
36886a1cf79bf92dbb2b9d09431379bff6de83c2581Tom Taylor                        }
36986a1cf79bf92dbb2b9d09431379bff6de83c2581Tom Taylor                    } else if ("string".equals(tag)) {
37086a1cf79bf92dbb2b9d09431379bff6de83c2581Tom Taylor                        // string config tags go here
37189e7af1acc0b62f2822ace8df6d56f4c6d37a40fChristian Gustafsson                        if ("userAgent".equalsIgnoreCase(value)) {
37289e7af1acc0b62f2822ace8df6d56f4c6d37a40fChristian Gustafsson                            mUserAgent = text;
37389e7af1acc0b62f2822ace8df6d56f4c6d37a40fChristian Gustafsson                        } else if ("uaProfTagName".equalsIgnoreCase(value)) {
37489e7af1acc0b62f2822ace8df6d56f4c6d37a40fChristian Gustafsson                            mUaProfTagName = text;
37589e7af1acc0b62f2822ace8df6d56f4c6d37a40fChristian Gustafsson                        } else if ("uaProfUrl".equalsIgnoreCase(value)) {
37686a1cf79bf92dbb2b9d09431379bff6de83c2581Tom Taylor                            mUaProfUrl = text;
37789e7af1acc0b62f2822ace8df6d56f4c6d37a40fChristian Gustafsson                        } else if ("httpParams".equalsIgnoreCase(value)) {
37889e7af1acc0b62f2822ace8df6d56f4c6d37a40fChristian Gustafsson                            mHttpParams = text;
37989e7af1acc0b62f2822ace8df6d56f4c6d37a40fChristian Gustafsson                        } else if ("httpParamsLine1Key".equalsIgnoreCase(value)) {
38089e7af1acc0b62f2822ace8df6d56f4c6d37a40fChristian Gustafsson                            mHttpParamsLine1Key = text;
381cea16acf02be8943133bc5048b1d64286bfef1d8Satish Roddom                        } else if ("emailGatewayNumber".equalsIgnoreCase(value)) {
382cea16acf02be8943133bc5048b1d64286bfef1d8Satish Roddom                            mEmailGateway = text;
38386a1cf79bf92dbb2b9d09431379bff6de83c2581Tom Taylor                        }
38486a1cf79bf92dbb2b9d09431379bff6de83c2581Tom Taylor                    }
38586a1cf79bf92dbb2b9d09431379bff6de83c2581Tom Taylor                }
38686a1cf79bf92dbb2b9d09431379bff6de83c2581Tom Taylor            }
38786a1cf79bf92dbb2b9d09431379bff6de83c2581Tom Taylor        } catch (XmlPullParserException e) {
388293000e15498b71a4986d7247e60fe8bdaa05a4bWei Huang            Log.e(TAG, "loadMmsSettings caught ", e);
38986a1cf79bf92dbb2b9d09431379bff6de83c2581Tom Taylor        } catch (NumberFormatException e) {
390293000e15498b71a4986d7247e60fe8bdaa05a4bWei Huang            Log.e(TAG, "loadMmsSettings caught ", e);
39186a1cf79bf92dbb2b9d09431379bff6de83c2581Tom Taylor        } catch (IOException e) {
392293000e15498b71a4986d7247e60fe8bdaa05a4bWei Huang            Log.e(TAG, "loadMmsSettings caught ", e);
39386a1cf79bf92dbb2b9d09431379bff6de83c2581Tom Taylor        } finally {
39486a1cf79bf92dbb2b9d09431379bff6de83c2581Tom Taylor            parser.close();
39586a1cf79bf92dbb2b9d09431379bff6de83c2581Tom Taylor        }
3963b3d9ba082ee58fe2d408890ec3cbeee846e57ffWei Huang
39786a1cf79bf92dbb2b9d09431379bff6de83c2581Tom Taylor        String errorStr = null;
3983b3d9ba082ee58fe2d408890ec3cbeee846e57ffWei Huang
399437cfcb32630fb28ca6aa8f90b673d8068627bd1Tom Taylor        if (getMmsEnabled() && mUaProfUrl == null) {
4003b3d9ba082ee58fe2d408890ec3cbeee846e57ffWei Huang            errorStr = "uaProfUrl";
40189e7af1acc0b62f2822ace8df6d56f4c6d37a40fChristian Gustafsson        }
4023b3d9ba082ee58fe2d408890ec3cbeee846e57ffWei Huang
40386a1cf79bf92dbb2b9d09431379bff6de83c2581Tom Taylor        if (errorStr != null) {
40486a1cf79bf92dbb2b9d09431379bff6de83c2581Tom Taylor            String err =
40507fd438290f18696092b00813ff1c57ac16fa81cTom Taylor                String.format("MmsConfig.loadMmsSettings mms_config.xml missing %s setting",
40686a1cf79bf92dbb2b9d09431379bff6de83c2581Tom Taylor                        errorStr);
40786a1cf79bf92dbb2b9d09431379bff6de83c2581Tom Taylor            Log.e(TAG, err);
40886a1cf79bf92dbb2b9d09431379bff6de83c2581Tom Taylor        }
40986a1cf79bf92dbb2b9d09431379bff6de83c2581Tom Taylor    }
41086a1cf79bf92dbb2b9d09431379bff6de83c2581Tom Taylor
41172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project}
412