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