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_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