blob: bd77a493187cd55edd940a92dbbf69d7924cd9b9 [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
Raman Tenneti8e71d1b2019-04-05 19:04:14 -070021 <uses-sdk android:minSdkVersion="19" android:targetSdkVersion="24" />
Mike Doddd3b009a2015-08-11 11:16:59 -070022
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" />
Taesu Leedefea9d2020-02-03 19:02:50 +0900213 <action android:name="android.intent.action.SEND_MULTIPLE" />
Mike Doddd3b009a2015-08-11 11:16:59 -0700214 <category android:name="android.intent.category.DEFAULT" />
215 <data android:mimeType="text/plain" />
216 <data android:mimeType="text/x-vCard" />
217 <data android:mimeType="text/x-vcard" />
218 <data android:mimeType="image/*" />
219 <data android:mimeType="audio/*" />
Taesu Leedefea9d2020-02-03 19:02:50 +0900220 <data android:mimeType="video/*" />
Mike Doddd3b009a2015-08-11 11:16:59 -0700221 <data android:mimeType="application/ogg" />
222 </intent-filter>
Mike Doddd3b009a2015-08-11 11:16:59 -0700223 </activity>
224
225 <!-- People & Options -->
226 <activity
227 android:name=".ui.conversationsettings.PeopleAndOptionsActivity"
228 android:configChanges="orientation|screenSize|keyboardHidden"
229 android:screenOrientation="user"
230 android:label="@string/people_and_options_activity_title"
231 android:theme="@style/BugleTheme"
232 android:parentActivityName="com.android.messaging.ui.conversation.ConversationActivity">
233 <meta-data
234 android:name="android.support.PARENT_ACTIVITY"
235 android:value="com.android.messaging.ui.conversation.ConversationActivity" />
236 </activity>
237
238 <!-- License -->
239 <activity android:name=".ui.LicenseActivity"
240 android:exported="true"
241 android:theme="@android:style/Theme.Holo.Light.Dialog"
242 android:label="@string/menu_license">
243 </activity>
244
245 <!-- Message Forwarding -->
246 <activity
247 android:name=".ui.conversationlist.ForwardMessageActivity"
248 android:configChanges="orientation|screenSize|keyboardHidden"
249 android:screenOrientation="user"
250 android:label="@string/forward_message_activity_title"
251 android:theme="@style/BugleTheme.DialogActivity">
252 </activity>
253
254 <!-- Entry point for handling remote input/actions. Currently, this is only used by Android
255 Wear to send voice replies. Since that uses PendingIntents, we don't need to export
256 this activity. If we want other apps to be able to use this activity at will,
257 we'll need to guard it with a signature-matching protected permission. We would also
258 need to add an intent filter and remove the android:exported attribute. -->
259 <activity
260 android:name=".ui.RemoteInputEntrypointActivity"
261 android:configChanges="orientation|screenSize|keyboardHidden"
262 android:screenOrientation="user"
263 android:exported="false"
264 android:theme="@style/Invisible">
265 </activity>
266
267 <!-- VCard details -->
268 <activity
269 android:name=".ui.VCardDetailActivity"
270 android:configChanges="orientation|screenSize|keyboardHidden"
271 android:screenOrientation="user"
272 android:label="@string/vcard_detail_activity_title"
273 android:theme="@style/BugleTheme">
274 <meta-data
275 android:name="android.support.PARENT_ACTIVITY"
276 android:value=".ui.conversation.ConversationActivity" />
277 </activity>
278
279 <!-- Attachment chooser -->
280 <activity
281 android:name=".ui.attachmentchooser.AttachmentChooserActivity"
282 android:configChanges="orientation|screenSize|keyboardHidden"
283 android:screenOrientation="user"
284 android:label="@string/attachment_chooser_activity_title"
285 android:theme="@style/BugleTheme"
286 android:parentActivityName="com.android.messaging.ui.conversation.ConversationActivity">
287 <meta-data
288 android:name="android.support.PARENT_ACTIVITY"
289 android:value="com.android.messaging.ui.conversation.ConversationActivity" />
290 </activity>
291
292 <!-- Test activity that we use to host fragments/views. Unfortunately, apparently necessary
293 because Android framework test cases want activity to be in the instrumented package.
294 See http://developer.android.com/reference/android/test/ActivityInstrumentationTestCase2.html
295 -->
296 <activity
297 android:name=".ui.TestActivity"
298 android:configChanges="orientation|screenSize|keyboardHidden">
299 </activity>
300
301 <activity
302 android:name=".ui.debug.DebugMmsConfigActivity"
303 android:configChanges="orientation|screenSize|keyboardHidden"
304 android:screenOrientation="user"
305 android:theme="@style/BugleTheme.DialogActivity"
306 android:exported="false">
307 </activity>
308
309 <provider android:name=".datamodel.MessagingContentProvider" android:label="@string/app_name"
310 android:authorities="com.android.messaging.datamodel.MessagingContentProvider"
311 android:exported="false" >
312 </provider>
313
314 <provider android:name=".datamodel.MmsFileProvider"
315 android:authorities="com.android.messaging.datamodel.MmsFileProvider"
Tom Taylora2aa53f2016-12-05 16:39:55 -0800316 android:grantUriPermissions="true"
317 android:exported="false" />
Mike Doddd3b009a2015-08-11 11:16:59 -0700318
319 <provider android:name=".datamodel.MediaScratchFileProvider"
320 android:authorities="com.android.messaging.datamodel.MediaScratchFileProvider"
Tom Taylora2aa53f2016-12-05 16:39:55 -0800321 android:grantUriPermissions="true"
322 android:exported="false" />
Mike Doddd3b009a2015-08-11 11:16:59 -0700323
324
325 <!-- Action Services -->
Raman Tenneticdf40bb2019-02-12 20:15:13 -0800326 <service android:name=".datamodel.action.ActionServiceImpl"
327 android:permission="android.permission.BIND_JOB_SERVICE"
328 android:exported="true"/>
329 <service android:name=".datamodel.action.BackgroundWorkerService"
330 android:permission="android.permission.BIND_JOB_SERVICE"
331 android:exported="true"/>
Mike Doddd3b009a2015-08-11 11:16:59 -0700332
333 <!-- Sms and Mms related items -->
334
335 <!-- Intents for Notification and Pre-KLP Delivery -->
336 <!-- Registered with the highest possible priority (max_int) -->
337 <receiver android:name=".receiver.MmsWapPushReceiver"
338 android:enabled="false"
339 android:permission="android.permission.BROADCAST_WAP_PUSH">
340 <intent-filter android:priority="2147483647">
341 <action android:name="android.provider.Telephony.WAP_PUSH_RECEIVED" />
342 <data android:mimeType="application/vnd.wap.mms-message" />
343 </intent-filter>
344 </receiver>
345 <receiver android:name=".receiver.SmsReceiver"
346 android:enabled="false"
347 android:permission="android.permission.BROADCAST_SMS">
348 <intent-filter android:priority="2147483647">
349 <action android:name="android.provider.Telephony.SMS_RECEIVED" />
350 </intent-filter>
351 <intent-filter android:priority="2147483647">
352 <action android:name="android.provider.Telephony.MMS_DOWNLOADED" />
353 </intent-filter>
354 </receiver>
355
356 <!-- Intents for aborting SMS/MMS broadcasts pre-KLP -->
357 <!-- Registered for a priority just ahead of inbox Messaging apps (2) -->
358 <receiver android:name=".receiver.AbortMmsWapPushReceiver"
359 android:enabled="false"
360 android:permission="android.permission.BROADCAST_WAP_PUSH">
361 <intent-filter android:priority="3">
362 <action android:name="android.provider.Telephony.WAP_PUSH_RECEIVED" />
363 <data android:mimeType="application/vnd.wap.mms-message" />
364 </intent-filter>
365 </receiver>
366 <receiver android:name=".receiver.AbortSmsReceiver"
367 android:enabled="false"
368 android:permission="android.permission.BROADCAST_SMS">
369 <intent-filter android:priority="3">
370 <action android:name="android.provider.Telephony.SMS_RECEIVED" />
371 </intent-filter>
372 </receiver>
373
374 <!-- Intents for KLP+ Delivery -->
375 <receiver android:name=".receiver.MmsWapPushDeliverReceiver"
376 android:permission="android.permission.BROADCAST_WAP_PUSH">
377 <intent-filter>
378 <action android:name="android.provider.Telephony.WAP_PUSH_DELIVER" />
379 <data android:mimeType="application/vnd.wap.mms-message" />
380 </intent-filter>
381 </receiver>
382 <receiver android:name=".receiver.SmsDeliverReceiver"
383 android:permission="android.permission.BROADCAST_SMS">
384 <intent-filter>
385 <action android:name="android.provider.Telephony.SMS_DELIVER" />
386 </intent-filter>
387 </receiver>
388
389 <receiver android:name=".receiver.SendStatusReceiver"
390 android:exported="false">
391 <intent-filter>
392 <action android:name="com.android.messaging.receiver.SendStatusReceiver.MESSAGE_SENT" />
393 <data android:scheme="content" />
394 </intent-filter>
395 <intent-filter>
396 <action android:name="com.android.messaging.receiver.SendStatusReceiver.MESSAGE_DELIVERED" />
397 </intent-filter>
398 <intent-filter>
399 <action android:name="com.android.messaging.receiver.SendStatusReceiver.MMS_SENT" />
400 <data android:scheme="content" />
401 </intent-filter>
402 <intent-filter>
403 <action android:name="com.android.messaging.receiver.SendStatusReceiver.MMS_DOWNLOADED" />
404 <data android:scheme="content" />
405 </intent-filter>
406 </receiver>
407
408 <service android:name=".datamodel.NoConfirmationSmsSendService"
409 android:permission="android.permission.SEND_RESPOND_VIA_MESSAGE"
410 android:exported="true" >
411 <intent-filter>
412 <action android:name="android.intent.action.RESPOND_VIA_MESSAGE" />
413 <category android:name="android.intent.category.DEFAULT" />
414 <data android:scheme="sms" />
415 <data android:scheme="smsto" />
416 </intent-filter>
417 </service>
418
419 <activity android:name=".ui.ClassZeroActivity"
420 android:configChanges="orientation|screenSize|keyboardHidden"
421 android:screenOrientation="user"
422 android:label="@string/class_0_message_activity"
423 android:theme="@style/BugleTheme.DialogActivity"
424 android:launchMode="singleTask"
425 android:excludeFromRecents="true">
426 </activity>
427
428 <activity android:name=".ui.SmsStorageLowWarningActivity"
Taesu Lee2b7516e2015-11-16 14:14:46 +0900429 android:theme="@style/Translucent"
Mike Doddd3b009a2015-08-11 11:16:59 -0700430 android:configChanges="orientation|screenSize|keyboardHidden" />
431
432 <activity android:name=".ui.appsettings.ApnSettingsActivity"
433 android:configChanges="orientation|screenSize|keyboardHidden"
434 android:screenOrientation="user"
435 android:theme="@style/BugleTheme"
436 android:parentActivityName="com.android.messaging.ui.appsettings.SettingsActivity" />
437
438 <activity android:name=".ui.appsettings.ApnEditorActivity"
439 android:configChanges="orientation|screenSize|keyboardHidden"
440 android:screenOrientation="user"
441 android:theme="@style/BugleTheme"
442 android:parentActivityName="com.android.messaging.ui.appsettings.ApnSettingsActivity"/>
443
444 <receiver android:name=".receiver.StorageStatusReceiver">
445 <intent-filter>
446 <action android:name="android.intent.action.DEVICE_STORAGE_LOW" />
447 </intent-filter>
448 <intent-filter>
449 <action android:name="android.intent.action.DEVICE_STORAGE_OK" />
450 </intent-filter>
451 </receiver>
452
453 <receiver android:name=".receiver.BootAndPackageReplacedReceiver">
454 <intent-filter>
455 <action android:name="android.intent.action.BOOT_COMPLETED"/>
456 <action android:name="android.intent.action.MY_PACKAGE_REPLACED"/>
457 </intent-filter>
458 </receiver>
459
460 <!-- Broadcast receiver that will be notified to reset notifications -->
461 <receiver
462 android:name=".receiver.NotificationReceiver"
463 android:exported="false">
464 </receiver>
465
466 <!-- Broadcast receiver that will be notified for ActionService alarms. -->
467 <receiver
468 android:name=".datamodel.action.ActionServiceImpl$PendingActionReceiver"
469 android:exported="false">
470 <intent-filter>
471 <action android:name="com.android.messaging.datamodel.PENDING_ACTION" />
472 </intent-filter>
473 </receiver>
474
475 <receiver android:name=".receiver.DefaultSmsSubscriptionChangeReceiver">
476 <intent-filter>
Malcolm Chen5aa11872017-04-27 14:54:12 -0700477 <action android:name="android.telephony.action.DEFAULT_SMS_SUBSCRIPTION_CHANGED"/>
Mike Doddd3b009a2015-08-11 11:16:59 -0700478 </intent-filter>
479 </receiver>
480
481 <!-- Widget that displays the conversation list -->
482 <receiver android:name=".widget.BugleWidgetProvider"
483 android:label="@string/widget_conversation_name">
484 <intent-filter>
485 <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
486 </intent-filter>
487 <intent-filter>
488 <action android:name="com.android.Bugle.intent.action.ACTION_NOTIFY_CONVERSATIONS_CHANGED" />
489 </intent-filter>
490 <meta-data android:name="android.appwidget.provider"
491 android:resource="@xml/widget_conversation_list" />
492 </receiver>
493
494 <!-- Widget that displays the messages of a single conversation -->
495 <receiver android:name=".widget.WidgetConversationProvider"
496 android:label="@string/widget_conversation_name">
497 <intent-filter>
498 <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
499 </intent-filter>
500 <intent-filter>
501 <action android:name="com.android.Bugle.intent.action.ACTION_NOTIFY_MESSAGES_CHANGED" />
502 </intent-filter>
503 <meta-data android:name="android.appwidget.provider"
504 android:resource="@xml/widget_conversation" />
505 </receiver>
506
507 <service android:name=".widget.WidgetConversationListService"
508 android:permission="android.permission.BIND_REMOTEVIEWS"
509 android:exported="false" />
510
511 <service android:name=".widget.WidgetConversationService"
512 android:permission="android.permission.BIND_REMOTEVIEWS"
513 android:exported="false" />
514
515 <activity android:name=".ui.WidgetPickConversationActivity"
516 android:theme="@style/BugleTheme"
517 android:label="@string/app_name" >
518 <intent-filter>
519 <action android:name="android.appwidget.action.APPWIDGET_CONFIGURE" />
520 </intent-filter>
521 </activity>
522
Aurimas Liutikas1b693ea2018-04-09 17:17:41 -0700523 <service android:name="androidx.appcompat.mms.MmsService"/>
Mike Doddd3b009a2015-08-11 11:16:59 -0700524 </application>
525
526</manifest>