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