blob: 8fe8fae418fba7ad64ad07671ed1364d57901a86 [file] [log] [blame]
Mike Doddd3b009a2015-08-11 11:16:59 -07001<?xml version="1.0" encoding="utf-8"?>
2<!--
3 Copyright (C) 2015 The Android Open Source Project
4
5 Licensed under the Apache License, Version 2.0 (the "License");
6 you may not use this file except in compliance with the License.
7 You may obtain a copy of the License at
8
9 http://www.apache.org/licenses/LICENSE-2.0
10
11 Unless required by applicable law or agreed to in writing, software
12 distributed under the License is distributed on an "AS IS" BASIS,
13 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 See the License for the specific language governing permissions and
15 limitations under the License.
16-->
17<manifest xmlns:android="http://schemas.android.com/apk/res/android"
18 package="com.android.messaging"
19 android:installLocation="internalOnly">
20
21 <uses-sdk android:minSdkVersion="19" android:targetSdkVersion="23" />
22
23 <!-- Application holds CPU wakelock while working in background -->
24 <uses-permission android:name="android.permission.WAKE_LOCK" />
25 <!-- Application needs SMS/MMS permissions -->
26 <uses-permission android:name="android.permission.READ_SMS"/>
27 <uses-permission android:name="android.permission.WRITE_SMS"/>
28 <uses-permission android:name="android.permission.RECEIVE_SMS"/>
29 <uses-permission android:name="android.permission.RECEIVE_MMS"/>
30 <uses-permission android:name="android.permission.SEND_SMS"/>
31 <!-- Application needs access to MMS network -->
32 <uses-permission android:name="android.permission.INTERNET" />
33 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
34 <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
35 <!-- Application needs CONTACT permissions -->
36 <uses-permission android:name="android.permission.READ_CONTACTS"/>
37 <uses-permission android:name="android.permission.WRITE_CONTACTS"/>
38 <!-- Application needs to read profiles for the user itself from CP2 -->
39 <uses-permission android:name="android.permission.READ_PROFILE"/>
40 <uses-permission android:name="android.permission.VIBRATE"/>
41 <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
42
43 <uses-permission android:name="android.permission.CAMERA" />
44 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
45 <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
46 <uses-permission android:name="android.permission.RECORD_AUDIO" />
47 <uses-permission android:name="android.permission.CALL_PHONE" />
48 <uses-permission android:name="android.permission.DOWNLOAD_WITHOUT_NOTIFICATION" />
49 <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
50
51 <!-- Optional features -->
52 <uses-feature android:name="android.hardware.camera" android:required="false" />
53 <uses-feature android:name="android.hardware.camera.front" android:required="false" />
54 <uses-feature android:name="android.hardware.camera.autofocus" android:required="false" />
55 <uses-feature android:name="android.hardware.microphone" android:required="false" />
56 <uses-feature android:name="android.hardware.screen.portrait" android:required="false" />
57
58 <application
59 android:name="com.android.messaging.BugleApplication"
60 android:allowBackup="false"
61 android:icon="@drawable/ic_launcher"
62 android:label="@string/app_name"
63 android:theme="@style/BugleTheme"
64 android:supportsRtl="true">
65
66 <!-- Displays a list of conversations -->
67 <activity
68 android:name=".ui.conversationlist.ConversationListActivity"
69 android:configChanges="orientation|screenSize|keyboardHidden"
70 android:screenOrientation="user"
71 android:label="@string/app_name"
72 android:theme="@style/BugleTheme.ConversationListActivity">
73 <intent-filter>
74 <action android:name="android.intent.action.MAIN" />
75 <category android:name="android.intent.category.LAUNCHER" />
76 <category android:name="android.intent.category.DEFAULT" />
77 <category android:name="android.intent.category.APP_MESSAGING" />
78 </intent-filter>
79 </activity>
80
81 <activity
82 android:name=".ui.PermissionCheckActivity"
83 android:screenOrientation="portrait"
84 android:configChanges="orientation|screenSize|keyboardHidden" />
85
86 <!-- Launches a conversation (ensures correct app name shown in recents) -->
87 <activity
88 android:name=".ui.conversation.LaunchConversationActivity"
89 android:configChanges="orientation|screenSize|keyboardHidden"
90 android:screenOrientation="user"
91 android:theme="@style/Invisible"
92 android:noHistory="true"
93 android:documentLaunchMode="always">
94 <intent-filter>
95 <action android:name="android.intent.action.VIEW" />
96 <action android:name="android.intent.action.SENDTO" />
97 <category android:name="android.intent.category.DEFAULT" />
98 <category android:name="android.intent.category.BROWSABLE" />
99 <data android:scheme="sms" />
100 <data android:scheme="smsto" />
101 </intent-filter>
102 <intent-filter>
103 <action android:name="android.intent.action.VIEW" />
104 <action android:name="android.intent.action.SENDTO" />
105 <category android:name="android.intent.category.DEFAULT" />
106 <category android:name="android.intent.category.BROWSABLE" />
107 <data android:scheme="mms" />
108 <data android:scheme="mmsto" />
109 </intent-filter>
110 </activity>
111
112 <!-- Displays a list of archived conversations -->
113 <activity
114 android:name=".ui.conversationlist.ArchivedConversationListActivity"
115 android:configChanges="orientation|screenSize|keyboardHidden"
116 android:screenOrientation="user"
117 android:label="@string/archived_activity_title"
118 android:theme="@style/BugleTheme.ArchivedConversationListActivity"
119 android:parentActivityName="com.android.messaging.ui.conversationlist.ConversationListActivity">
120 <meta-data
121 android:name="android.support.PARENT_ACTIVITY"
122 android:value="com.android.messaging.ui.conversationlist.ConversationListActivity" />
123 </activity>
124
125 <!-- Displays the contents of a single conversation -->
126 <activity
127 android:name=".ui.conversation.ConversationActivity"
128 android:configChanges="orientation|screenSize|keyboardHidden"
129 android:screenOrientation="user"
130 android:windowSoftInputMode="stateHidden|adjustResize"
131 android:theme="@style/BugleTheme.ConversationActivity"
132 android:parentActivityName="com.android.messaging.ui.conversationlist.ConversationListActivity">
133 <meta-data
134 android:name="android.support.PARENT_ACTIVITY"
135 android:value="com.android.messaging.ui.conversationlist.ConversationListActivity" />
136 </activity>
137
138 <!-- Blocked Participants -->
139 <activity
140 android:name=".ui.BlockedParticipantsActivity"
141 android:configChanges="orientation|screenSize|keyboardHidden"
142 android:screenOrientation="user"
143 android:label="@string/blocked_contacts_title"
144 android:theme="@style/BugleTheme"
145 android:parentActivityName="com.android.messaging.ui.conversationlist.ConversationListActivity">
146 <meta-data
147 android:name="android.support.PARENT_ACTIVITY"
148 android:value="com.android.messaging.ui.conversationlist.ConversationListActivity" />
149 </activity>
150
151 <!-- Full-screen photo viewer -->
152 <activity
153 android:name=".ui.photoviewer.BuglePhotoViewActivity"
154 android:label="@string/photo_view_activity_title"
155 android:configChanges="orientation|screenSize|keyboardHidden"
156 android:screenOrientation="user"
157 android:theme="@style/BuglePhotoViewTheme"
158 />
159
160 <!-- Settings -->
161 <activity
162 android:name=".ui.appsettings.SettingsActivity"
163 android:label="@string/settings_activity_title"
164 android:theme="@style/BugleTheme.SettingsActivity"
165 android:configChanges="orientation|screenSize|keyboardHidden"
166 android:screenOrientation="user"
167 android:parentActivityName="com.android.messaging.ui.conversationlist.ConversationListActivity">
168 <meta-data
169 android:name="android.support.PARENT_ACTIVITY"
170 android:value="com.android.messaging.ui.conversationlist.ConversationListActivity" />
171 </activity>
172
173 <activity
174 android:name=".ui.appsettings.PerSubscriptionSettingsActivity"
175 android:label="@string/advanced_settings_activity_title"
176 android:theme="@style/BugleTheme.SettingsActivity"
177 android:configChanges="orientation|screenSize|keyboardHidden"
178 android:screenOrientation="user"
179 android:parentActivityName="com.android.messaging.ui.appsettings.SettingsActivity">
180 <meta-data
181 android:name="android.support.PARENT_ACTIVITY"
182 android:value="com.android.messaging.ui.appsettings.SettingsActivity" />
183 </activity>
184
185 <activity
186 android:name=".ui.appsettings.ApplicationSettingsActivity"
187 android:label="@string/general_settings_activity_title"
188 android:theme="@style/BugleTheme.SettingsActivity"
189 android:configChanges="orientation|screenSize|keyboardHidden"
190 android:screenOrientation="user"
191 android:parentActivityName="com.android.messaging.ui.appsettings.SettingsActivity">
192 <meta-data
193 android:name="android.support.PARENT_ACTIVITY"
194 android:value="com.android.messaging.ui.appsettings.SettingsActivity" />
195 <intent-filter>
196 <action android:name="android.intent.action.MAIN" />
197 <category android:name="android.intent.category.DEFAULT" />
198 <category android:name="android.intent.category.NOTIFICATION_PREFERENCES" />
199 </intent-filter>
200 </activity>
201
202 <!-- Handles sharing intent -->
203 <activity
204 android:name=".ui.conversationlist.ShareIntentActivity"
205 android:configChanges="orientation|screenSize|keyboardHidden"
206 android:screenOrientation="user"
207 android:theme="@style/BugleTheme.DialogActivity"
208 android:excludeFromRecents="true"
209 android:documentLaunchMode="always">
210 <intent-filter
211 android:label="@string/share_intent_label">
212 <action android:name="android.intent.action.SEND" />
213 <category android:name="android.intent.category.DEFAULT" />
214 <data android:mimeType="text/plain" />
215 <data android:mimeType="text/x-vCard" />
216 <data android:mimeType="text/x-vcard" />
217 <data android:mimeType="image/*" />
218 <data android:mimeType="audio/*" />
219 <data android:mimeType="application/ogg" />
220 </intent-filter>
221 <intent-filter
222 android:label="@string/share_intent_label">
223 <action android:name="android.intent.action.SEND_MULTIPLE" />
224 <category android:name="android.intent.category.DEFAULT" />
225 <data android:mimeType="image/*" />
226 </intent-filter>
227 </activity>
228
229 <!-- People & Options -->
230 <activity
231 android:name=".ui.conversationsettings.PeopleAndOptionsActivity"
232 android:configChanges="orientation|screenSize|keyboardHidden"
233 android:screenOrientation="user"
234 android:label="@string/people_and_options_activity_title"
235 android:theme="@style/BugleTheme"
236 android:parentActivityName="com.android.messaging.ui.conversation.ConversationActivity">
237 <meta-data
238 android:name="android.support.PARENT_ACTIVITY"
239 android:value="com.android.messaging.ui.conversation.ConversationActivity" />
240 </activity>
241
242 <!-- License -->
243 <activity android:name=".ui.LicenseActivity"
244 android:exported="true"
245 android:theme="@android:style/Theme.Holo.Light.Dialog"
246 android:label="@string/menu_license">
247 </activity>
248
249 <!-- Message Forwarding -->
250 <activity
251 android:name=".ui.conversationlist.ForwardMessageActivity"
252 android:configChanges="orientation|screenSize|keyboardHidden"
253 android:screenOrientation="user"
254 android:label="@string/forward_message_activity_title"
255 android:theme="@style/BugleTheme.DialogActivity">
256 </activity>
257
258 <!-- Entry point for handling remote input/actions. Currently, this is only used by Android
259 Wear to send voice replies. Since that uses PendingIntents, we don't need to export
260 this activity. If we want other apps to be able to use this activity at will,
261 we'll need to guard it with a signature-matching protected permission. We would also
262 need to add an intent filter and remove the android:exported attribute. -->
263 <activity
264 android:name=".ui.RemoteInputEntrypointActivity"
265 android:configChanges="orientation|screenSize|keyboardHidden"
266 android:screenOrientation="user"
267 android:exported="false"
268 android:theme="@style/Invisible">
269 </activity>
270
271 <!-- VCard details -->
272 <activity
273 android:name=".ui.VCardDetailActivity"
274 android:configChanges="orientation|screenSize|keyboardHidden"
275 android:screenOrientation="user"
276 android:label="@string/vcard_detail_activity_title"
277 android:theme="@style/BugleTheme">
278 <meta-data
279 android:name="android.support.PARENT_ACTIVITY"
280 android:value=".ui.conversation.ConversationActivity" />
281 </activity>
282
283 <!-- Attachment chooser -->
284 <activity
285 android:name=".ui.attachmentchooser.AttachmentChooserActivity"
286 android:configChanges="orientation|screenSize|keyboardHidden"
287 android:screenOrientation="user"
288 android:label="@string/attachment_chooser_activity_title"
289 android:theme="@style/BugleTheme"
290 android:parentActivityName="com.android.messaging.ui.conversation.ConversationActivity">
291 <meta-data
292 android:name="android.support.PARENT_ACTIVITY"
293 android:value="com.android.messaging.ui.conversation.ConversationActivity" />
294 </activity>
295
296 <!-- Test activity that we use to host fragments/views. Unfortunately, apparently necessary
297 because Android framework test cases want activity to be in the instrumented package.
298 See http://developer.android.com/reference/android/test/ActivityInstrumentationTestCase2.html
299 -->
300 <activity
301 android:name=".ui.TestActivity"
302 android:configChanges="orientation|screenSize|keyboardHidden">
303 </activity>
304
305 <activity
306 android:name=".ui.debug.DebugMmsConfigActivity"
307 android:configChanges="orientation|screenSize|keyboardHidden"
308 android:screenOrientation="user"
309 android:theme="@style/BugleTheme.DialogActivity"
310 android:exported="false">
311 </activity>
312
313 <provider android:name=".datamodel.MessagingContentProvider" android:label="@string/app_name"
314 android:authorities="com.android.messaging.datamodel.MessagingContentProvider"
315 android:exported="false" >
316 </provider>
317
318 <provider android:name=".datamodel.MmsFileProvider"
319 android:authorities="com.android.messaging.datamodel.MmsFileProvider"
320 android:grantUriPermissions="true" />
321
322 <provider android:name=".datamodel.MediaScratchFileProvider"
323 android:authorities="com.android.messaging.datamodel.MediaScratchFileProvider"
324 android:grantUriPermissions="true" />
325
326
327 <!-- Action Services -->
328 <service android:name=".datamodel.action.ActionServiceImpl"/>
329 <service android:name=".datamodel.action.BackgroundWorkerService"/>
330
331 <!-- Sms and Mms related items -->
332
333 <!-- Intents for Notification and Pre-KLP Delivery -->
334 <!-- Registered with the highest possible priority (max_int) -->
335 <receiver android:name=".receiver.MmsWapPushReceiver"
336 android:enabled="false"
337 android:permission="android.permission.BROADCAST_WAP_PUSH">
338 <intent-filter android:priority="2147483647">
339 <action android:name="android.provider.Telephony.WAP_PUSH_RECEIVED" />
340 <data android:mimeType="application/vnd.wap.mms-message" />
341 </intent-filter>
342 </receiver>
343 <receiver android:name=".receiver.SmsReceiver"
344 android:enabled="false"
345 android:permission="android.permission.BROADCAST_SMS">
346 <intent-filter android:priority="2147483647">
347 <action android:name="android.provider.Telephony.SMS_RECEIVED" />
348 </intent-filter>
349 <intent-filter android:priority="2147483647">
350 <action android:name="android.provider.Telephony.MMS_DOWNLOADED" />
351 </intent-filter>
352 </receiver>
353
354 <!-- Intents for aborting SMS/MMS broadcasts pre-KLP -->
355 <!-- Registered for a priority just ahead of inbox Messaging apps (2) -->
356 <receiver android:name=".receiver.AbortMmsWapPushReceiver"
357 android:enabled="false"
358 android:permission="android.permission.BROADCAST_WAP_PUSH">
359 <intent-filter android:priority="3">
360 <action android:name="android.provider.Telephony.WAP_PUSH_RECEIVED" />
361 <data android:mimeType="application/vnd.wap.mms-message" />
362 </intent-filter>
363 </receiver>
364 <receiver android:name=".receiver.AbortSmsReceiver"
365 android:enabled="false"
366 android:permission="android.permission.BROADCAST_SMS">
367 <intent-filter android:priority="3">
368 <action android:name="android.provider.Telephony.SMS_RECEIVED" />
369 </intent-filter>
370 </receiver>
371
372 <!-- Intents for KLP+ Delivery -->
373 <receiver android:name=".receiver.MmsWapPushDeliverReceiver"
374 android:permission="android.permission.BROADCAST_WAP_PUSH">
375 <intent-filter>
376 <action android:name="android.provider.Telephony.WAP_PUSH_DELIVER" />
377 <data android:mimeType="application/vnd.wap.mms-message" />
378 </intent-filter>
379 </receiver>
380 <receiver android:name=".receiver.SmsDeliverReceiver"
381 android:permission="android.permission.BROADCAST_SMS">
382 <intent-filter>
383 <action android:name="android.provider.Telephony.SMS_DELIVER" />
384 </intent-filter>
385 </receiver>
386
387 <receiver android:name=".receiver.SendStatusReceiver"
388 android:exported="false">
389 <intent-filter>
390 <action android:name="com.android.messaging.receiver.SendStatusReceiver.MESSAGE_SENT" />
391 <data android:scheme="content" />
392 </intent-filter>
393 <intent-filter>
394 <action android:name="com.android.messaging.receiver.SendStatusReceiver.MESSAGE_DELIVERED" />
395 </intent-filter>
396 <intent-filter>
397 <action android:name="com.android.messaging.receiver.SendStatusReceiver.MMS_SENT" />
398 <data android:scheme="content" />
399 </intent-filter>
400 <intent-filter>
401 <action android:name="com.android.messaging.receiver.SendStatusReceiver.MMS_DOWNLOADED" />
402 <data android:scheme="content" />
403 </intent-filter>
404 </receiver>
405
406 <service android:name=".datamodel.NoConfirmationSmsSendService"
407 android:permission="android.permission.SEND_RESPOND_VIA_MESSAGE"
408 android:exported="true" >
409 <intent-filter>
410 <action android:name="android.intent.action.RESPOND_VIA_MESSAGE" />
411 <category android:name="android.intent.category.DEFAULT" />
412 <data android:scheme="sms" />
413 <data android:scheme="smsto" />
414 </intent-filter>
415 </service>
416
417 <activity android:name=".ui.ClassZeroActivity"
418 android:configChanges="orientation|screenSize|keyboardHidden"
419 android:screenOrientation="user"
420 android:label="@string/class_0_message_activity"
421 android:theme="@style/BugleTheme.DialogActivity"
422 android:launchMode="singleTask"
423 android:excludeFromRecents="true">
424 </activity>
425
426 <activity android:name=".ui.SmsStorageLowWarningActivity"
427 android:theme="@style/Invisible"
428 android:configChanges="orientation|screenSize|keyboardHidden" />
429
430 <activity android:name=".ui.appsettings.ApnSettingsActivity"
431 android:configChanges="orientation|screenSize|keyboardHidden"
432 android:screenOrientation="user"
433 android:theme="@style/BugleTheme"
434 android:parentActivityName="com.android.messaging.ui.appsettings.SettingsActivity" />
435
436 <activity android:name=".ui.appsettings.ApnEditorActivity"
437 android:configChanges="orientation|screenSize|keyboardHidden"
438 android:screenOrientation="user"
439 android:theme="@style/BugleTheme"
440 android:parentActivityName="com.android.messaging.ui.appsettings.ApnSettingsActivity"/>
441
442 <receiver android:name=".receiver.StorageStatusReceiver">
443 <intent-filter>
444 <action android:name="android.intent.action.DEVICE_STORAGE_LOW" />
445 </intent-filter>
446 <intent-filter>
447 <action android:name="android.intent.action.DEVICE_STORAGE_OK" />
448 </intent-filter>
449 </receiver>
450
451 <receiver android:name=".receiver.BootAndPackageReplacedReceiver">
452 <intent-filter>
453 <action android:name="android.intent.action.BOOT_COMPLETED"/>
454 <action android:name="android.intent.action.MY_PACKAGE_REPLACED"/>
455 </intent-filter>
456 </receiver>
457
458 <!-- Broadcast receiver that will be notified to reset notifications -->
459 <receiver
460 android:name=".receiver.NotificationReceiver"
461 android:exported="false">
462 </receiver>
463
464 <!-- Broadcast receiver that will be notified for ActionService alarms. -->
465 <receiver
466 android:name=".datamodel.action.ActionServiceImpl$PendingActionReceiver"
467 android:exported="false">
468 <intent-filter>
469 <action android:name="com.android.messaging.datamodel.PENDING_ACTION" />
470 </intent-filter>
471 </receiver>
472
473 <receiver android:name=".receiver.DefaultSmsSubscriptionChangeReceiver">
474 <intent-filter>
475 <action android:name="android.intent.action.ACTION_DEFAULT_SMS_SUBSCRIPTION_CHANGED"/>
476 </intent-filter>
477 </receiver>
478
479 <!-- Widget that displays the conversation list -->
480 <receiver android:name=".widget.BugleWidgetProvider"
481 android:label="@string/widget_conversation_name">
482 <intent-filter>
483 <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
484 </intent-filter>
485 <intent-filter>
486 <action android:name="com.android.Bugle.intent.action.ACTION_NOTIFY_CONVERSATIONS_CHANGED" />
487 </intent-filter>
488 <meta-data android:name="android.appwidget.provider"
489 android:resource="@xml/widget_conversation_list" />
490 </receiver>
491
492 <!-- Widget that displays the messages of a single conversation -->
493 <receiver android:name=".widget.WidgetConversationProvider"
494 android:label="@string/widget_conversation_name">
495 <intent-filter>
496 <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
497 </intent-filter>
498 <intent-filter>
499 <action android:name="com.android.Bugle.intent.action.ACTION_NOTIFY_MESSAGES_CHANGED" />
500 </intent-filter>
501 <meta-data android:name="android.appwidget.provider"
502 android:resource="@xml/widget_conversation" />
503 </receiver>
504
505 <service android:name=".widget.WidgetConversationListService"
506 android:permission="android.permission.BIND_REMOTEVIEWS"
507 android:exported="false" />
508
509 <service android:name=".widget.WidgetConversationService"
510 android:permission="android.permission.BIND_REMOTEVIEWS"
511 android:exported="false" />
512
513 <activity android:name=".ui.WidgetPickConversationActivity"
514 android:theme="@style/BugleTheme"
515 android:label="@string/app_name" >
516 <intent-filter>
517 <action android:name="android.appwidget.action.APPWIDGET_CONFIGURE" />
518 </intent-filter>
519 </activity>
520
521 <service android:name="android.support.v7.mms.MmsService"/>
522 </application>
523
524</manifest>