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