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