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:sharedUserId="android.uid.shared"> 20 21 <uses-sdk android:minSdkVersion="23" android:targetSdkVersion="23" /> 22 <original-package android:name="com.android.contacts" /> 23 24 <uses-permission android:name="android.permission.CALL_PHONE" /> 25 <uses-permission android:name="android.permission.READ_CONTACTS" /> 26 <uses-permission android:name="android.permission.WRITE_CONTACTS" /> 27 <uses-permission android:name="android.permission.MANAGE_ACCOUNTS" /> 28 <uses-permission android:name="android.permission.GET_ACCOUNTS" /> 29 <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 30 <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 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 49 <application 50 android:name="com.android.contacts.ContactsApplication" 51 android:label="@string/applicationLabel" 52 android:icon="@mipmap/ic_contacts_clr_48cv_44dp" 53 android:taskAffinity="android.task.contacts" 54 android:hardwareAccelerated="true" 55 android:supportsRtl="true" 56 android:usesCleartextTraffic="false" 57 > 58 59 <!-- The main Contacts activity with the contact list, favorites, and groups. --> 60 <activity android:name=".activities.PeopleActivity" 61 android:label="@string/launcherActivityLabel" 62 android:theme="@style/PeopleTheme" 63 android:clearTaskOnLaunch="true" 64 android:launchMode="singleTop" 65 > 66 <intent-filter> 67 <action android:name="android.intent.action.MAIN" /> 68 <category android:name="android.intent.category.DEFAULT" /> 69 <category android:name="android.intent.category.LAUNCHER" /> 70 <category android:name="android.intent.category.BROWSABLE" /> 71 <category android:name="android.intent.category.APP_CONTACTS" /> 72 </intent-filter> 73 <intent-filter> 74 <action android:name="com.android.contacts.action.LIST_DEFAULT" /> 75 <category android:name="android.intent.category.DEFAULT" /> 76 <category android:name="android.intent.category.TAB" /> 77 </intent-filter> 78 79 <intent-filter> 80 <action android:name="com.android.contacts.action.LIST_CONTACTS" /> 81 <category android:name="android.intent.category.DEFAULT" /> 82 <category android:name="android.intent.category.TAB" /> 83 </intent-filter> 84 85 <intent-filter> 86 <action android:name="com.android.contacts.action.LIST_ALL_CONTACTS" /> 87 <category android:name="android.intent.category.DEFAULT" /> 88 <category android:name="android.intent.category.TAB" /> 89 </intent-filter> 90 91 <intent-filter> 92 <action android:name="com.android.contacts.action.LIST_CONTACTS_WITH_PHONES" /> 93 <category android:name="android.intent.category.DEFAULT" /> 94 <category android:name="android.intent.category.TAB" /> 95 </intent-filter> 96 97 <intent-filter android:label="@string/starredList"> 98 <action android:name="com.android.contacts.action.LIST_STARRED" /> 99 <category android:name="android.intent.category.DEFAULT" /> 100 <category android:name="android.intent.category.TAB" /> 101 </intent-filter> 102 103 <intent-filter android:label="@string/frequentList"> 104 <action android:name="com.android.contacts.action.LIST_FREQUENT" /> 105 <category android:name="android.intent.category.DEFAULT" /> 106 <category android:name="android.intent.category.TAB" /> 107 </intent-filter> 108 109 <intent-filter android:label="@string/strequentList"> 110 <action android:name="com.android.contacts.action.LIST_STREQUENT" /> 111 <category android:name="android.intent.category.DEFAULT" /> 112 <category android:name="android.intent.category.TAB" /> 113 </intent-filter> 114 115 <intent-filter> 116 <action android:name="android.intent.action.SEARCH" /> 117 <category android:name="android.intent.category.DEFAULT" /> 118 <data android:mimeType="vnd.android.cursor.dir/contact" /> 119 </intent-filter> 120 121 <intent-filter> 122 <action android:name="android.intent.action.SEARCH" /> 123 <category android:name="android.intent.category.DEFAULT" /> 124 </intent-filter> 125 126 <intent-filter> 127 <action android:name="android.intent.action.VIEW" /> 128 <category android:name="android.intent.category.DEFAULT" /> 129 <data android:mimeType="vnd.android.cursor.dir/person" /> 130 <data android:mimeType="vnd.android.cursor.dir/contact" /> 131 </intent-filter> 132 133 <meta-data android:name="android.app.searchable" 134 android:resource="@xml/searchable" 135 /> 136 </activity> 137 138 <activity android:name=".activities.ContactSelectionActivity" 139 android:label="@string/launcherActivityLabel" 140 android:theme="@style/ContactPickerTheme" 141 android:launchMode="singleTop" 142 android:clearTaskOnLaunch="true" 143 android:uiOptions="splitActionBarWhenNarrow" 144 android:windowSoftInputMode="adjustResize"> 145 <intent-filter> 146 <action android:name="android.intent.action.INSERT_OR_EDIT" /> 147 <category android:name="android.intent.category.DEFAULT" /> 148 <data android:mimeType="vnd.android.cursor.item/person" /> 149 <data android:mimeType="vnd.android.cursor.item/contact" /> 150 <data android:mimeType="vnd.android.cursor.item/raw_contact" /> 151 </intent-filter> 152 153 <intent-filter> 154 <action android:name="android.intent.action.PICK" /> 155 <category android:name="android.intent.category.DEFAULT" /> 156 <data android:mimeType="vnd.android.cursor.dir/contact" /> 157 <data android:mimeType="vnd.android.cursor.dir/person" /> 158 <data android:mimeType="vnd.android.cursor.dir/phone_v2" /> 159 <data android:mimeType="vnd.android.cursor.dir/phone" /> 160 <data android:mimeType="vnd.android.cursor.dir/postal-address_v2" /> 161 <data android:mimeType="vnd.android.cursor.dir/postal-address" /> 162 <data android:mimeType="vnd.android.cursor.dir/email_v2" /> 163 </intent-filter> 164 165 <intent-filter> 166 <action android:name="android.intent.action.GET_CONTENT" /> 167 <category android:name="android.intent.category.DEFAULT" /> 168 <data android:mimeType="vnd.android.cursor.item/contact" /> 169 <data android:mimeType="vnd.android.cursor.item/person" /> 170 <data android:mimeType="vnd.android.cursor.item/phone_v2" /> 171 <data android:mimeType="vnd.android.cursor.item/phone" /> 172 <data android:mimeType="vnd.android.cursor.item/postal-address_v2" /> 173 <data android:mimeType="vnd.android.cursor.item/postal-address" /> 174 </intent-filter> 175 176 <intent-filter> 177 <action android:name="com.android.contacts.action.JOIN_CONTACT" /> 178 <category android:name="android.intent.category.DEFAULT" /> 179 </intent-filter> 180 </activity> 181 182 <!-- Backwards compatibility: somebody may have hard coded this activity name --> 183 <activity-alias android:name="ContactsListActivity" 184 android:targetActivity=".activities.PeopleActivity" 185 /> 186 187 <!-- Backwards compatibility: "Contacts" from Honeycomb --> 188 <activity-alias android:name=".activities.ContactsFrontDoor" 189 android:targetActivity=".activities.PeopleActivity" 190 android:exported="true" 191 /> 192 193 <!-- Backwards compatibility: "Contacts" from Gingerbread and earlier --> 194 <activity-alias android:name="DialtactsContactsEntryActivity" 195 android:targetActivity=".activities.PeopleActivity" 196 android:exported="true" 197 /> 198 199 <!-- Used to set options --> 200 <activity 201 android:name=".preference.ContactsPreferenceActivity" 202 android:label="@string/activity_title_settings" 203 android:theme="@style/ContactsPreferencesTheme" 204 android:exported="false"/> 205 206 <!-- Used to filter contacts list by account --> 207 <activity 208 android:name=".common.list.AccountFilterActivity" 209 android:label="@string/activity_title_contacts_filter" 210 android:theme="@style/ContactListFilterTheme" /> 211 212 <!-- Used to select display and sync groups --> 213 <activity 214 android:name=".common.list.CustomContactListFilterActivity" 215 android:label="@string/custom_list_filter" 216 android:theme="@style/ContactListFilterTheme" /> 217 218 <activity 219 android:name=".common.activity.RequestPermissionsActivity" 220 android:label="@string/launcherActivityLabel" 221 android:theme="@style/PeopleTheme" 222 android:exported="false"/> 223 224 <activity 225 android:name=".common.activity.RequestImportVCardPermissionsActivity" 226 android:label="@string/launcherActivityLabel" 227 android:theme="@style/PeopleTheme" 228 android:exported="false"/> 229 230 <activity 231 android:name=".activities.ShowOrCreateActivity" 232 android:label="@string/launcherActivityLabel" 233 android:theme="@android:style/Theme.Material.Light.Dialog.NoActionBar"> 234 235 <intent-filter> 236 <action android:name="com.android.contacts.action.SHOW_OR_CREATE_CONTACT" /> 237 <category android:name="android.intent.category.DEFAULT" /> 238 <data android:scheme="mailto" /> 239 <data android:scheme="tel" /> 240 </intent-filter> 241 </activity> 242 243 <!-- Views the details of a single group --> 244 <activity android:name=".activities.GroupDetailActivity" 245 android:label="" 246 android:theme="@style/DetailActivityTheme"/> 247 248 <!-- Create a new or edit an existing group --> 249 <activity 250 android:name=".activities.GroupEditorActivity" 251 android:theme="@style/EditorActivityTheme" 252 android:windowSoftInputMode="adjustResize" /> 253 254 <activity 255 android:name=".quickcontact.QuickContactActivity" 256 android:label="@string/launcherActivityLabel" 257 android:theme="@style/Theme.QuickContact" 258 android:launchMode="singleTop" 259 android:excludeFromRecents="true" 260 android:taskAffinity="" 261 android:windowSoftInputMode="stateUnchanged"> 262 263 <intent-filter> 264 <action android:name="com.android.contacts.action.QUICK_CONTACT" /> 265 <action android:name="android.provider.action.QUICK_CONTACT" /> 266 <category android:name="android.intent.category.DEFAULT" /> 267 <data android:mimeType="vnd.android.cursor.item/contact" /> 268 <data android:mimeType="vnd.android.cursor.item/person" /> 269 </intent-filter> 270 271 <intent-filter> 272 <action android:name="android.intent.action.VIEW" /> 273 <category android:name="android.intent.category.DEFAULT" /> 274 <data android:mimeType="vnd.android.cursor.item/person" /> 275 <data android:mimeType="vnd.android.cursor.item/contact" /> 276 <data android:mimeType="vnd.android.cursor.item/raw_contact" /> 277 </intent-filter> 278 </activity> 279 280 <receiver 281 android:name=".quickcontact.QuickContactBroadcastReceiver" 282 android:exported="false" /> 283 284 <activity-alias android:name="ContactShortcut" 285 android:targetActivity=".activities.ContactSelectionActivity" 286 android:label="@string/shortcutContact" 287 android:icon="@drawable/logo_quick_contacts_color_44in48dp"> 288 289 <intent-filter> 290 <action android:name="android.intent.action.CREATE_SHORTCUT" /> 291 <category android:name="android.intent.category.DEFAULT" /> 292 </intent-filter> 293 294 </activity-alias> 295 296 <activity-alias android:name="alias.DialShortcut" 297 android:targetActivity=".activities.ContactSelectionActivity" 298 android:label="@string/shortcutDialContact" 299 android:icon="@drawable/logo_quick_contacts_dialer_color_44in48dp" 300 android:enabled="@*android:bool/config_voice_capable"> 301 302 <intent-filter> 303 <action android:name="android.intent.action.CREATE_SHORTCUT" /> 304 <category android:name="android.intent.category.DEFAULT" /> 305 <category android:name="android.intent.category.CAR_MODE" /> 306 </intent-filter> 307 308 </activity-alias> 309 310 <activity-alias android:name="alias.MessageShortcut" 311 android:targetActivity=".activities.ContactSelectionActivity" 312 android:label="@string/shortcutMessageContact" 313 android:icon="@drawable/logo_quick_contacts_mail_color_44in48dp" 314 android:enabled="@*android:bool/config_voice_capable"> 315 316 <intent-filter> 317 <action android:name="android.intent.action.CREATE_SHORTCUT" /> 318 <category android:name="android.intent.category.DEFAULT" /> 319 </intent-filter> 320 321 </activity-alias> 322 323 <!-- Confirm that a single detail will be added to an existing contact --> 324 <activity 325 android:name=".activities.ConfirmAddDetailActivity" 326 android:label="@string/activity_title_confirm_add_detail" 327 android:theme="@style/ConfirmAddDetailDialogTheme" 328 android:windowSoftInputMode="adjustResize" 329 android:exported="false"/> 330 331 <!-- Accounts changed prompt that can appear when creating a new contact. --> 332 <activity 333 android:name=".activities.ContactEditorAccountsChangedActivity" 334 android:theme="@style/ContactEditorAccountsChangedActivityTheme" 335 android:windowSoftInputMode="adjustResize" 336 android:exported="false"/> 337 338 <!-- Edit or create a contact with only the most important fields displayed initially. --> 339 <activity 340 android:name=".activities.CompactContactEditorActivity" 341 android:label="@string/launcherActivityLabel" 342 android:theme="@style/EditorActivityTheme" 343 android:windowSoftInputMode="stateHidden|adjustResize"> 344 345 <intent-filter android:label="@string/editContactDescription"> 346 <action android:name="android.intent.action.EDIT" /> 347 <category android:name="android.intent.category.DEFAULT" /> 348 <data android:mimeType="vnd.android.cursor.item/person" /> 349 <data android:mimeType="vnd.android.cursor.item/contact" /> 350 <data android:mimeType="vnd.android.cursor.item/raw_contact" /> 351 </intent-filter> 352 <intent-filter android:label="@string/insertContactDescription"> 353 <action android:name="android.intent.action.INSERT" /> 354 <category android:name="android.intent.category.DEFAULT" /> 355 <data android:mimeType="vnd.android.cursor.dir/person" /> 356 <data android:mimeType="vnd.android.cursor.dir/contact" /> 357 <data android:mimeType="vnd.android.cursor.dir/raw_contact" /> 358 </intent-filter> 359 </activity> 360 361 <!-- Edit or create a contact with all fields displayed. --> 362 <activity 363 android:name=".activities.ContactEditorActivity" 364 android:label="@string/launcherActivityLabel" 365 android:theme="@style/EditorActivityTheme" 366 android:windowSoftInputMode="stateHidden|adjustResize" 367 android:exported="false"> 368 369 <intent-filter android:label="@string/editContactDescription"> 370 <action android:name="com.android.contacts.action.FULL_EDIT" /> 371 <category android:name="android.intent.category.DEFAULT" /> 372 <data android:mimeType="vnd.android.cursor.item/person" /> 373 <data android:mimeType="vnd.android.cursor.item/contact" /> 374 <data android:mimeType="vnd.android.cursor.item/raw_contact" /> 375 </intent-filter> 376 <intent-filter android:label="@string/insertContactDescription"> 377 <action android:name="com.android.contacts.action.FULL_INSERT" /> 378 <category android:name="android.intent.category.DEFAULT" /> 379 <data android:mimeType="vnd.android.cursor.dir/person" /> 380 <data android:mimeType="vnd.android.cursor.dir/contact" /> 381 <data android:mimeType="vnd.android.cursor.dir/raw_contact" /> 382 </intent-filter> 383 </activity> 384 385 <activity android:name=".common.test.FragmentTestActivity"> 386 <intent-filter> 387 <category android:name="android.intent.category.TEST" /> 388 </intent-filter> 389 </activity> 390 391 <!-- Stub service used to keep our process alive long enough for 392 background threads to finish their operations. --> 393 <service 394 android:name=".common.util.EmptyService" 395 android:exported="false" /> 396 397 <!-- Service to save a contact --> 398 <service 399 android:name=".ContactSaveService" 400 android:exported="false" /> 401 402 <!-- Attaches a photo to a contact. Started from external applications --> 403 <activity android:name=".activities.AttachPhotoActivity" 404 android:label="@string/attach_photo_dialog_title" 405 android:taskAffinity=""> 406 <intent-filter> 407 <action android:name="android.intent.action.ATTACH_DATA" /> 408 <data android:mimeType="image/*" /> 409 <category android:name="android.intent.category.DEFAULT" /> 410 </intent-filter> 411 </activity> 412 413 <!-- vCard related --> 414 <activity android:name=".common.vcard.ImportVCardActivity" 415 android:label="@string/launcherActivityLabel" 416 android:configChanges="orientation|screenSize|keyboardHidden" 417 android:theme="@style/BackgroundOnlyTheme"> 418 <intent-filter> 419 <action android:name="android.intent.action.VIEW" /> 420 <data android:mimeType="text/directory" /> 421 <data android:mimeType="text/vcard" /> 422 <data android:mimeType="text/x-vcard" /> 423 <category android:name="android.intent.category.DEFAULT" /> 424 </intent-filter> 425 </activity> 426 427 <activity android:name=".common.vcard.NfcImportVCardActivity" 428 android:label="@string/launcherActivityLabel" 429 android:configChanges="orientation|screenSize|keyboardHidden" 430 android:theme="@style/BackgroundOnlyTheme"> 431 <intent-filter> 432 <action android:name="android.nfc.action.NDEF_DISCOVERED" /> 433 <data android:mimeType="text/vcard" /> 434 <data android:mimeType="text/x-vcard" /> 435 <category android:name="android.intent.category.DEFAULT" /> 436 </intent-filter> 437 </activity> 438 439 <activity android:name=".common.vcard.CancelActivity" 440 android:label="@string/launcherActivityLabel" 441 android:theme="@style/BackgroundOnlyTheme" /> 442 443 <activity android:name=".common.vcard.SelectAccountActivity" 444 android:label="@string/launcherActivityLabel" 445 android:theme="@style/BackgroundOnlyTheme" /> 446 447 <activity android:name=".common.vcard.ExportVCardActivity" 448 android:label="@string/launcherActivityLabel" 449 android:theme="@style/BackgroundOnlyTheme" /> 450 451 <service 452 android:name=".common.vcard.VCardService" 453 android:exported="false" /> 454 <!-- end vCard related --> 455 456 <!-- Pinned header list demo --> 457 <activity android:name=".widget.PinnedHeaderListDemoActivity"> 458 <intent-filter> 459 <action android:name="android.intent.action.MAIN" /> 460 <category android:name="android.intent.category.DEFAULT" /> 461 </intent-filter> 462 </activity> 463 464 <!-- Intercept Dialer Intents for devices without a phone. 465 This activity should have the same intent filters as the DialtactsActivity, 466 so that its capturing the same events. Omit android.intent.category.LAUNCHER, because 467 we don't want this to show up in the Launcher. The priorities of the intent-filters 468 are set lower, so that the user does not see a disambig dialog --> 469 <activity 470 android:name="com.android.contacts.NonPhoneActivity" 471 android:theme="@style/NonPhoneActivityTheme" 472 android:label="@string/launcherActivityLabel" 473 > 474 <intent-filter android:priority="-1"> 475 <action android:name="android.intent.action.MAIN"/> 476 <category android:name="android.intent.category.DEFAULT"/> 477 <category android:name="android.intent.category.BROWSABLE"/> 478 </intent-filter> 479 <intent-filter android:priority="-1"> 480 <action android:name="android.intent.action.VIEW"/> 481 <category android:name="android.intent.category.DEFAULT"/> 482 <category android:name="android.intent.category.BROWSABLE"/> 483 <data android:scheme="tel"/> 484 </intent-filter> 485 <intent-filter android:priority="-1"> 486 <action android:name="android.intent.action.VIEW"/> 487 <category android:name="android.intent.category.DEFAULT"/> 488 <category android:name="android.intent.category.BROWSABLE"/> 489 <data android:mimeType="vnd.android.cursor.dir/calls"/> 490 </intent-filter> 491 </activity> 492 493 <!-- Service that is exclusively for the Phone application that sends out a view 494 notification. This service might be removed in future versions of the app. 495 496 This is called explicitly by the phone app via package name and class. 497 (PhoneUtils.sendViewNotificationAsync()). If this service moves, then phone 498 needs to be changed as well. 499 --> 500 <service android:name=".ViewNotificationService" 501 android:permission="android.permission.WRITE_CONTACTS" 502 android:exported="true"> 503 <intent-filter> 504 <action android:name="com.android.contacts.VIEW_NOTIFICATION"/> 505 <data android:mimeType="vnd.android.cursor.item/contact"/> 506 </intent-filter> 507 </service> 508 509 <!-- Broadcast receiver that passively listens to location updates --> 510 <receiver android:name="com.android.contacts.common.location.CountryDetector$LocationChangedReceiver"/> 511 512 <!-- IntentService to update the user's current country --> 513 <service android:name="com.android.contacts.common.location.UpdateCountryService" 514 android:exported="false"/> 515 516 <provider 517 android:name="android.support.v4.content.FileProvider" 518 android:authorities="com.android.contacts.files" 519 android:grantUriPermissions="true" 520 android:exported="false"> 521 <meta-data 522 android:name="android.support.FILE_PROVIDER_PATHS" 523 android:resource="@xml/file_paths" /> 524 </provider> 525 526 <meta-data android:name="android.nfc.disable_beam_default" android:value="true" /> 527 </application> 528 </manifest> 529