1 /*
2  * Copyright (C) 2008 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 com.android.internal.telephony;
18 
19 import android.content.Intent;
20 
21 /**
22  * The intents that the telephony services broadcast.
23  *
24  * <p class="warning">
25  * THESE ARE NOT THE API!  Use the {@link android.telephony.TelephonyManager} class.
26  * DON'T LISTEN TO THESE DIRECTLY.
27  */
28 public class TelephonyIntents {
29 
30     /**
31      * Broadcast Action: The phone service state has changed. The intent will have the following
32      * extra values:</p>
33      * <ul>
34      *   <li><em>state</em> - An int with one of the following values:
35      *          {@link android.telephony.ServiceState#STATE_IN_SERVICE},
36      *          {@link android.telephony.ServiceState#STATE_OUT_OF_SERVICE},
37      *          {@link android.telephony.ServiceState#STATE_EMERGENCY_ONLY}
38      *          or {@link android.telephony.ServiceState#STATE_POWER_OFF}
39      *   <li><em>roaming</em> - A boolean value indicating whether the phone is roaming.</li>
40      *   <li><em>operator-alpha-long</em> - The carrier name as a string.</li>
41      *   <li><em>operator-alpha-short</em> - A potentially shortened version of the carrier name,
42      *          as a string.</li>
43      *   <li><em>operator-numeric</em> - A number representing the carrier, as a string. This is
44      *          a five or six digit number consisting of the MCC (Mobile Country Code, 3 digits)
45      *          and MNC (Mobile Network code, 2-3 digits).</li>
46      *   <li><em>manual</em> - A boolean, where true indicates that the user has chosen to select
47      *          the network manually, and false indicates that network selection is handled by the
48      *          phone.</li>
49      * </ul>
50      *
51      * <p class="note">
52      * Requires the READ_PHONE_STATE permission.
53      *
54      * <p class="note">This is a protected intent that can only be sent
55      * by the system.
56      */
57     public static final String ACTION_SERVICE_STATE_CHANGED = "android.intent.action.SERVICE_STATE";
58 
59     /**
60      * <p>Broadcast Action: The radio technology has changed. The intent will have the following
61      * extra values:</p>
62      * <ul>
63      *   <li><em>phoneName</em> - A string version of the new phone name.</li>
64      * </ul>
65      *
66      * <p class="note">
67      * You can <em>not</em> receive this through components declared
68      * in manifests, only by explicitly registering for it with
69      * {@link android.content.Context#registerReceiver(android.content.BroadcastReceiver,
70      * android.content.IntentFilter) Context.registerReceiver()}.
71      *
72      * <p class="note">
73      * Requires no permission.
74      *
75      * <p class="note">This is a protected intent that can only be sent
76      * by the system.
77      */
78     public static final String ACTION_RADIO_TECHNOLOGY_CHANGED
79             = "android.intent.action.RADIO_TECHNOLOGY";
80     /**
81      * <p>Broadcast Action: The emergency callback mode is changed.
82      * <ul>
83      *   <li><em>phoneinECMState</em> - A boolean value,true=phone in ECM, false=ECM off</li>
84      * </ul>
85      * <p class="note">
86      * You can <em>not</em> receive this through components declared
87      * in manifests, only by explicitly registering for it with
88      * {@link android.content.Context#registerReceiver(android.content.BroadcastReceiver,
89      * android.content.IntentFilter) Context.registerReceiver()}.
90      *
91      * <p class="note">
92      * Requires no permission.
93      *
94      * <p class="note">This is a protected intent that can only be sent
95      * by the system.
96      */
97     public static final String ACTION_EMERGENCY_CALLBACK_MODE_CHANGED
98             = "android.intent.action.EMERGENCY_CALLBACK_MODE_CHANGED";
99     /**
100      * Broadcast Action: The phone's signal strength has changed. The intent will have the
101      * following extra values:</p>
102      * <ul>
103      *   <li><em>phoneName</em> - A string version of the phone name.</li>
104      *   <li><em>asu</em> - A numeric value for the signal strength.
105      *          An ASU is 0-31 or -1 if unknown (for GSM, dBm = -113 - 2 * asu).
106      *          The following special values are defined:
107      *          <ul><li>0 means "-113 dBm or less".</li><li>31 means "-51 dBm or greater".</li></ul>
108      *   </li>
109      * </ul>
110      *
111      * <p class="note">
112      * You can <em>not</em> receive this through components declared
113      * in manifests, only by exlicitly registering for it with
114      * {@link android.content.Context#registerReceiver(android.content.BroadcastReceiver,
115      * android.content.IntentFilter) Context.registerReceiver()}.
116      *
117      * <p class="note">
118      * Requires the READ_PHONE_STATE permission.
119      *
120      * <p class="note">This is a protected intent that can only be sent
121      * by the system.
122      */
123     public static final String ACTION_SIGNAL_STRENGTH_CHANGED = "android.intent.action.SIG_STR";
124 
125 
126     /**
127      * Broadcast Action: The data connection state has changed for any one of the
128      * phone's mobile data connections (eg, default, MMS or GPS specific connection).
129      * The intent will have the following extra values:</p>
130      * <dl>
131      *   <dt>phoneName</dt><dd>A string version of the phone name.</dd>
132      *   <dt>state</dt><dd>One of {@code CONNECTED}, {@code CONNECTING},
133      *      or {@code DISCONNECTED}.</dd>
134      *   <dt>apn</dt><dd>A string that is the APN associated with this connection.</dd>
135      *   <dt>apnType</dt><dd>A string array of APN types associated with this connection.
136      *      The APN type {@code *} is a special type that means this APN services all types.</dd>
137      * </dl>
138      *
139      * <p class="note">
140      * Requires the READ_PHONE_STATE permission.
141      *
142      * <p class="note">This is a protected intent that can only be sent
143      * by the system.
144      */
145     public static final String ACTION_ANY_DATA_CONNECTION_STATE_CHANGED
146             = "android.intent.action.ANY_DATA_STATE";
147 
148     /**
149      * Broadcast Action: Occurs when a data connection connects to a provisioning apn
150      * and is broadcast by the low level data connection code.
151      * The intent will have the following extra values:</p>
152      * <dl>
153      *   <dt>apn</dt><dd>A string that is the APN associated with this connection.</dd>
154      *   <dt>apnType</dt><dd>A string array of APN types associated with this connection.
155      *      The APN type {@code *} is a special type that means this APN services all types.</dd>
156      *   <dt>linkProperties</dt><dd>{@code LinkProperties} for this APN.</dd>
157      *   <dt>linkCapabilities</dt><dd>The {@code LinkCapabilities} for this APN.</dd>
158      *   <dt>iface</dt><dd>A string that is the name of the interface.</dd>
159      * </dl>
160      *
161      * <p class="note">
162      * Requires the READ_PHONE_STATE permission.
163      *
164      * <p class="note">This is a protected intent that can only be sent
165      * by the system.
166      */
167     public static final String ACTION_DATA_CONNECTION_CONNECTED_TO_PROVISIONING_APN
168             = "android.intent.action.DATA_CONNECTION_CONNECTED_TO_PROVISIONING_APN";
169 
170     /**
171      * Broadcast Action: An attempt to establish a data connection has failed.
172      * The intent will have the following extra values:</p>
173      * <dl>
174      *   <dt>phoneName</dt><dd>A string version of the phone name.</dd>
175      *   <dt>state</dt><dd>One of {@code CONNECTED}, {@code CONNECTING}, or {code DISCONNECTED}.</dd>
176      *   <dt>reason</dt><dd>A string indicating the reason for the failure, if available.</dd>
177      * </dl>
178      *
179      * <p class="note">
180      * Requires the READ_PHONE_STATE permission.
181      *
182      * <p class="note">This is a protected intent that can only be sent
183      * by the system.
184      */
185     public static final String ACTION_DATA_CONNECTION_FAILED
186             = "android.intent.action.DATA_CONNECTION_FAILED";
187 
188 
189     /**
190      * Broadcast Action: The sim card state has changed.
191      * The intent will have the following extra values:</p>
192      * <dl>
193      *   <dt>phoneName</dt><dd>A string version of the phone name.</dd>
194      *   <dt>ss</dt><dd>The sim state. One of:
195      *     <dl>
196      *       <dt>{@code ABSENT}</dt><dd>SIM card not found</dd>
197      *       <dt>{@code LOCKED}</dt><dd>SIM card locked (see {@code reason})</dd>
198      *       <dt>{@code READY}</dt><dd>SIM card ready</dd>
199      *       <dt>{@code IMSI}</dt><dd>FIXME: what is this state?</dd>
200      *       <dt>{@code LOADED}</dt><dd>SIM card data loaded</dd>
201      *     </dl></dd>
202      *   <dt>reason</dt><dd>The reason why ss is {@code LOCKED}; null otherwise.</dd>
203      *   <dl>
204      *       <dt>{@code PIN}</dt><dd>locked on PIN1</dd>
205      *       <dt>{@code PUK}</dt><dd>locked on PUK1</dd>
206      *       <dt>{@code NETWORK}</dt><dd>locked on network personalization</dd>
207      *   </dl>
208      * </dl>
209      *
210      * <p class="note">
211      * Requires the READ_PHONE_STATE permission.
212      *
213      * <p class="note">This is a protected intent that can only be sent
214      * by the system.
215      */
216     public static final String ACTION_SIM_STATE_CHANGED
217             = "android.intent.action.SIM_STATE_CHANGED";
218 
219 
220     /**
221      * Broadcast Action: The time was set by the carrier (typically by the NITZ string).
222      * This is a sticky broadcast.
223      * The intent will have the following extra values:</p>
224      * <ul>
225      *   <li><em>time</em> - The time as a long in UTC milliseconds.</li>
226      * </ul>
227      *
228      * <p class="note">
229      * Requires the READ_PHONE_STATE permission.
230      *
231      * <p class="note">This is a protected intent that can only be sent
232      * by the system.
233      */
234     public static final String ACTION_NETWORK_SET_TIME = "android.intent.action.NETWORK_SET_TIME";
235 
236 
237     /**
238      * Broadcast Action: The timezone was set by the carrier (typically by the NITZ string).
239      * This is a sticky broadcast.
240      * The intent will have the following extra values:</p>
241      * <ul>
242      *   <li><em>time-zone</em> - The java.util.TimeZone.getID() value identifying the new time
243      *          zone.</li>
244      * </ul>
245      *
246      * <p class="note">
247      * Requires the READ_PHONE_STATE permission.
248      *
249      * <p class="note">This is a protected intent that can only be sent
250      * by the system.
251      */
252     public static final String ACTION_NETWORK_SET_TIMEZONE
253             = "android.intent.action.NETWORK_SET_TIMEZONE";
254 
255     /**
256      * <p>Broadcast Action: It indicates the Emergency callback mode blocks datacall/sms
257      * <p class="note">.
258      * This is to pop up a notice to show user that the phone is in emergency callback mode
259      * and atacalls and outgoing sms are blocked.
260      *
261      * <p class="note">This is a protected intent that can only be sent
262      * by the system.
263      */
264     public static final String ACTION_SHOW_NOTICE_ECM_BLOCK_OTHERS
265             = "android.intent.action.ACTION_SHOW_NOTICE_ECM_BLOCK_OTHERS";
266 
267     /**
268      * Activity Action: Start this activity to invoke the carrier setup app.
269      * The carrier app must be signed using a certificate that matches the UICC access rules.
270      *
271      * <p class="note">Callers of this should hold the android.permission.INVOKE_CARRIER_SETUP
272      * permission.</p>
273      */
274     public static final String ACTION_CARRIER_SETUP = "android.intent.action.ACTION_CARRIER_SETUP";
275 
276     /**
277      * <p>Broadcast Action: Indicates that the action is forbidden by network.
278      * <p class="note">
279      * This is for the OEM applications to understand about possible provisioning issues.
280      * Used in OMA-DM applications.
281      */
282     public static final String ACTION_FORBIDDEN_NO_SERVICE_AUTHORIZATION
283             = "android.intent.action.ACTION_FORBIDDEN_NO_SERVICE_AUTHORIZATION";
284 
285     /**
286      * Broadcast Action: A "secret code" has been entered in the dialer. Secret codes are
287      * of the form {@code *#*#<code>#*#*}. The intent will have the data URI:
288      *
289      * {@code android_secret_code://<code>}
290      */
291     public static final String SECRET_CODE_ACTION = "android.provider.Telephony.SECRET_CODE";
292 
293     /**
294      * Broadcast Action: The Service Provider string(s) have been updated.  Activities or
295      * services that use these strings should update their display.
296      * The intent will have the following extra values:</p>
297      *
298      * <dl>
299      *   <dt>showPlmn</dt><dd>Boolean that indicates whether the PLMN should be shown.</dd>
300      *   <dt>plmn</dt><dd>The operator name of the registered network, as a string.</dd>
301      *   <dt>showSpn</dt><dd>Boolean that indicates whether the SPN should be shown.</dd>
302      *   <dt>spn</dt><dd>The service provider name, as a string.</dd>
303      * </dl>
304      *
305      * Note that <em>showPlmn</em> may indicate that <em>plmn</em> should be displayed, even
306      * though the value for <em>plmn</em> is null.  This can happen, for example, if the phone
307      * has not registered to a network yet.  In this case the receiver may substitute an
308      * appropriate placeholder string (eg, "No service").
309      *
310      * It is recommended to display <em>plmn</em> before / above <em>spn</em> if
311      * both are displayed.
312      *
313      * <p>Note: this is a protected intent that can only be sent by the system.
314      */
315     public static final String SPN_STRINGS_UPDATED_ACTION =
316             "android.provider.Telephony.SPN_STRINGS_UPDATED";
317 
318     public static final String EXTRA_SHOW_PLMN  = "showPlmn";
319     public static final String EXTRA_PLMN       = "plmn";
320     public static final String EXTRA_SHOW_SPN   = "showSpn";
321     public static final String EXTRA_SPN        = "spn";
322 
323     /**
324      * <p>Broadcast Action: It indicates one column of a subinfo record has been changed
325      * <p class="note">This is a protected intent that can only be sent
326      * by the system.
327      */
328     public static final String ACTION_SUBINFO_CONTENT_CHANGE
329             = "android.intent.action.ACTION_SUBINFO_CONTENT_CHANGE";
330 
331     /**
332      * <p>Broadcast Action: It indicates subinfo record update is completed
333      * when SIM inserted state change
334      * <p class="note">This is a protected intent that can only be sent
335      * by the system.
336      */
337     public static final String ACTION_SUBINFO_RECORD_UPDATED
338             = "android.intent.action.ACTION_SUBINFO_RECORD_UPDATED";
339 
340     /**
341      * Broadcast Action: The default subscription has changed.  This has the following
342      * extra values:</p>
343      * <ul>
344      *   <li><em>subscription</em> - A int, the current default subscription.</li>
345      * </ul>
346      */
347     public static final String ACTION_DEFAULT_SUBSCRIPTION_CHANGED
348             = "android.intent.action.ACTION_DEFAULT_SUBSCRIPTION_CHANGED";
349 
350     /**
351      * Broadcast Action: The default data subscription has changed.  This has the following
352      * extra values:</p>
353      * <ul>
354      *   <li><em>subscription</em> - A int, the current data default subscription.</li>
355      * </ul>
356      */
357     public static final String ACTION_DEFAULT_DATA_SUBSCRIPTION_CHANGED
358             = "android.intent.action.ACTION_DEFAULT_DATA_SUBSCRIPTION_CHANGED";
359 
360     /**
361      * Broadcast Action: The default voice subscription has changed.  This has the following
362      * extra values:</p>
363      * <ul>
364      *   <li><em>subscription</em> - A int, the current voice default subscription.</li>
365      * </ul>
366      */
367     public static final String ACTION_DEFAULT_VOICE_SUBSCRIPTION_CHANGED
368             = "android.intent.action.ACTION_DEFAULT_VOICE_SUBSCRIPTION_CHANGED";
369 
370     /**
371      * Broadcast Action: The default sms subscription has changed.  This has the following
372      * extra values:</p>
373      * <ul>
374      *   <li><em>subscription</em> - A int, the current sms default subscription.</li>
375      * </ul>
376      */
377     public static final String ACTION_DEFAULT_SMS_SUBSCRIPTION_CHANGED
378             = "android.intent.action.ACTION_DEFAULT_SMS_SUBSCRIPTION_CHANGED";
379 
380     /*
381      * Broadcast Action: An attempt to set phone radio type and access technology has changed.
382      * This has the following extra values:
383      * <ul>
384      *   <li><em>phones radio access family </em> - A RadioAccessFamily
385      *   array, contain phone ID and new radio access family for each phone.</li>
386      * </ul>
387      */
388     public static final String ACTION_SET_RADIO_CAPABILITY_DONE =
389             "android.intent.action.ACTION_SET_RADIO_CAPABILITY_DONE";
390 
391     public static final String EXTRA_RADIO_ACCESS_FAMILY = "rafs";
392 
393     /*
394      * Broadcast Action: An attempt to set phone radio access family has failed.
395      */
396     public static final String ACTION_SET_RADIO_CAPABILITY_FAILED =
397             "android.intent.action.ACTION_SET_RADIO_CAPABILITY_FAILED";
398 }
399