• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2011 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.cellbroadcastreceiver.tests;
18 
19 import android.Manifest;
20 import android.app.Activity;
21 import android.app.AppOpsManager;
22 import android.content.Intent;
23 import android.os.UserHandle;
24 import android.provider.Telephony.Sms.Intents;
25 import android.telephony.SmsCbLocation;
26 import android.telephony.SmsCbMessage;
27 import android.util.Log;
28 import com.android.internal.telephony.PhoneConstants;
29 
30 import com.android.internal.telephony.EncodeException;
31 import com.android.internal.telephony.GsmAlphabet;
32 import com.android.internal.telephony.gsm.GsmSmsCbMessage;
33 import com.android.internal.telephony.uicc.IccUtils;
34 
35 import java.io.UnsupportedEncodingException;
36 
37 /**
38  * Send test messages.
39  */
40 public class SendTestMessages {
41 
42     private static String TAG = "SendTestMessages";
43 
44     private static final int DCS_7BIT_ENGLISH = 0x01;
45     private static final int DCS_16BIT_UCS2 = 0x48;
46 
47     /* ETWS Test message including header */
48     private static final byte[] etwsMessageNormal = IccUtils.hexStringToBytes("000011001101" +
49             "EA305BAE57CE770C531790E85C716CBF3044573065B930675730" +
50             "9707767A751F30025F37304463FA308C306B5099304830664E0B30553044FF086C178C615E81FF09" +
51             "0000000000000000000000000000");
52 
53     private static final byte[] etwsMessageCancel = IccUtils.hexStringToBytes("000011001101" +
54             "EA305148307B3069002800310030003A0035" +
55             "00320029306E7DCA602557309707901F5831309253D66D883057307E3059FF086C178C615E81FF09" +
56             "00000000000000000000000000000000000000000000");
57 
58     private static final byte[] etwsMessageTest = IccUtils.hexStringToBytes("000011031101" +
59             "EA305BAE57CE770C531790E85C716CBF3044" +
60             "573065B9306757309707300263FA308C306B5099304830664E0B30553044FF086C178C615E81FF09" +
61             "00000000000000000000000000000000000000000000");
62 
63     private static final byte[] gsm7BitTest = {
64             (byte)0xC0, (byte)0x00, (byte)0x00, (byte)0x01, (byte)0x40, (byte)0x11, (byte)0x41,
65             (byte)0xD0, (byte)0x71, (byte)0xDA, (byte)0x04, (byte)0x91, (byte)0xCB, (byte)0xE6,
66             (byte)0x70, (byte)0x9D, (byte)0x4D, (byte)0x07, (byte)0x85, (byte)0xD9, (byte)0x70,
67             (byte)0x74, (byte)0x58, (byte)0x5C, (byte)0xA6, (byte)0x83, (byte)0xDA, (byte)0xE5,
68             (byte)0xF9, (byte)0x3C, (byte)0x7C, (byte)0x2E, (byte)0x83, (byte)0xEE, (byte)0x69,
69             (byte)0x3A, (byte)0x1A, (byte)0x34, (byte)0x0E, (byte)0xCB, (byte)0xE5, (byte)0xE9,
70             (byte)0xF0, (byte)0xB9, (byte)0x0C, (byte)0x92, (byte)0x97, (byte)0xE9, (byte)0x75,
71             (byte)0xB9, (byte)0x1B, (byte)0x04, (byte)0x0F, (byte)0x93, (byte)0xC9, (byte)0x69,
72             (byte)0xF7, (byte)0xB9, (byte)0xD1, (byte)0x68, (byte)0x34, (byte)0x1A, (byte)0x8D,
73             (byte)0x46, (byte)0xA3, (byte)0xD1, (byte)0x68, (byte)0x34, (byte)0x1A, (byte)0x8D,
74             (byte)0x46, (byte)0xA3, (byte)0xD1, (byte)0x68, (byte)0x34, (byte)0x1A, (byte)0x8D,
75             (byte)0x46, (byte)0xA3, (byte)0xD1, (byte)0x68, (byte)0x34, (byte)0x1A, (byte)0x8D,
76             (byte)0x46, (byte)0xA3, (byte)0xD1, (byte)0x00
77     };
78 
79     private static final byte[] gsm7BitTestUmts = {
80             (byte)0x01, (byte)0x00, (byte)0x01, (byte)0xC0, (byte)0x00, (byte)0x40,
81 
82             (byte)0x01,
83 
84             (byte)0x41, (byte)0xD0, (byte)0x71, (byte)0xDA, (byte)0x04, (byte)0x91,
85             (byte)0xCB, (byte)0xE6, (byte)0x70, (byte)0x9D, (byte)0x4D, (byte)0x07,
86             (byte)0x85, (byte)0xD9, (byte)0x70, (byte)0x74, (byte)0x58, (byte)0x5C,
87             (byte)0xA6, (byte)0x83, (byte)0xDA, (byte)0xE5, (byte)0xF9, (byte)0x3C,
88             (byte)0x7C, (byte)0x2E, (byte)0x83, (byte)0xEE, (byte)0x69, (byte)0x3A,
89             (byte)0x1A, (byte)0x34, (byte)0x0E, (byte)0xCB, (byte)0xE5, (byte)0xE9,
90             (byte)0xF0, (byte)0xB9, (byte)0x0C, (byte)0x92, (byte)0x97, (byte)0xE9,
91             (byte)0x75, (byte)0xB9, (byte)0x1B, (byte)0x04, (byte)0x0F, (byte)0x93,
92             (byte)0xC9, (byte)0x69, (byte)0xF7, (byte)0xB9, (byte)0xD1, (byte)0x68,
93             (byte)0x34, (byte)0x1A, (byte)0x8D, (byte)0x46, (byte)0xA3, (byte)0xD1,
94             (byte)0x68, (byte)0x34, (byte)0x1A, (byte)0x8D, (byte)0x46, (byte)0xA3,
95             (byte)0xD1, (byte)0x68, (byte)0x34, (byte)0x1A, (byte)0x8D, (byte)0x46,
96             (byte)0xA3, (byte)0xD1, (byte)0x68, (byte)0x34, (byte)0x1A, (byte)0x8D,
97             (byte)0x46, (byte)0xA3, (byte)0xD1, (byte)0x00,
98 
99             (byte)0x34
100     };
101 
102     private static final byte[] gsm7BitTestMultipageUmts = {
103             (byte)0x01, (byte)0x00, (byte)0x01, (byte)0xC0, (byte)0x00, (byte)0x40,
104 
105             (byte)0x02,
106 
107             (byte)0xC6, (byte)0xB4, (byte)0x7C, (byte)0x4E, (byte)0x07, (byte)0xC1,
108             (byte)0xC3, (byte)0xE7, (byte)0xF2, (byte)0xAA, (byte)0xD1, (byte)0x68,
109             (byte)0x34, (byte)0x1A, (byte)0x8D, (byte)0x46, (byte)0xA3, (byte)0xD1,
110             (byte)0x68, (byte)0x34, (byte)0x1A, (byte)0x8D, (byte)0x46, (byte)0xA3,
111             (byte)0xD1, (byte)0x68, (byte)0x34, (byte)0x1A, (byte)0x8D, (byte)0x46,
112             (byte)0xA3, (byte)0xD1, (byte)0x68, (byte)0x34, (byte)0x1A, (byte)0x8D,
113             (byte)0x46, (byte)0xA3, (byte)0xD1, (byte)0x68, (byte)0x34, (byte)0x1A,
114             (byte)0x8D, (byte)0x46, (byte)0xA3, (byte)0xD1, (byte)0x68, (byte)0x34,
115             (byte)0x1A, (byte)0x8D, (byte)0x46, (byte)0xA3, (byte)0xD1, (byte)0x68,
116             (byte)0x34, (byte)0x1A, (byte)0x8D, (byte)0x46, (byte)0xA3, (byte)0xD1,
117             (byte)0x68, (byte)0x34, (byte)0x1A, (byte)0x8D, (byte)0x46, (byte)0xA3,
118             (byte)0xD1, (byte)0x68, (byte)0x34, (byte)0x1A, (byte)0x8D, (byte)0x46,
119             (byte)0xA3, (byte)0xD1, (byte)0x68, (byte)0x34, (byte)0x1A, (byte)0x8D,
120             (byte)0x46, (byte)0xA3, (byte)0xD1, (byte)0x00,
121 
122             (byte)0x0A,
123 
124             (byte)0xD3, (byte)0xF2, (byte)0xF8, (byte)0xED, (byte)0x26, (byte)0x83,
125             (byte)0xE0, (byte)0xE1, (byte)0x73, (byte)0xB9, (byte)0xD1, (byte)0x68,
126             (byte)0x34, (byte)0x1A, (byte)0x8D, (byte)0x46, (byte)0xA3, (byte)0xD1,
127             (byte)0x68, (byte)0x34, (byte)0x1A, (byte)0x8D, (byte)0x46, (byte)0xA3,
128             (byte)0xD1, (byte)0x68, (byte)0x34, (byte)0x1A, (byte)0x8D, (byte)0x46,
129             (byte)0xA3, (byte)0xD1, (byte)0x68, (byte)0x34, (byte)0x1A, (byte)0x8D,
130             (byte)0x46, (byte)0xA3, (byte)0xD1, (byte)0x68, (byte)0x34, (byte)0x1A,
131             (byte)0x8D, (byte)0x46, (byte)0xA3, (byte)0xD1, (byte)0x68, (byte)0x34,
132             (byte)0x1A, (byte)0x8D, (byte)0x46, (byte)0xA3, (byte)0xD1, (byte)0x68,
133             (byte)0x34, (byte)0x1A, (byte)0x8D, (byte)0x46, (byte)0xA3, (byte)0xD1,
134             (byte)0x68, (byte)0x34, (byte)0x1A, (byte)0x8D, (byte)0x46, (byte)0xA3,
135             (byte)0xD1, (byte)0x68, (byte)0x34, (byte)0x1A, (byte)0x8D, (byte)0x46,
136             (byte)0xA3, (byte)0xD1, (byte)0x68, (byte)0x34, (byte)0x1A, (byte)0x8D,
137             (byte)0x46, (byte)0xA3, (byte)0xD1, (byte)0x00,
138 
139             (byte)0x0A
140     };
141 
142     private static final byte[] gsm7BitTestMultipage1 = {
143             (byte)0x01, (byte)0x00, (byte)0x01, (byte)0xC0, (byte)0x00, (byte)0x40,
144             (byte)0xC6, (byte)0xB4, (byte)0x7C, (byte)0x4E, (byte)0x07, (byte)0xC1,
145             (byte)0xC3, (byte)0xE7, (byte)0xF2, (byte)0xAA, (byte)0xD1, (byte)0x68,
146             (byte)0x34, (byte)0x1A, (byte)0x8D, (byte)0x46, (byte)0xA3, (byte)0xD1,
147             (byte)0x68, (byte)0x34, (byte)0x1A, (byte)0x8D, (byte)0x46, (byte)0xA3,
148             (byte)0xD1, (byte)0x68, (byte)0x34, (byte)0x1A, (byte)0x8D, (byte)0x46,
149             (byte)0xA3, (byte)0xD1, (byte)0x68, (byte)0x34, (byte)0x1A, (byte)0x8D,
150             (byte)0x46, (byte)0xA3, (byte)0xD1, (byte)0x68, (byte)0x34, (byte)0x1A,
151             (byte)0x8D, (byte)0x46, (byte)0xA3, (byte)0xD1, (byte)0x68, (byte)0x34,
152             (byte)0x1A, (byte)0x8D, (byte)0x46, (byte)0xA3, (byte)0xD1, (byte)0x68,
153             (byte)0x34, (byte)0x1A, (byte)0x8D, (byte)0x46, (byte)0xA3, (byte)0xD1,
154             (byte)0x68, (byte)0x34, (byte)0x1A, (byte)0x8D, (byte)0x46, (byte)0xA3,
155             (byte)0xD1, (byte)0x68, (byte)0x34, (byte)0x1A, (byte)0x8D, (byte)0x46,
156             (byte)0xA3, (byte)0xD1, (byte)0x68, (byte)0x34, (byte)0x1A, (byte)0x8D,
157             (byte)0x46, (byte)0xA3, (byte)0xD1, (byte)0x00
158     };
159 
160     private static final byte[] gsm7BitTestMultipage2 = {
161             (byte)0x01, (byte)0x00, (byte)0x01, (byte)0xC0, (byte)0x00, (byte)0x40,
162             (byte)0xD3, (byte)0xF2, (byte)0xF8, (byte)0xED, (byte)0x26, (byte)0x83,
163             (byte)0xE0, (byte)0xE1, (byte)0x73, (byte)0xB9, (byte)0xD1, (byte)0x68,
164             (byte)0x34, (byte)0x1A, (byte)0x8D, (byte)0x46, (byte)0xA3, (byte)0xD1,
165             (byte)0x68, (byte)0x34, (byte)0x1A, (byte)0x8D, (byte)0x46, (byte)0xA3,
166             (byte)0xD1, (byte)0x68, (byte)0x34, (byte)0x1A, (byte)0x8D, (byte)0x46,
167             (byte)0xA3, (byte)0xD1, (byte)0x68, (byte)0x34, (byte)0x1A, (byte)0x8D,
168             (byte)0x46, (byte)0xA3, (byte)0xD1, (byte)0x68, (byte)0x34, (byte)0x1A,
169             (byte)0x8D, (byte)0x46, (byte)0xA3, (byte)0xD1, (byte)0x68, (byte)0x34,
170             (byte)0x1A, (byte)0x8D, (byte)0x46, (byte)0xA3, (byte)0xD1, (byte)0x68,
171             (byte)0x34, (byte)0x1A, (byte)0x8D, (byte)0x46, (byte)0xA3, (byte)0xD1,
172             (byte)0x68, (byte)0x34, (byte)0x1A, (byte)0x8D, (byte)0x46, (byte)0xA3,
173             (byte)0xD1, (byte)0x68, (byte)0x34, (byte)0x1A, (byte)0x8D, (byte)0x46,
174             (byte)0xA3, (byte)0xD1, (byte)0x68, (byte)0x34, (byte)0x1A, (byte)0x8D,
175             (byte)0x46, (byte)0xA3, (byte)0xD1, (byte)0x00
176     };
177 
178     private static final byte[] gsm7BitTestNoPadding = {
179             (byte)0xC0, (byte)0x00, (byte)0x00, (byte)0x01, (byte)0x40, (byte)0x11, (byte)0x41,
180             (byte)0xD0, (byte)0x71, (byte)0xDA, (byte)0x04, (byte)0x91, (byte)0xCB, (byte)0xE6,
181             (byte)0x70, (byte)0x9D, (byte)0x4D, (byte)0x07, (byte)0x85, (byte)0xD9, (byte)0x70,
182             (byte)0x74, (byte)0x58, (byte)0x5C, (byte)0xA6, (byte)0x83, (byte)0xDA, (byte)0xE5,
183             (byte)0xF9, (byte)0x3C, (byte)0x7C, (byte)0x2E, (byte)0x83, (byte)0xC4, (byte)0xE5,
184             (byte)0xB4, (byte)0xFB, (byte)0x0C, (byte)0x2A, (byte)0xE3, (byte)0xC3, (byte)0x63,
185             (byte)0x3A, (byte)0x3B, (byte)0x0F, (byte)0xCA, (byte)0xCD, (byte)0x40, (byte)0x63,
186             (byte)0x74, (byte)0x58, (byte)0x1E, (byte)0x1E, (byte)0xD3, (byte)0xCB, (byte)0xF2,
187             (byte)0x39, (byte)0x88, (byte)0xFD, (byte)0x76, (byte)0x9F, (byte)0x59, (byte)0xA0,
188             (byte)0x76, (byte)0x39, (byte)0xEC, (byte)0x4E, (byte)0xBB, (byte)0xCF, (byte)0x20,
189             (byte)0x3A, (byte)0xBA, (byte)0x2C, (byte)0x2F, (byte)0x83, (byte)0xD2, (byte)0x73,
190             (byte)0x90, (byte)0xFB, (byte)0x0D, (byte)0x82, (byte)0x87, (byte)0xC9, (byte)0xE4,
191             (byte)0xB4, (byte)0xFB, (byte)0x1C, (byte)0x02
192     };
193 
194     private static final byte[] gsm7BitTestNoPaddingUmts = {
195             (byte)0x01, (byte)0x00, (byte)0x01, (byte)0xC0, (byte)0x00, (byte)0x40,
196 
197             (byte)0x01,
198 
199             (byte)0x41, (byte)0xD0, (byte)0x71, (byte)0xDA, (byte)0x04, (byte)0x91,
200             (byte)0xCB, (byte)0xE6, (byte)0x70, (byte)0x9D, (byte)0x4D, (byte)0x07,
201             (byte)0x85, (byte)0xD9, (byte)0x70, (byte)0x74, (byte)0x58, (byte)0x5C,
202             (byte)0xA6, (byte)0x83, (byte)0xDA, (byte)0xE5, (byte)0xF9, (byte)0x3C,
203             (byte)0x7C, (byte)0x2E, (byte)0x83, (byte)0xC4, (byte)0xE5, (byte)0xB4,
204             (byte)0xFB, (byte)0x0C, (byte)0x2A, (byte)0xE3, (byte)0xC3, (byte)0x63,
205             (byte)0x3A, (byte)0x3B, (byte)0x0F, (byte)0xCA, (byte)0xCD, (byte)0x40,
206             (byte)0x63, (byte)0x74, (byte)0x58, (byte)0x1E, (byte)0x1E, (byte)0xD3,
207             (byte)0xCB, (byte)0xF2, (byte)0x39, (byte)0x88, (byte)0xFD, (byte)0x76,
208             (byte)0x9F, (byte)0x59, (byte)0xA0, (byte)0x76, (byte)0x39, (byte)0xEC,
209             (byte)0x4E, (byte)0xBB, (byte)0xCF, (byte)0x20, (byte)0x3A, (byte)0xBA,
210             (byte)0x2C, (byte)0x2F, (byte)0x83, (byte)0xD2, (byte)0x73, (byte)0x90,
211             (byte)0xFB, (byte)0x0D, (byte)0x82, (byte)0x87, (byte)0xC9, (byte)0xE4,
212             (byte)0xB4, (byte)0xFB, (byte)0x1C, (byte)0x02,
213 
214             (byte)0x52
215     };
216 
217     private static final byte[] gsm7BitTestWithLanguage = {
218             (byte)0xC0, (byte)0x00, (byte)0x00, (byte)0x01, (byte)0x04, (byte)0x11, (byte)0x41,
219             (byte)0xD0, (byte)0x71, (byte)0xDA, (byte)0x04, (byte)0x91, (byte)0xCB, (byte)0xE6,
220             (byte)0x70, (byte)0x9D, (byte)0x4D, (byte)0x07, (byte)0x85, (byte)0xD9, (byte)0x70,
221             (byte)0x74, (byte)0x58, (byte)0x5C, (byte)0xA6, (byte)0x83, (byte)0xDA, (byte)0xE5,
222             (byte)0xF9, (byte)0x3C, (byte)0x7C, (byte)0x2E, (byte)0x83, (byte)0xEE, (byte)0x69,
223             (byte)0x3A, (byte)0x1A, (byte)0x34, (byte)0x0E, (byte)0xCB, (byte)0xE5, (byte)0xE9,
224             (byte)0xF0, (byte)0xB9, (byte)0x0C, (byte)0x92, (byte)0x97, (byte)0xE9, (byte)0x75,
225             (byte)0xB9, (byte)0x1B, (byte)0x04, (byte)0x0F, (byte)0x93, (byte)0xC9, (byte)0x69,
226             (byte)0xF7, (byte)0xB9, (byte)0xD1, (byte)0x68, (byte)0x34, (byte)0x1A, (byte)0x8D,
227             (byte)0x46, (byte)0xA3, (byte)0xD1, (byte)0x68, (byte)0x34, (byte)0x1A, (byte)0x8D,
228             (byte)0x46, (byte)0xA3, (byte)0xD1, (byte)0x68, (byte)0x34, (byte)0x1A, (byte)0x8D,
229             (byte)0x46, (byte)0xA3, (byte)0xD1, (byte)0x68, (byte)0x34, (byte)0x1A, (byte)0x8D,
230             (byte)0x46, (byte)0xA3, (byte)0xD1, (byte)0x00
231     };
232 
233     private static final byte[] gsm7BitTestWithLanguageInBody = {
234             (byte)0xC0, (byte)0x00, (byte)0x00, (byte)0x01, (byte)0x10, (byte)0x11, (byte)0x73,
235             (byte)0x7B, (byte)0x23, (byte)0x08, (byte)0x3A, (byte)0x4E, (byte)0x9B, (byte)0x20,
236             (byte)0x72, (byte)0xD9, (byte)0x1C, (byte)0xAE, (byte)0xB3, (byte)0xE9, (byte)0xA0,
237             (byte)0x30, (byte)0x1B, (byte)0x8E, (byte)0x0E, (byte)0x8B, (byte)0xCB, (byte)0x74,
238             (byte)0x50, (byte)0xBB, (byte)0x3C, (byte)0x9F, (byte)0x87, (byte)0xCF, (byte)0x65,
239             (byte)0xD0, (byte)0x3D, (byte)0x4D, (byte)0x47, (byte)0x83, (byte)0xC6, (byte)0x61,
240             (byte)0xB9, (byte)0x3C, (byte)0x1D, (byte)0x3E, (byte)0x97, (byte)0x41, (byte)0xF2,
241             (byte)0x32, (byte)0xBD, (byte)0x2E, (byte)0x77, (byte)0x83, (byte)0xE0, (byte)0x61,
242             (byte)0x32, (byte)0x39, (byte)0xED, (byte)0x3E, (byte)0x37, (byte)0x1A, (byte)0x8D,
243             (byte)0x46, (byte)0xA3, (byte)0xD1, (byte)0x68, (byte)0x34, (byte)0x1A, (byte)0x8D,
244             (byte)0x46, (byte)0xA3, (byte)0xD1, (byte)0x68, (byte)0x34, (byte)0x1A, (byte)0x8D,
245             (byte)0x46, (byte)0xA3, (byte)0xD1, (byte)0x68, (byte)0x34, (byte)0x1A, (byte)0x8D,
246             (byte)0x46, (byte)0xA3, (byte)0xD1, (byte)0x00
247     };
248 
249     private static final byte[] gsm7BitTestWithLanguageInBodyUmts = {
250             (byte)0x01, (byte)0x00, (byte)0x01, (byte)0xC0, (byte)0x00, (byte)0x10,
251 
252             (byte)0x01,
253 
254             (byte)0x73, (byte)0x7B, (byte)0x23, (byte)0x08, (byte)0x3A, (byte)0x4E,
255             (byte)0x9B, (byte)0x20, (byte)0x72, (byte)0xD9, (byte)0x1C, (byte)0xAE,
256             (byte)0xB3, (byte)0xE9, (byte)0xA0, (byte)0x30, (byte)0x1B, (byte)0x8E,
257             (byte)0x0E, (byte)0x8B, (byte)0xCB, (byte)0x74, (byte)0x50, (byte)0xBB,
258             (byte)0x3C, (byte)0x9F, (byte)0x87, (byte)0xCF, (byte)0x65, (byte)0xD0,
259             (byte)0x3D, (byte)0x4D, (byte)0x47, (byte)0x83, (byte)0xC6, (byte)0x61,
260             (byte)0xB9, (byte)0x3C, (byte)0x1D, (byte)0x3E, (byte)0x97, (byte)0x41,
261             (byte)0xF2, (byte)0x32, (byte)0xBD, (byte)0x2E, (byte)0x77, (byte)0x83,
262             (byte)0xE0, (byte)0x61, (byte)0x32, (byte)0x39, (byte)0xED, (byte)0x3E,
263             (byte)0x37, (byte)0x1A, (byte)0x8D, (byte)0x46, (byte)0xA3, (byte)0xD1,
264             (byte)0x68, (byte)0x34, (byte)0x1A, (byte)0x8D, (byte)0x46, (byte)0xA3,
265             (byte)0xD1, (byte)0x68, (byte)0x34, (byte)0x1A, (byte)0x8D, (byte)0x46,
266             (byte)0xA3, (byte)0xD1, (byte)0x68, (byte)0x34, (byte)0x1A, (byte)0x8D,
267             (byte)0x46, (byte)0xA3, (byte)0xD1, (byte)0x00,
268 
269             (byte)0x37
270     };
271 
272     private static final byte[] gsmUcs2Test = {
273             (byte)0xC0, (byte)0x00, (byte)0x00, (byte)0x01, (byte)0x48, (byte)0x11, (byte)0x00,
274             (byte)0x41, (byte)0x00, (byte)0x20, (byte)0x00, (byte)0x55, (byte)0x00, (byte)0x43,
275             (byte)0x00, (byte)0x53, (byte)0x00, (byte)0x32, (byte)0x00, (byte)0x20, (byte)0x00,
276             (byte)0x6D, (byte)0x00, (byte)0x65, (byte)0x00, (byte)0x73, (byte)0x00, (byte)0x73,
277             (byte)0x00, (byte)0x61, (byte)0x00, (byte)0x67, (byte)0x00, (byte)0x65, (byte)0x00,
278             (byte)0x20, (byte)0x00, (byte)0x63, (byte)0x00, (byte)0x6F, (byte)0x00, (byte)0x6E,
279             (byte)0x00, (byte)0x74, (byte)0x00, (byte)0x61, (byte)0x00, (byte)0x69, (byte)0x00,
280             (byte)0x6E, (byte)0x00, (byte)0x69, (byte)0x00, (byte)0x6E, (byte)0x00, (byte)0x67,
281             (byte)0x00, (byte)0x20, (byte)0x00, (byte)0x61, (byte)0x00, (byte)0x20, (byte)0x04,
282             (byte)0x34, (byte)0x00, (byte)0x20, (byte)0x00, (byte)0x63, (byte)0x00, (byte)0x68,
283             (byte)0x00, (byte)0x61, (byte)0x00, (byte)0x72, (byte)0x00, (byte)0x61, (byte)0x00,
284             (byte)0x63, (byte)0x00, (byte)0x74, (byte)0x00, (byte)0x65, (byte)0x00, (byte)0x72,
285             (byte)0x00, (byte)0x0D, (byte)0x00, (byte)0x0D
286     };
287 
288     private static final byte[] gsmUcs2TestUmts = {
289             (byte)0x01, (byte)0x00, (byte)0x01, (byte)0xC0, (byte)0x00, (byte)0x48,
290 
291             (byte)0x01,
292 
293             (byte)0x00, (byte)0x41, (byte)0x00, (byte)0x20, (byte)0x00, (byte)0x55,
294             (byte)0x00, (byte)0x43, (byte)0x00, (byte)0x53, (byte)0x00, (byte)0x32,
295             (byte)0x00, (byte)0x20, (byte)0x00, (byte)0x6D, (byte)0x00, (byte)0x65,
296             (byte)0x00, (byte)0x73, (byte)0x00, (byte)0x73, (byte)0x00, (byte)0x61,
297             (byte)0x00, (byte)0x67, (byte)0x00, (byte)0x65, (byte)0x00, (byte)0x20,
298             (byte)0x00, (byte)0x63, (byte)0x00, (byte)0x6F, (byte)0x00, (byte)0x6E,
299             (byte)0x00, (byte)0x74, (byte)0x00, (byte)0x61, (byte)0x00, (byte)0x69,
300             (byte)0x00, (byte)0x6E, (byte)0x00, (byte)0x69, (byte)0x00, (byte)0x6E,
301             (byte)0x00, (byte)0x67, (byte)0x00, (byte)0x20, (byte)0x00, (byte)0x61,
302             (byte)0x00, (byte)0x20, (byte)0x04, (byte)0x34, (byte)0x00, (byte)0x20,
303             (byte)0x00, (byte)0x63, (byte)0x00, (byte)0x68, (byte)0x00, (byte)0x61,
304             (byte)0x00, (byte)0x72, (byte)0x00, (byte)0x61, (byte)0x00, (byte)0x63,
305             (byte)0x00, (byte)0x74, (byte)0x00, (byte)0x65, (byte)0x00, (byte)0x72,
306             (byte)0x00, (byte)0x0D, (byte)0x00, (byte)0x0D,
307 
308             (byte)0x4E
309     };
310 
311     private static final byte[] gsmUcs2TestMultipageUmts = {
312             (byte)0x01, (byte)0x00, (byte)0x01, (byte)0xC0, (byte)0x00, (byte)0x48,
313 
314             (byte)0x02,
315 
316             (byte)0x00, (byte)0x41, (byte)0x00, (byte)0x41, (byte)0x00, (byte)0x41,
317             (byte)0x00, (byte)0x0D, (byte)0x0D, (byte)0x0D, (byte)0x0D, (byte)0x0D,
318             (byte)0x0D, (byte)0x0D, (byte)0x0D, (byte)0x0D, (byte)0x0D, (byte)0x0D,
319             (byte)0x0D, (byte)0x0D, (byte)0x0D, (byte)0x0D, (byte)0x0D, (byte)0x0D,
320             (byte)0x0D, (byte)0x0D, (byte)0x0D, (byte)0x0D, (byte)0x0D, (byte)0x0D,
321             (byte)0x0D, (byte)0x0D, (byte)0x0D, (byte)0x0D, (byte)0x0D, (byte)0x0D,
322             (byte)0x0D, (byte)0x0D, (byte)0x0D, (byte)0x0D, (byte)0x0D, (byte)0x0D,
323             (byte)0x0D, (byte)0x0D, (byte)0x0D, (byte)0x0D, (byte)0x0D, (byte)0x0D,
324             (byte)0x0D, (byte)0x0D, (byte)0x0D, (byte)0x0D, (byte)0x0D, (byte)0x0D,
325             (byte)0x0D, (byte)0x0D, (byte)0x0D, (byte)0x0D, (byte)0x0D, (byte)0x0D,
326             (byte)0x0D, (byte)0x0D, (byte)0x0D, (byte)0x0D, (byte)0x0D, (byte)0x0D,
327             (byte)0x0D, (byte)0x0D, (byte)0x0D, (byte)0x0D, (byte)0x0D, (byte)0x0D,
328             (byte)0x0D, (byte)0x0D, (byte)0x0D, (byte)0x0D, (byte)0x0D, (byte)0x0D,
329             (byte)0x0D, (byte)0x0D, (byte)0x0D, (byte)0x0D,
330 
331             (byte)0x06,
332 
333             (byte)0x00, (byte)0x42, (byte)0x00, (byte)0x42, (byte)0x00, (byte)0x42,
334             (byte)0x00, (byte)0x0D, (byte)0x0D, (byte)0x0D, (byte)0x0D, (byte)0x0D,
335             (byte)0x0D, (byte)0x0D, (byte)0x0D, (byte)0x0D, (byte)0x0D, (byte)0x0D,
336             (byte)0x0D, (byte)0x0D, (byte)0x0D, (byte)0x0D, (byte)0x0D, (byte)0x0D,
337             (byte)0x0D, (byte)0x0D, (byte)0x0D, (byte)0x0D, (byte)0x0D, (byte)0x0D,
338             (byte)0x0D, (byte)0x0D, (byte)0x0D, (byte)0x0D, (byte)0x0D, (byte)0x0D,
339             (byte)0x0D, (byte)0x0D, (byte)0x0D, (byte)0x0D, (byte)0x0D, (byte)0x0D,
340             (byte)0x0D, (byte)0x0D, (byte)0x0D, (byte)0x0D, (byte)0x0D, (byte)0x0D,
341             (byte)0x0D, (byte)0x0D, (byte)0x0D, (byte)0x0D, (byte)0x0D, (byte)0x0D,
342             (byte)0x0D, (byte)0x0D, (byte)0x0D, (byte)0x0D, (byte)0x0D, (byte)0x0D,
343             (byte)0x0D, (byte)0x0D, (byte)0x0D, (byte)0x0D, (byte)0x0D, (byte)0x0D,
344             (byte)0x0D, (byte)0x0D, (byte)0x0D, (byte)0x0D, (byte)0x0D, (byte)0x0D,
345             (byte)0x0D, (byte)0x0D, (byte)0x0D, (byte)0x0D, (byte)0x0D, (byte)0x0D,
346             (byte)0x0D, (byte)0x0D, (byte)0x0D, (byte)0x0D,
347 
348             (byte)0x06
349     };
350 
351     private static final byte[] gsmUcs2TestWithLanguageInBody = {
352             (byte)0xC0, (byte)0x00, (byte)0x00, (byte)0x01, (byte)0x11, (byte)0x11, (byte)0x78,
353             (byte)0x3C, (byte)0x00, (byte)0x41, (byte)0x00, (byte)0x20, (byte)0x00, (byte)0x55,
354             (byte)0x00, (byte)0x43, (byte)0x00, (byte)0x53, (byte)0x00, (byte)0x32, (byte)0x00,
355             (byte)0x20, (byte)0x00, (byte)0x6D, (byte)0x00, (byte)0x65, (byte)0x00, (byte)0x73,
356             (byte)0x00, (byte)0x73, (byte)0x00, (byte)0x61, (byte)0x00, (byte)0x67, (byte)0x00,
357             (byte)0x65, (byte)0x00, (byte)0x20, (byte)0x00, (byte)0x63, (byte)0x00, (byte)0x6F,
358             (byte)0x00, (byte)0x6E, (byte)0x00, (byte)0x74, (byte)0x00, (byte)0x61, (byte)0x00,
359             (byte)0x69, (byte)0x00, (byte)0x6E, (byte)0x00, (byte)0x69, (byte)0x00, (byte)0x6E,
360             (byte)0x00, (byte)0x67, (byte)0x00, (byte)0x20, (byte)0x00, (byte)0x61, (byte)0x00,
361             (byte)0x20, (byte)0x04, (byte)0x34, (byte)0x00, (byte)0x20, (byte)0x00, (byte)0x63,
362             (byte)0x00, (byte)0x68, (byte)0x00, (byte)0x61, (byte)0x00, (byte)0x72, (byte)0x00,
363             (byte)0x61, (byte)0x00, (byte)0x63, (byte)0x00, (byte)0x74, (byte)0x00, (byte)0x65,
364             (byte)0x00, (byte)0x72, (byte)0x00, (byte)0x0D
365     };
366 
367     private static final byte[] gsmUcs2TestWithLanguageInBodyUmts = {
368             (byte)0x01, (byte)0x00, (byte)0x01, (byte)0xC0, (byte)0x00, (byte)0x11,
369 
370             (byte)0x01,
371 
372             (byte)0x78, (byte)0x3C, (byte)0x00, (byte)0x41, (byte)0x00, (byte)0x20,
373             (byte)0x00, (byte)0x55, (byte)0x00, (byte)0x43, (byte)0x00, (byte)0x53,
374             (byte)0x00, (byte)0x32, (byte)0x00, (byte)0x20, (byte)0x00, (byte)0x6D,
375             (byte)0x00, (byte)0x65, (byte)0x00, (byte)0x73, (byte)0x00, (byte)0x73,
376             (byte)0x00, (byte)0x61, (byte)0x00, (byte)0x67, (byte)0x00, (byte)0x65,
377             (byte)0x00, (byte)0x20, (byte)0x00, (byte)0x63, (byte)0x00, (byte)0x6F,
378             (byte)0x00, (byte)0x6E, (byte)0x00, (byte)0x74, (byte)0x00, (byte)0x61,
379             (byte)0x00, (byte)0x69, (byte)0x00, (byte)0x6E, (byte)0x00, (byte)0x69,
380             (byte)0x00, (byte)0x6E, (byte)0x00, (byte)0x67, (byte)0x00, (byte)0x20,
381             (byte)0x00, (byte)0x61, (byte)0x00, (byte)0x20, (byte)0x04, (byte)0x34,
382             (byte)0x00, (byte)0x20, (byte)0x00, (byte)0x63, (byte)0x00, (byte)0x68,
383             (byte)0x00, (byte)0x61, (byte)0x00, (byte)0x72, (byte)0x00, (byte)0x61,
384             (byte)0x00, (byte)0x63, (byte)0x00, (byte)0x74, (byte)0x00, (byte)0x65,
385             (byte)0x00, (byte)0x72, (byte)0x00, (byte)0x0D,
386 
387             (byte)0x50
388     };
389 
390     private static final SmsCbLocation sEmptyLocation = new SmsCbLocation();
391 
createFromPdu(byte[] pdu, int serialNumber, int category)392     private static SmsCbMessage createFromPdu(byte[] pdu, int serialNumber, int category) {
393         byte[][] pdus = new byte[1][];
394         pdus[0] = pdu;
395         return createFromPdus(pdus, serialNumber, category);
396     }
397 
createFromPdus(byte[][] pdus, int serialNumber, int category)398     private static SmsCbMessage createFromPdus(byte[][] pdus, int serialNumber, int category) {
399         try {
400             for (byte[] pdu : pdus) {
401                 if (pdu.length <= 88) {
402                     // GSM format cell broadcast
403                     Log.d(TAG, "setting GSM serial number to " + serialNumber);
404                     pdu[0] = (byte) ((serialNumber >>> 8) & 0xff);
405                     pdu[1] = (byte) (serialNumber & 0xff);
406                     if (category != 0) {
407                         Log.d(TAG, "setting GSM message identifier to " + category);
408                         pdu[2] = (byte) ((category >>> 8) & 0xff);
409                         pdu[3] = (byte) (category & 0xff);
410                     }
411                 } else {
412                     // UMTS format cell broadcast
413                     Log.d(TAG, "setting UMTS serial number to " + serialNumber);
414                     pdu[3] = (byte) ((serialNumber >>> 8) & 0xff);
415                     pdu[4] = (byte) (serialNumber & 0xff);
416                     if (category != 0) {
417                         Log.d(TAG, "setting UMTS message identifier to " + category);
418                         pdu[1] = (byte) ((category >>> 8) & 0xff);
419                         pdu[2] = (byte) (category & 0xff);
420                     }
421                 }
422             }
423             return GsmSmsCbMessage.createSmsCbMessage(sEmptyLocation, pdus);
424         } catch (IllegalArgumentException e) {
425             return null;
426         }
427     }
428 
testSendMessage7bit(Activity activity, int serialNumber, int category)429     public static void testSendMessage7bit(Activity activity, int serialNumber,
430             int category) {
431         Intent intent = new Intent(Intents.SMS_CB_RECEIVED_ACTION);
432         intent.putExtra("message", createFromPdu(gsm7BitTest, serialNumber, category));
433         activity.sendOrderedBroadcastAsUser(intent, UserHandle.ALL, Manifest.permission.RECEIVE_SMS,
434                 AppOpsManager.OP_RECEIVE_SMS, null, null, Activity.RESULT_OK, null, null);
435     }
436 
testSendMessage7bitUmts(Activity activity, int serialNumber, int category)437     public static void testSendMessage7bitUmts(Activity activity, int serialNumber,
438             int category) {
439         Intent intent = new Intent(Intents.SMS_CB_RECEIVED_ACTION);
440         intent.putExtra("message", createFromPdu(gsm7BitTestUmts, serialNumber, category));
441         activity.sendOrderedBroadcastAsUser(intent, UserHandle.ALL, Manifest.permission.RECEIVE_SMS,
442                 AppOpsManager.OP_RECEIVE_SMS, null, null, Activity.RESULT_OK, null, null);
443     }
444 
testSendMessage7bitNoPadding(Activity activity, int serialNumber, int category)445     public static void testSendMessage7bitNoPadding(Activity activity, int serialNumber,
446             int category) {
447         Intent intent = new Intent(Intents.SMS_CB_RECEIVED_ACTION);
448         intent.putExtra("message", createFromPdu(gsm7BitTestNoPadding, serialNumber, category));
449         activity.sendOrderedBroadcastAsUser(intent, UserHandle.ALL, Manifest.permission.RECEIVE_SMS,
450                 AppOpsManager.OP_RECEIVE_SMS, null, null, Activity.RESULT_OK, null, null);
451     }
452 
testSendMessage7bitNoPaddingUmts(Activity activity, int serialNumber, int category)453     public static void testSendMessage7bitNoPaddingUmts(Activity activity, int serialNumber,
454             int category) {
455         Intent intent = new Intent(Intents.SMS_CB_RECEIVED_ACTION);
456         intent.putExtra("message", createFromPdu(gsm7BitTestNoPaddingUmts, serialNumber, category));
457         activity.sendOrderedBroadcastAsUser(intent, UserHandle.ALL, Manifest.permission.RECEIVE_SMS,
458                 AppOpsManager.OP_RECEIVE_SMS, null, null, Activity.RESULT_OK, null, null);
459     }
460 
testSendMessage7bitMultipageGsm(Activity activity, int serialNumber, int category)461     public static void testSendMessage7bitMultipageGsm(Activity activity, int serialNumber,
462             int category) {
463         Intent intent = new Intent(Intents.SMS_CB_RECEIVED_ACTION);
464         byte[][] pdus = new byte[2][];
465         pdus[0] = gsm7BitTestMultipage1;
466         pdus[1] = gsm7BitTestMultipage2;
467         intent.putExtra("message", createFromPdus(pdus, serialNumber, category));
468         activity.sendOrderedBroadcastAsUser(intent, UserHandle.ALL, Manifest.permission.RECEIVE_SMS,
469                 AppOpsManager.OP_RECEIVE_SMS, null, null, Activity.RESULT_OK, null, null);
470     }
471 
testSendMessage7bitMultipageUmts(Activity activity, int serialNumber, int category)472     public static void testSendMessage7bitMultipageUmts(Activity activity, int serialNumber,
473             int category) {
474         Intent intent = new Intent(Intents.SMS_CB_RECEIVED_ACTION);
475         intent.putExtra("message", createFromPdu(gsm7BitTestMultipageUmts, serialNumber, category));
476         activity.sendOrderedBroadcastAsUser(intent, UserHandle.ALL, Manifest.permission.RECEIVE_SMS,
477                 AppOpsManager.OP_RECEIVE_SMS, null, null, Activity.RESULT_OK, null, null);
478     }
479 
testSendMessage7bitWithLanguage(Activity activity, int serialNumber, int category)480     public static void testSendMessage7bitWithLanguage(Activity activity, int serialNumber,
481             int category) {
482         Intent intent = new Intent(Intents.SMS_CB_RECEIVED_ACTION);
483         intent.putExtra("message", createFromPdu(gsm7BitTestWithLanguage, serialNumber, category));
484         activity.sendOrderedBroadcastAsUser(intent, UserHandle.ALL, Manifest.permission.RECEIVE_SMS,
485                 AppOpsManager.OP_RECEIVE_SMS, null, null, Activity.RESULT_OK, null, null);
486     }
487 
testSendMessage7bitWithLanguageInBody(Activity activity, int serialNumber, int category)488     public static void testSendMessage7bitWithLanguageInBody(Activity activity, int serialNumber,
489             int category) {
490         Intent intent = new Intent(Intents.SMS_CB_RECEIVED_ACTION);
491         intent.putExtra("message", createFromPdu(gsm7BitTestWithLanguageInBody, serialNumber,
492                 category));
493         activity.sendOrderedBroadcastAsUser(intent, UserHandle.ALL, Manifest.permission.RECEIVE_SMS,
494                 AppOpsManager.OP_RECEIVE_SMS, null, null, Activity.RESULT_OK, null, null);
495     }
496 
testSendMessage7bitWithLanguageInBodyUmts(Activity activity, int serialNumber, int category)497     public static void testSendMessage7bitWithLanguageInBodyUmts(Activity activity,
498             int serialNumber, int category) {
499         Intent intent = new Intent(Intents.SMS_CB_RECEIVED_ACTION);
500         intent.putExtra("message", createFromPdu(gsm7BitTestWithLanguageInBodyUmts, serialNumber,
501                 category));
502         activity.sendOrderedBroadcastAsUser(intent, UserHandle.ALL, Manifest.permission.RECEIVE_SMS,
503                 AppOpsManager.OP_RECEIVE_SMS, null, null, Activity.RESULT_OK, null, null);
504     }
505 
testSendMessageUcs2(Activity activity, int serialNumber, int category)506     public static void testSendMessageUcs2(Activity activity, int serialNumber,
507             int category) {
508         Intent intent = new Intent(Intents.SMS_CB_RECEIVED_ACTION);
509         intent.putExtra("message", createFromPdu(gsmUcs2Test, serialNumber, category));
510         activity.sendOrderedBroadcastAsUser(intent, UserHandle.ALL, Manifest.permission.RECEIVE_SMS,
511                 AppOpsManager.OP_RECEIVE_SMS, null, null, Activity.RESULT_OK, null, null);
512     }
513 
testSendMessageUcs2Umts(Activity activity, int serialNumber, int category)514     public static void testSendMessageUcs2Umts(Activity activity, int serialNumber,
515             int category) {
516         Intent intent = new Intent(Intents.SMS_CB_RECEIVED_ACTION);
517         intent.putExtra("message", createFromPdu(gsmUcs2TestUmts, serialNumber, category));
518         activity.sendOrderedBroadcastAsUser(intent, UserHandle.ALL, Manifest.permission.RECEIVE_SMS,
519                 AppOpsManager.OP_RECEIVE_SMS, null, null, Activity.RESULT_OK, null, null);
520     }
521 
testSendMessageUcs2MultipageUmts(Activity activity, int serialNumber, int category)522     public static void testSendMessageUcs2MultipageUmts(Activity activity, int serialNumber,
523             int category) {
524         Intent intent = new Intent(Intents.SMS_CB_RECEIVED_ACTION);
525         intent.putExtra("message", createFromPdu(gsmUcs2TestMultipageUmts, serialNumber, category));
526         activity.sendOrderedBroadcastAsUser(intent, UserHandle.ALL, Manifest.permission.RECEIVE_SMS,
527                 AppOpsManager.OP_RECEIVE_SMS, null, null, Activity.RESULT_OK, null, null);
528     }
529 
testSendMessageUcs2WithLanguageInBody(Activity activity, int serialNumber, int category)530     public static void testSendMessageUcs2WithLanguageInBody(Activity activity, int serialNumber,
531             int category) {
532         Intent intent = new Intent(Intents.SMS_CB_RECEIVED_ACTION);
533         intent.putExtra("message", createFromPdu(gsmUcs2TestWithLanguageInBody, serialNumber,
534                 category));
535         activity.sendOrderedBroadcastAsUser(intent, UserHandle.ALL, Manifest.permission.RECEIVE_SMS,
536                 AppOpsManager.OP_RECEIVE_SMS, null, null, Activity.RESULT_OK, null, null);
537     }
538 
testSendMessageUcs2WithLanguageUmts(Activity activity, int serialNumber, int category)539     public static void testSendMessageUcs2WithLanguageUmts(Activity activity, int serialNumber,
540             int category) {
541         Intent intent = new Intent(Intents.SMS_CB_RECEIVED_ACTION);
542         intent.putExtra("message", createFromPdu(gsmUcs2TestWithLanguageInBodyUmts, serialNumber,
543                 category));
544         activity.sendOrderedBroadcastAsUser(intent, UserHandle.ALL, Manifest.permission.RECEIVE_SMS,
545                 AppOpsManager.OP_RECEIVE_SMS, null, null, Activity.RESULT_OK, null, null);
546     }
547 
testSendEtwsMessageNormal(Activity activity, int serialNumber)548     public static void testSendEtwsMessageNormal(Activity activity, int serialNumber) {
549         Intent intent = new Intent(Intents.SMS_EMERGENCY_CB_RECEIVED_ACTION);
550         intent.putExtra("message", createFromPdu(etwsMessageNormal, serialNumber, 0));
551         activity.sendOrderedBroadcastAsUser(intent, UserHandle.ALL,
552                 Manifest.permission.RECEIVE_EMERGENCY_BROADCAST,
553                 AppOpsManager.OP_RECEIVE_EMERGECY_SMS, null, null, Activity.RESULT_OK, null, null);
554     }
555 
testSendEtwsMessageCancel(Activity activity, int serialNumber)556     public static void testSendEtwsMessageCancel(Activity activity, int serialNumber) {
557         Intent intent = new Intent(Intents.SMS_EMERGENCY_CB_RECEIVED_ACTION);
558         intent.putExtra("message", createFromPdu(etwsMessageCancel, serialNumber, 0));
559         activity.sendOrderedBroadcastAsUser(intent, UserHandle.ALL,
560                 Manifest.permission.RECEIVE_EMERGENCY_BROADCAST,
561                 AppOpsManager.OP_RECEIVE_EMERGECY_SMS, null, null, Activity.RESULT_OK, null, null);
562     }
563 
testSendEtwsMessageTest(Activity activity, int serialNumber)564     public static void testSendEtwsMessageTest(Activity activity, int serialNumber) {
565         Intent intent = new Intent(Intents.SMS_EMERGENCY_CB_RECEIVED_ACTION);
566         intent.putExtra("message", createFromPdu(etwsMessageTest, serialNumber, 0));
567         activity.sendOrderedBroadcastAsUser(intent, UserHandle.ALL,
568                 Manifest.permission.RECEIVE_EMERGENCY_BROADCAST,
569                 AppOpsManager.OP_RECEIVE_EMERGECY_SMS, null, null, Activity.RESULT_OK, null, null);
570     }
571 }