Home | History | Annotate | Download | only in Contacts
      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