blob: a41bedd5e1c439520a7913de603b928d8c8c478e [file] [log] [blame]
Arthur Wang04b84e42016-10-07 16:38:52 -07001<?xml version="1.0" encoding="utf-8"?>
2<!-- Copyright (C) 2016 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<manifest xmlns:android="http://schemas.android.com/apk/res/android"
18 package="com.android.contacts">
19
20 <original-package android:name="com.android.contacts" />
21
22 <!-- Contacts permission listed first because order determines
23 order that permissions are requested with some OEMs -->
24 <uses-permission android:name="android.permission.READ_CONTACTS" />
25 <uses-permission android:name="android.permission.WRITE_CONTACTS" />
26 <uses-permission android:name="android.permission.GET_ACCOUNTS" />
27 <uses-permission android:name="android.permission.GET_ACCOUNTS_PRIVILEGED" />
28 <uses-permission android:name="android.permission.MANAGE_ACCOUNTS" />
29 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
30 <uses-permission android:name="android.permission.CALL_PHONE" />
31 <uses-permission android:name="android.permission.READ_PROFILE" />
32 <uses-permission android:name="android.permission.WRITE_PROFILE" />
33 <uses-permission android:name="android.permission.INTERNET" />
34 <uses-permission android:name="android.permission.NFC" />
35 <uses-permission android:name="android.permission.READ_PHONE_STATE" />
36 <uses-permission android:name="android.permission.WAKE_LOCK" />
37 <uses-permission android:name="android.permission.WRITE_SETTINGS" />
38 <uses-permission android:name="android.permission.USE_CREDENTIALS" />
39 <uses-permission android:name="android.permission.VIBRATE" />
40 <uses-permission android:name="android.permission.READ_SYNC_SETTINGS" />
41 <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
42 <uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT"/>
43 <!-- Following used for QuickContacts -->
44 <uses-permission android:name="android.permission.READ_CALL_LOG" />
45 <uses-permission android:name="android.permission.READ_SMS" />
46 <uses-permission android:name="android.permission.READ_CALENDAR" />
47 <uses-permission android:name="com.android.voicemail.permission.READ_VOICEMAIL" />
48 <!-- Following used for Contact metadata syncing -->
49 <uses-permission android:name="android.permission.WRITE_SYNC_SETTINGS" />
50 <!-- Following used for getting the status of the contacts sync adapter -->
51 <uses-permission android:name="android.permission.READ_SYNC_STATS" />
52
53 <uses-feature android:name="android.hardware.telephony" android:required="false"/>
54
55 <application>
56 <!-- The main Contacts activity with the contact list, favorites, and groups. -->
57 <activity android:name=".activities.PeopleActivity"
58 android:theme="@style/PeopleActivityTheme"
59 android:alwaysRetainTaskState="true"
60 android:launchMode="singleTop"
61 android:resizeableActivity="true"
62 >
63 <intent-filter>
64 <action android:name="android.intent.action.MAIN" />
65 <category android:name="android.intent.category.DEFAULT" />
66 <category android:name="android.intent.category.LAUNCHER" />
67 <category android:name="android.intent.category.BROWSABLE" />
68 <category android:name="android.intent.category.APP_CONTACTS" />
69 </intent-filter>
70 <intent-filter>
71 <action android:name="com.android.contacts.action.LIST_DEFAULT" />
72 <category android:name="android.intent.category.DEFAULT" />
73 <category android:name="android.intent.category.TAB" />
74 </intent-filter>
75
76 <intent-filter>
77 <action android:name="com.android.contacts.action.LIST_CONTACTS" />
78 <category android:name="android.intent.category.DEFAULT" />
79 <category android:name="android.intent.category.TAB" />
80 </intent-filter>
81
82 <intent-filter>
83 <action android:name="com.android.contacts.action.LIST_ALL_CONTACTS" />
84 <category android:name="android.intent.category.DEFAULT" />
85 <category android:name="android.intent.category.TAB" />
86 </intent-filter>
87
88 <intent-filter>
89 <action android:name="com.android.contacts.action.LIST_CONTACTS_WITH_PHONES" />
90 <category android:name="android.intent.category.DEFAULT" />
91 <category android:name="android.intent.category.TAB" />
92 </intent-filter>
93
94 <intent-filter>
95 <action android:name="com.android.contacts.action.LIST_STARRED" />
96 <category android:name="android.intent.category.DEFAULT" />
97 <category android:name="android.intent.category.TAB" />
98 </intent-filter>
99
100 <intent-filter>
101 <action android:name="com.android.contacts.action.LIST_FREQUENT" />
102 <category android:name="android.intent.category.DEFAULT" />
103 <category android:name="android.intent.category.TAB" />
104 </intent-filter>
105
106 <intent-filter>
107 <action android:name="com.android.contacts.action.LIST_STREQUENT" />
108 <category android:name="android.intent.category.DEFAULT" />
109 <category android:name="android.intent.category.TAB" />
110 </intent-filter>
111
112 <intent-filter>
113 <action android:name="android.intent.action.SEARCH" />
114 <category android:name="android.intent.category.DEFAULT" />
115 <data android:mimeType="vnd.android.cursor.dir/contact" />
116 </intent-filter>
117
118 <intent-filter>
119 <action android:name="android.intent.action.SEARCH" />
120 <category android:name="android.intent.category.DEFAULT" />
121 </intent-filter>
122
123 <intent-filter>
124 <action android:name="android.intent.action.VIEW" />
125 <category android:name="android.intent.category.DEFAULT" />
126 <data android:mimeType="vnd.android.cursor.dir/person" />
127 <data android:mimeType="vnd.android.cursor.dir/contact" />
128 <data android:mimeType="vnd.android.cursor.item/group" />
129 </intent-filter>
130
131 <intent-filter>
132 <action android:name="android.intent.action.EDIT" />
133 <category android:name="android.intent.category.DEFAULT" />
134 <data android:mimeType="vnd.android.cursor.item/group" />
135 </intent-filter>
136
137 <intent-filter>
138 <action android:name="android.intent.action.INSERT" />
139 <category android:name="android.intent.category.DEFAULT" />
140 <data android:mimeType="vnd.android.cursor.dir/group" />
141 </intent-filter>
142
143 <meta-data android:name="android.app.searchable"
144 android:resource="@xml/searchable"
145 />
146
147 <meta-data android:name="android.app.shortcuts"
148 android:resource="@xml/shortcuts"
149 />
150
151 </activity>
152
153 <activity android:name=".activities.ContactSelectionActivity"
154 android:theme="@style/ContactPickerTheme"
155 android:launchMode="singleTop"
156 android:clearTaskOnLaunch="true"
157 android:uiOptions="splitActionBarWhenNarrow"
158 android:windowSoftInputMode="adjustResize">
159 <intent-filter>
160 <action android:name="android.intent.action.INSERT_OR_EDIT" />
161 <category android:name="android.intent.category.DEFAULT" />
162 <data android:mimeType="vnd.android.cursor.item/person" />
163 <data android:mimeType="vnd.android.cursor.item/contact" />
164 <data android:mimeType="vnd.android.cursor.item/raw_contact" />
165 </intent-filter>
166
167 <intent-filter>
168 <action android:name="android.intent.action.PICK" />
169 <category android:name="android.intent.category.DEFAULT" />
170 <data android:mimeType="vnd.android.cursor.dir/contact" />
171 <data android:mimeType="vnd.android.cursor.dir/person" />
172 <data android:mimeType="vnd.android.cursor.dir/phone_v2" />
173 <data android:mimeType="vnd.android.cursor.dir/phone" />
174 <data android:mimeType="vnd.android.cursor.dir/postal-address_v2" />
175 <data android:mimeType="vnd.android.cursor.dir/postal-address" />
176 <data android:mimeType="vnd.android.cursor.dir/email_v2" />
177 <data android:mimeType="vnd.android.cursor.dir/group"/>
178 </intent-filter>
179
180 <intent-filter>
181 <action android:name="android.intent.action.GET_CONTENT" />
182 <category android:name="android.intent.category.DEFAULT" />
183 <data android:mimeType="vnd.android.cursor.item/contact" />
184 <data android:mimeType="vnd.android.cursor.item/person" />
185 <data android:mimeType="vnd.android.cursor.item/phone_v2" />
186 <data android:mimeType="vnd.android.cursor.item/phone" />
187 <data android:mimeType="vnd.android.cursor.item/postal-address_v2" />
188 <data android:mimeType="vnd.android.cursor.item/postal-address" />
189 </intent-filter>
190
191 <intent-filter>
192 <action android:name="com.android.contacts.action.JOIN_CONTACT" />
193 <category android:name="android.intent.category.DEFAULT" />
194 </intent-filter>
195 </activity>
196
197 <!-- Backwards compatibility: somebody may have hard coded this activity name -->
198 <activity-alias android:name="ContactsListActivity"
199 android:targetActivity=".activities.PeopleActivity"
200 />
201
202 <!-- Backwards compatibility: "Contacts" from Honeycomb -->
203 <activity-alias android:name=".activities.ContactsFrontDoor"
204 android:targetActivity=".activities.PeopleActivity"
205 android:exported="true"
206 />
207
208 <!-- Backwards compatibility: "Contacts" from Gingerbread and earlier -->
209 <activity-alias android:name="DialtactsContactsEntryActivity"
210 android:targetActivity=".activities.PeopleActivity"
211 android:exported="true"
212 />
213
214 <!-- Used to set options -->
215 <activity
216 android:name=".common.preference.ContactsPreferenceActivity"
217 android:label="@string/activity_title_settings"
218 android:theme="@style/ContactsPreferencesTheme"
219 android:launchMode="singleTop"
220 android:exported="false"/>
221
222 <activity android:name=".common.activity.LicenseActivity"
223 android:label="@string/activity_title_licenses"
224 android:theme="@style/ContactsPreferencesTheme"
James Laskeyff9a19d2016-11-15 13:36:34 -0800225 android:exported="true" />
Arthur Wang04b84e42016-10-07 16:38:52 -0700226
227 <!-- Used to filter contacts list by account -->
228 <activity
229 android:name=".common.list.AccountFilterActivity"
230 android:label="@string/activity_title_contacts_filter"
231 android:theme="@style/ContactListFilterTheme" />
232
233 <!-- Used to select display and sync groups -->
234 <activity
235 android:name=".common.list.CustomContactListFilterActivity"
236 android:label="@string/custom_list_filter"
237 android:theme="@style/ContactListFilterTheme" />
238
239 <activity
240 android:name=".common.activity.RequestPermissionsActivity"
241 android:theme="@style/PeopleTheme"
242 android:exported="false"/>
243
244 <activity
245 android:name=".common.activity.RequestDesiredPermissionsActivity"
246 android:theme="@style/PeopleTheme"
247 android:exported="false"/>
248
249 <activity
250 android:name=".common.activity.RequestImportVCardPermissionsActivity"
251 android:theme="@style/PeopleTheme"
252 android:exported="false"/>
253
254 <activity
255 android:name=".activities.ShowOrCreateActivity"
256 android:theme="@android:style/Theme.Material.Light.Dialog.NoActionBar">
257
258 <intent-filter>
259 <action android:name="com.android.contacts.action.SHOW_OR_CREATE_CONTACT" />
260 <category android:name="android.intent.category.DEFAULT" />
261 <data android:scheme="mailto" />
262 <data android:scheme="tel" />
263 </intent-filter>
264 </activity>
265
266 <activity
267 android:name=".quickcontact.QuickContactActivity"
268 android:theme="@style/Theme.QuickContact"
269 android:launchMode="singleTop"
270 android:excludeFromRecents="true"
271 android:taskAffinity=""
272 android:windowSoftInputMode="stateUnchanged">
273
274 <intent-filter>
275 <action android:name="com.android.contacts.action.QUICK_CONTACT" />
276 <action android:name="android.provider.action.QUICK_CONTACT" />
277 <category android:name="android.intent.category.DEFAULT" />
278 <data android:mimeType="vnd.android.cursor.item/contact" />
279 <data android:mimeType="vnd.android.cursor.item/person" />
280 </intent-filter>
281
282 <intent-filter>
283 <action android:name="android.intent.action.VIEW" />
284 <category android:name="android.intent.category.DEFAULT" />
285 <data android:mimeType="vnd.android.cursor.item/person" />
286 <data android:mimeType="vnd.android.cursor.item/contact" />
287 <data android:mimeType="vnd.android.cursor.item/raw_contact" />
288 </intent-filter>
289 </activity>
290
291 <receiver
292 android:name=".quickcontact.QuickContactBroadcastReceiver"
293 android:exported="false" />
294
295 <activity-alias android:name="ContactShortcut"
296 android:targetActivity=".activities.ContactSelectionActivity"
297 android:label="@string/shortcutContact"
298 android:icon="@drawable/logo_quick_contacts_color_44in48dp">
299
300 <intent-filter>
301 <action android:name="android.intent.action.CREATE_SHORTCUT" />
302 <category android:name="android.intent.category.DEFAULT" />
303 </intent-filter>
304
305 </activity-alias>
306
307 <activity-alias android:name="alias.DialShortcut"
308 android:targetActivity=".activities.ContactSelectionActivity"
309 android:label="@string/shortcutDialContact"
310 android:icon="@drawable/logo_quick_contacts_dialer_color_44in48dp">
311
312 <intent-filter>
313 <action android:name="android.intent.action.CREATE_SHORTCUT" />
314 <category android:name="android.intent.category.DEFAULT" />
315 <category android:name="android.intent.category.CAR_MODE" />
316 </intent-filter>
317
318 </activity-alias>
319
320 <activity-alias android:name="alias.MessageShortcut"
321 android:targetActivity=".activities.ContactSelectionActivity"
322 android:label="@string/shortcutMessageContact"
323 android:icon="@drawable/logo_quick_contacts_mail_color_44in48dp">
324
325 <intent-filter>
326 <action android:name="android.intent.action.CREATE_SHORTCUT" />
327 <category android:name="android.intent.category.DEFAULT" />
328 </intent-filter>
329
330 </activity-alias>
331
332 <!-- Accounts changed prompt that can appear when creating a new contact. -->
333 <activity
334 android:name=".activities.ContactEditorAccountsChangedActivity"
335 android:theme="@style/ContactEditorAccountsChangedActivityTheme"
336 android:windowSoftInputMode="adjustResize"
337 android:exported="false"/>
338
339 <!-- Edit or create a contact with only the most important fields displayed initially. -->
340 <activity
341 android:name=".activities.ContactEditorActivity"
342 android:theme="@style/EditorActivityTheme"
343 android:windowSoftInputMode="stateHidden|adjustResize">
344
345 <intent-filter>
346 <action android:name="android.intent.action.INSERT" />
347 <category android:name="android.intent.category.DEFAULT" />
348 <data android:mimeType="vnd.android.cursor.dir/person" />
349 <data android:mimeType="vnd.android.cursor.dir/contact" />
350 <data android:mimeType="vnd.android.cursor.dir/raw_contact" />
351 </intent-filter>
352 </activity>
353
Gary Mai56572fa2016-11-10 16:45:41 -0800354 <!-- Keep support for apps that expect the Compact editor -->
355 <activity-alias android:name="com.android.contacts.activities.CompactContactEditorActivity"
356 android:exported="true"
357 android:targetActivity=".activities.ContactEditorActivity">
Gary Maiea1957e2016-11-14 10:41:45 -0800358 <intent-filter android:priority="-1">
Gary Mai56572fa2016-11-10 16:45:41 -0800359 <action android:name="android.intent.action.INSERT" />
360 <category android:name="android.intent.category.DEFAULT" />
361 <data android:mimeType="vnd.android.cursor.dir/person" />
362 <data android:mimeType="vnd.android.cursor.dir/contact" />
363 <data android:mimeType="vnd.android.cursor.dir/raw_contact" />
364 </intent-filter>
365 </activity-alias>
366
367 <activity
Arthur Wang04b84e42016-10-07 16:38:52 -0700368 android:name=".activities.ContactEditorSpringBoardActivity"
Arthur Wang04b84e42016-10-07 16:38:52 -0700369 android:theme="@style/TransparentThemeAppCompat">
370
371 <intent-filter>
372 <action android:name="android.intent.action.EDIT" />
373 <category android:name="android.intent.category.DEFAULT" />
374 <data android:mimeType="vnd.android.cursor.item/person" />
375 <data android:mimeType="vnd.android.cursor.item/contact" />
376 <data android:mimeType="vnd.android.cursor.item/raw_contact" />
377 </intent-filter>
378 </activity>
379
380 <activity android:name=".common.test.FragmentTestActivity">
381 <intent-filter>
382 <category android:name="android.intent.category.TEST" />
383 </intent-filter>
384 </activity>
385
386 <!-- Stub service used to keep our process alive long enough for
387 background threads to finish their operations. -->
388 <service
389 android:name=".common.util.EmptyService"
390 android:exported="false" />
391
392 <!-- Service to save a contact -->
393 <service
394 android:name=".ContactSaveService"
395 android:exported="false" />
396
397 <!-- Attaches a photo to a contact. Started from external applications -->
398 <activity android:name=".activities.AttachPhotoActivity"
399 android:label="@string/attach_photo_dialog_title"
400 android:taskAffinity="">
401 <intent-filter>
402 <action android:name="android.intent.action.ATTACH_DATA" />
403 <data android:mimeType="image/*" />
404 <category android:name="android.intent.category.DEFAULT" />
405 </intent-filter>
406 </activity>
407
408 <!-- vCard related -->
409 <activity android:name=".common.vcard.ImportVCardActivity"
410 android:configChanges="orientation|screenSize|keyboardHidden"
411 android:theme="@style/BackgroundOnlyTheme">
412 <intent-filter>
413 <action android:name="android.intent.action.VIEW" />
414 <data android:mimeType="text/directory" />
415 <data android:mimeType="text/vcard" />
416 <data android:mimeType="text/x-vcard" />
417 <category android:name="android.intent.category.DEFAULT" />
418 </intent-filter>
419 </activity>
420
421 <activity android:name=".common.vcard.NfcImportVCardActivity"
422 android:configChanges="orientation|screenSize|keyboardHidden"
423 android:theme="@style/BackgroundOnlyTheme">
424 <intent-filter>
425 <action android:name="android.nfc.action.NDEF_DISCOVERED" />
426 <data android:mimeType="text/vcard" />
427 <data android:mimeType="text/x-vcard" />
428 <category android:name="android.intent.category.DEFAULT" />
429 </intent-filter>
430 </activity>
431
432 <activity android:name=".common.vcard.CancelActivity"
433 android:theme="@style/BackgroundOnlyTheme" />
434
435 <activity android:name=".common.vcard.SelectAccountActivity"
436 android:theme="@style/BackgroundOnlyTheme" />
437
438 <activity android:name=".common.vcard.ExportVCardActivity"
439 android:theme="@style/BackgroundOnlyTheme" />
440
441 <activity android:name=".common.vcard.ShareVCardActivity"
442 android:theme="@style/BackgroundOnlyTheme" />
443
444 <service
445 android:name=".common.vcard.VCardService"
446 android:exported="false" />
447 <!-- end vCard related -->
448
449 <!-- Intercept Dialer Intents for devices without a phone.
450 This activity should have the same intent filters as the DialtactsActivity,
451 so that its capturing the same events. Omit android.intent.category.LAUNCHER, because
452 we don't want this to show up in the Launcher. The priorities of the intent-filters
453 are set lower, so that the user does not see a disambig dialog -->
454 <activity
455 android:name="com.android.contacts.NonPhoneActivity"
456 android:theme="@style/NonPhoneActivityTheme">
457 <intent-filter android:priority="-1">
458 <action android:name="android.intent.action.MAIN"/>
459 <category android:name="android.intent.category.DEFAULT"/>
460 <category android:name="android.intent.category.BROWSABLE"/>
461 </intent-filter>
462 <intent-filter android:priority="-1">
463 <action android:name="android.intent.action.VIEW"/>
464 <category android:name="android.intent.category.DEFAULT"/>
465 <category android:name="android.intent.category.BROWSABLE"/>
466 <data android:scheme="tel"/>
467 </intent-filter>
468 <intent-filter android:priority="-1">
469 <action android:name="android.intent.action.VIEW"/>
470 <category android:name="android.intent.category.DEFAULT"/>
471 <category android:name="android.intent.category.BROWSABLE"/>
472 <data android:mimeType="vnd.android.cursor.dir/calls"/>
473 </intent-filter>
474 </activity>
475
476 <activity android:name="com.android.contacts.common.dialog.CallSubjectDialog"
477 android:theme="@style/Theme.CallSubjectDialogTheme"
478 android:windowSoftInputMode="stateVisible|adjustResize">
479 <intent-filter>
480 <action android:name="android.intent.action.VIEW"/>
481 </intent-filter>
482 </activity>
483
484 <!-- Service that is exclusively for the Phone application that sends out a view
485 notification. This service might be removed in future versions of the app.
486
487 This is called explicitly by the phone app via package name and class.
488 (PhoneUtils.sendViewNotificationAsync()). If this service moves, then phone
489 needs to be changed as well.
490 -->
491 <service android:name=".ViewNotificationService"
492 android:permission="android.permission.WRITE_CONTACTS"
493 android:exported="true">
494 <intent-filter>
495 <action android:name="com.android.contacts.VIEW_NOTIFICATION"/>
496 <data android:mimeType="vnd.android.cursor.item/contact"/>
497 </intent-filter>
498 </service>
499
500 <!-- Service used to run JobScheduler jobs -->
501 <service android:name="com.android.contacts.ContactsJobService"
502 android:permission="android.permission.BIND_JOB_SERVICE" />
503
504 <provider
505 android:name="android.support.v4.content.FileProvider"
506 android:authorities="@string/contacts_file_provider_authority"
507 android:grantUriPermissions="true"
508 android:exported="false">
509 <meta-data
510 android:name="android.support.FILE_PROVIDER_PATHS"
511 android:resource="@xml/file_paths" />
512 </provider>
513
514 <meta-data android:name="android.nfc.disable_beam_default" android:value="true" />
515
516 </application>
517</manifest>