blob: c616c1e4515abdc0b850a50450468a511eca2816 [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"
225 android:exported="false" />
226
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
354 <activity
355 android:name=".activities.ContactEditorSpringBoardActivity"
356 android:noHistory="true"
357 android:theme="@style/TransparentThemeAppCompat">
358
359 <intent-filter>
360 <action android:name="android.intent.action.EDIT" />
361 <category android:name="android.intent.category.DEFAULT" />
362 <data android:mimeType="vnd.android.cursor.item/person" />
363 <data android:mimeType="vnd.android.cursor.item/contact" />
364 <data android:mimeType="vnd.android.cursor.item/raw_contact" />
365 </intent-filter>
366 </activity>
367
368 <activity android:name=".common.test.FragmentTestActivity">
369 <intent-filter>
370 <category android:name="android.intent.category.TEST" />
371 </intent-filter>
372 </activity>
373
374 <!-- Stub service used to keep our process alive long enough for
375 background threads to finish their operations. -->
376 <service
377 android:name=".common.util.EmptyService"
378 android:exported="false" />
379
380 <!-- Service to save a contact -->
381 <service
382 android:name=".ContactSaveService"
383 android:exported="false" />
384
385 <!-- Attaches a photo to a contact. Started from external applications -->
386 <activity android:name=".activities.AttachPhotoActivity"
387 android:label="@string/attach_photo_dialog_title"
388 android:taskAffinity="">
389 <intent-filter>
390 <action android:name="android.intent.action.ATTACH_DATA" />
391 <data android:mimeType="image/*" />
392 <category android:name="android.intent.category.DEFAULT" />
393 </intent-filter>
394 </activity>
395
396 <!-- vCard related -->
397 <activity android:name=".common.vcard.ImportVCardActivity"
398 android:configChanges="orientation|screenSize|keyboardHidden"
399 android:theme="@style/BackgroundOnlyTheme">
400 <intent-filter>
401 <action android:name="android.intent.action.VIEW" />
402 <data android:mimeType="text/directory" />
403 <data android:mimeType="text/vcard" />
404 <data android:mimeType="text/x-vcard" />
405 <category android:name="android.intent.category.DEFAULT" />
406 </intent-filter>
407 </activity>
408
409 <activity android:name=".common.vcard.NfcImportVCardActivity"
410 android:configChanges="orientation|screenSize|keyboardHidden"
411 android:theme="@style/BackgroundOnlyTheme">
412 <intent-filter>
413 <action android:name="android.nfc.action.NDEF_DISCOVERED" />
414 <data android:mimeType="text/vcard" />
415 <data android:mimeType="text/x-vcard" />
416 <category android:name="android.intent.category.DEFAULT" />
417 </intent-filter>
418 </activity>
419
420 <activity android:name=".common.vcard.CancelActivity"
421 android:theme="@style/BackgroundOnlyTheme" />
422
423 <activity android:name=".common.vcard.SelectAccountActivity"
424 android:theme="@style/BackgroundOnlyTheme" />
425
426 <activity android:name=".common.vcard.ExportVCardActivity"
427 android:theme="@style/BackgroundOnlyTheme" />
428
429 <activity android:name=".common.vcard.ShareVCardActivity"
430 android:theme="@style/BackgroundOnlyTheme" />
431
432 <service
433 android:name=".common.vcard.VCardService"
434 android:exported="false" />
435 <!-- end vCard related -->
436
437 <!-- Intercept Dialer Intents for devices without a phone.
438 This activity should have the same intent filters as the DialtactsActivity,
439 so that its capturing the same events. Omit android.intent.category.LAUNCHER, because
440 we don't want this to show up in the Launcher. The priorities of the intent-filters
441 are set lower, so that the user does not see a disambig dialog -->
442 <activity
443 android:name="com.android.contacts.NonPhoneActivity"
444 android:theme="@style/NonPhoneActivityTheme">
445 <intent-filter android:priority="-1">
446 <action android:name="android.intent.action.MAIN"/>
447 <category android:name="android.intent.category.DEFAULT"/>
448 <category android:name="android.intent.category.BROWSABLE"/>
449 </intent-filter>
450 <intent-filter android:priority="-1">
451 <action android:name="android.intent.action.VIEW"/>
452 <category android:name="android.intent.category.DEFAULT"/>
453 <category android:name="android.intent.category.BROWSABLE"/>
454 <data android:scheme="tel"/>
455 </intent-filter>
456 <intent-filter android:priority="-1">
457 <action android:name="android.intent.action.VIEW"/>
458 <category android:name="android.intent.category.DEFAULT"/>
459 <category android:name="android.intent.category.BROWSABLE"/>
460 <data android:mimeType="vnd.android.cursor.dir/calls"/>
461 </intent-filter>
462 </activity>
463
464 <activity android:name="com.android.contacts.common.dialog.CallSubjectDialog"
465 android:theme="@style/Theme.CallSubjectDialogTheme"
466 android:windowSoftInputMode="stateVisible|adjustResize">
467 <intent-filter>
468 <action android:name="android.intent.action.VIEW"/>
469 </intent-filter>
470 </activity>
471
472 <!-- Service that is exclusively for the Phone application that sends out a view
473 notification. This service might be removed in future versions of the app.
474
475 This is called explicitly by the phone app via package name and class.
476 (PhoneUtils.sendViewNotificationAsync()). If this service moves, then phone
477 needs to be changed as well.
478 -->
479 <service android:name=".ViewNotificationService"
480 android:permission="android.permission.WRITE_CONTACTS"
481 android:exported="true">
482 <intent-filter>
483 <action android:name="com.android.contacts.VIEW_NOTIFICATION"/>
484 <data android:mimeType="vnd.android.cursor.item/contact"/>
485 </intent-filter>
486 </service>
487
488 <!-- Service used to run JobScheduler jobs -->
489 <service android:name="com.android.contacts.ContactsJobService"
490 android:permission="android.permission.BIND_JOB_SERVICE" />
491
492 <provider
493 android:name="android.support.v4.content.FileProvider"
494 android:authorities="@string/contacts_file_provider_authority"
495 android:grantUriPermissions="true"
496 android:exported="false">
497 <meta-data
498 android:name="android.support.FILE_PROVIDER_PATHS"
499 android:resource="@xml/file_paths" />
500 </provider>
501
502 <meta-data android:name="android.nfc.disable_beam_default" android:value="true" />
503
504 </application>
505</manifest>