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