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