1 /*
2  * Copyright (C) 2015 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package androidx.appcompat.mms;
18 
19 import android.os.Bundle;
20 
21 /**
22  * Loader for carrier dependent configuration values
23  */
24 public interface CarrierConfigValuesLoader {
25     /**
26      * Get the carrier config values in a bundle
27      *
28      * @param subId the associated subscription ID for the carrier configuration
29      * @return a bundle of all the values
30      */
get(int subId)31     Bundle get(int subId);
32 
33     // Configuration keys and default values
34 
35     /** Boolean value: if MMS is enabled */
36     public static final String CONFIG_ENABLED_MMS = "enabledMMS";
37     public static final boolean CONFIG_ENABLED_MMS_DEFAULT = true;
38     /**
39      * Boolean value: if transaction ID should be appended to
40      * the download URL of a single segment WAP push message
41      */
42     public static final String CONFIG_ENABLED_TRANS_ID = "enabledTransID";
43     public static final boolean CONFIG_ENABLED_TRANS_ID_DEFAULT = false;
44     /**
45      * Boolean value: if acknowledge or notify response to a download
46      * should be sent to the WAP push message's download URL
47      */
48     public static final String CONFIG_ENABLED_NOTIFY_WAP_MMSC = "enabledNotifyWapMMSC";
49     public static final boolean CONFIG_ENABLED_NOTIFY_WAP_MMSC_DEFAULT = false;
50     /**
51      * Boolean value: if phone number alias can be used
52      */
53     public static final String CONFIG_ALIAS_ENABLED = "aliasEnabled";
54     public static final boolean CONFIG_ALIAS_ENABLED_DEFAULT = false;
55     /**
56      * Boolean value: if audio is allowed in attachment
57      */
58     public static final String CONFIG_ALLOW_ATTACH_AUDIO = "allowAttachAudio";
59     public static final boolean CONFIG_ALLOW_ATTACH_AUDIO_DEFAULT = true;
60     /**
61      * Boolean value: if true, long sms messages are always sent as multi-part sms
62      * messages, with no checked limit on the number of segments. If false, then
63      * as soon as the user types a message longer than a single segment (i.e. 140 chars),
64      * the message will turn into and be sent as an mms message or separate,
65      * independent SMS messages (dependent on CONFIG_SEND_MULTIPART_SMS_AS_SEPARATE_MESSAGES flag).
66      * This feature exists for carriers that don't support multi-part sms.
67      */
68     public static final String CONFIG_ENABLE_MULTIPART_SMS = "enableMultipartSMS";
69     public static final boolean CONFIG_ENABLE_MULTIPART_SMS_DEFAULT = true;
70     /**
71      * Boolean value: if SMS delivery report is supported
72      */
73     public static final String CONFIG_ENABLE_SMS_DELIVERY_REPORTS = "enableSMSDeliveryReports";
74     public static final boolean CONFIG_ENABLE_SMS_DELIVERY_REPORTS_DEFAULT = true;
75     /**
76      * Boolean value: if group MMS is supported
77      */
78     public static final String CONFIG_ENABLE_GROUP_MMS = "enableGroupMms";
79     public static final boolean CONFIG_ENABLE_GROUP_MMS_DEFAULT = true;
80     /**
81      * Boolean value: if the content_disposition field of an MMS part should be parsed
82      * Check wap-230-wsp-20010705-a.pdf, chapter 8.4.2.21. Most carriers support it except some.
83      */
84     public static final String CONFIG_SUPPORT_MMS_CONTENT_DISPOSITION =
85             "supportMmsContentDisposition";
86     public static final boolean CONFIG_SUPPORT_MMS_CONTENT_DISPOSITION_DEFAULT = true;
87     /**
88      * Boolean value: if the sms app should support a link to the system settings
89      * where amber alerts are configured.
90      */
91     public static final String CONFIG_CELL_BROADCAST_APP_LINKS = "config_cellBroadcastAppLinks";
92     public static final boolean CONFIG_CELL_BROADCAST_APP_LINKS_DEFAULT = true;
93     /**
94      * Boolean value: if multipart SMS should be sent as separate SMS messages
95      */
96     public static final String CONFIG_SEND_MULTIPART_SMS_AS_SEPARATE_MESSAGES =
97             "sendMultipartSmsAsSeparateMessages";
98     public static final boolean CONFIG_SEND_MULTIPART_SMS_AS_SEPARATE_MESSAGES_DEFAULT = false;
99     /**
100      * Boolean value: if MMS read report is supported
101      */
102     public static final String CONFIG_ENABLE_MMS_READ_REPORTS = "enableMMSReadReports";
103     public static final boolean CONFIG_ENABLE_MMS_READ_REPORTS_DEFAULT = false;
104     /**
105      * Boolean value: if MMS delivery report is supported
106      */
107     public static final String CONFIG_ENABLE_MMS_DELIVERY_REPORTS = "enableMMSDeliveryReports";
108     public static final boolean CONFIG_ENABLE_MMS_DELIVERY_REPORTS_DEFAULT = false;
109     /**
110      * Boolean value: if "charset" value is supported in the "Content-Type" HTTP header
111      */
112     public static final String CONFIG_SUPPORT_HTTP_CHARSET_HEADER = "supportHttpCharsetHeader";
113     public static final boolean CONFIG_SUPPORT_HTTP_CHARSET_HEADER_DEFAULT = false;
114     /**
115      * Integer value: maximal MMS message size in bytes
116      */
117     public static final String CONFIG_MAX_MESSAGE_SIZE = "maxMessageSize";
118     public static final int CONFIG_MAX_MESSAGE_SIZE_DEFAULT = 300 * 1024;
119     /**
120      * Integer value: maximal MMS image height in pixels
121      */
122     public static final String CONFIG_MAX_IMAGE_HEIGHT = "maxImageHeight";
123     public static final int CONFIG_MAX_IMAGE_HEIGHT_DEFAULT = 480;
124     /**
125      * Integer value: maximal MMS image width in pixels
126      */
127     public static final String CONFIG_MAX_IMAGE_WIDTH = "maxImageWidth";
128     public static final int CONFIG_MAX_IMAGE_WIDTH_DEFAULT = 640;
129     /**
130      * Integer value: limit on recipient list of an MMS message
131      */
132     public static final String CONFIG_RECIPIENT_LIMIT = "recipientLimit";
133     public static final int CONFIG_RECIPIENT_LIMIT_DEFAULT = Integer.MAX_VALUE;
134     /**
135      * Integer value: HTTP socket timeout in milliseconds for MMS
136      */
137     public static final String CONFIG_HTTP_SOCKET_TIMEOUT = "httpSocketTimeout";
138     public static final int CONFIG_HTTP_SOCKET_TIMEOUT_DEFAULT = 60 * 1000;
139     /**
140      * Integer value: minimal number of characters of an alias
141      */
142     public static final String CONFIG_ALIAS_MIN_CHARS = "aliasMinChars";
143     public static final int CONFIG_ALIAS_MIN_CHARS_DEFAULT = 2;
144     /**
145      * Integer value: maximal number of characters of an alias
146      */
147     public static final String CONFIG_ALIAS_MAX_CHARS = "aliasMaxChars";
148     public static final int CONFIG_ALIAS_MAX_CHARS_DEFAULT = 48;
149     /**
150      * Integer value: the threshold of number of SMS parts when an multipart SMS will be
151      * converted into an MMS, e.g. if this is "4", when an multipart SMS message has 5
152      * parts, then it will be sent as MMS message instead. "-1" indicates no such conversion
153      * can happen.
154      */
155     public static final String CONFIG_SMS_TO_MMS_TEXT_THRESHOLD = "smsToMmsTextThreshold";
156     public static final int CONFIG_SMS_TO_MMS_TEXT_THRESHOLD_DEFAULT = -1;
157     /**
158      * Integer value: the threshold of SMS length when it will be converted into an MMS.
159      * "-1" indicates no such conversion can happen.
160      */
161     public static final String CONFIG_SMS_TO_MMS_TEXT_LENGTH_THRESHOLD =
162             "smsToMmsTextLengthThreshold";
163     public static final int CONFIG_SMS_TO_MMS_TEXT_LENGTH_THRESHOLD_DEFAULT = -1;
164     /**
165      * Integer value: maximal length in bytes of SMS message
166      */
167     public static final String CONFIG_MAX_MESSAGE_TEXT_SIZE = "maxMessageTextSize";
168     public static final int CONFIG_MAX_MESSAGE_TEXT_SIZE_DEFAULT = -1;
169     /**
170      * Integer value: maximum number of characters allowed for mms subject
171      */
172     public static final String CONFIG_MAX_SUBJECT_LENGTH = "maxSubjectLength";
173     public static final int CONFIG_MAX_SUBJECT_LENGTH_DEFAULT = 40;
174     /**
175      * String value: name for the user agent profile HTTP header
176      */
177     public static final String CONFIG_UA_PROF_TAG_NAME = "uaProfTagName";
178     public static final String CONFIG_UA_PROF_TAG_NAME_DEFAULT = "x-wap-profile";
179     /**
180      * String value: additional HTTP headers for MMS HTTP requests.
181      * The format is
182      * header_1:header_value_1|header_2:header_value_2|...
183      * Each value can contain macros.
184      */
185     public static final String CONFIG_HTTP_PARAMS = "httpParams";
186     public static final String CONFIG_HTTP_PARAMS_DEFAULT = null;
187     /**
188      * String value: number of email gateway
189      */
190     public static final String CONFIG_EMAIL_GATEWAY_NUMBER = "emailGatewayNumber";
191     public static final String CONFIG_EMAIL_GATEWAY_NUMBER_DEFAULT = null;
192     /**
193      * String value: suffix for the NAI HTTP header value, e.g. ":pcs"
194      * (NAI is used as authentication in HTTP headers for some carriers)
195      */
196     public static final String CONFIG_NAI_SUFFIX = "naiSuffix";
197     public static final String CONFIG_NAI_SUFFIX_DEFAULT = null;
198     /**
199      * String value: Url for user agent profile
200      */
201     public static final String CONFIG_UA_PROF_URL = "uaProfUrl";
202     public static final String CONFIG_UA_PROF_URL_DEFAULT = null;
203     /**
204      * String value: user agent
205      */
206     public static final String CONFIG_USER_AGENT = "userAgent";
207     public static final String CONFIG_USER_AGENT_DEFAULT = null;
208 }
209