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 
     22     <original-package android:name="com.android.contacts" />
     23 
     24     <uses-permission android:name="android.permission.CALL_PRIVILEGED" />
     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.INTERNET" />
     28     <uses-permission android:name="android.permission.READ_PHONE_STATE" />
     29     <uses-permission android:name="android.permission.MODIFY_PHONE_STATE" />
     30     <uses-permission android:name="com.google.android.googleapps.permission.GOOGLE_AUTH.mail" />
     31     <uses-permission android:name="android.permission.WAKE_LOCK" />
     32     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
     33     <uses-permission android:name="android.permission.WRITE_SETTINGS" />
     34     <uses-permission android:name="android.permission.USE_CREDENTIALS" />
     35     <uses-permission android:name="android.permission.VIBRATE" />
     36 
     37     <application
     38         android:label="@string/contactsList"
     39         android:icon="@drawable/ic_launcher_contacts"
     40         android:process="android.process.acore"
     41         android:taskAffinity="android.task.contacts"
     42     >
     43 
     44         <!-- A virtual 12 key dialer -->
     45         <activity android:name="TwelveKeyDialer"
     46             android:launchMode="singleTop"
     47         >
     48             <intent-filter>
     49                 <action android:name="com.android.phone.action.TOUCH_DIALER" />
     50                 <category android:name="android.intent.category.DEFAULT" />
     51                 <category android:name="android.intent.category.TAB" />
     52             </intent-filter>
     53         </activity>
     54 
     55         <!-- A list of recent calls -->
     56         <activity android:name="RecentCallsListActivity"
     57             android:label="@string/recentCallsIconLabel"
     58         >
     59             <intent-filter>
     60                 <action android:name="com.android.phone.action.RECENT_CALLS" />
     61                 <category android:name="android.intent.category.DEFAULT" />
     62                 <category android:name="android.intent.category.TAB" />
     63             </intent-filter>
     64         </activity>
     65 
     66         <!-- Tab container for all tabs -->
     67         <activity android:name="DialtactsActivity"
     68             android:label="@string/launcherDialer"
     69             android:theme="@style/DialtactsTheme"
     70             android:launchMode="singleTask"
     71             android:clearTaskOnLaunch="true"
     72             android:icon="@drawable/ic_launcher_phone"
     73             android:screenOrientation="nosensor"
     74         >
     75             <intent-filter>
     76                 <action android:name="android.intent.action.DIAL" />
     77                 <category android:name="android.intent.category.DEFAULT" />
     78                 <category android:name="android.intent.category.BROWSABLE" />
     79                 <data android:mimeType="vnd.android.cursor.item/phone" />
     80                 <data android:mimeType="vnd.android.cursor.item/person" />
     81             </intent-filter>
     82             <intent-filter>
     83                 <action android:name="android.intent.action.DIAL" />
     84                 <category android:name="android.intent.category.DEFAULT" />
     85                 <category android:name="android.intent.category.BROWSABLE" />
     86                 <data android:scheme="voicemail" />
     87             </intent-filter>
     88             <intent-filter>
     89                 <action android:name="android.intent.action.DIAL" />
     90                 <category android:name="android.intent.category.DEFAULT" />
     91             </intent-filter>
     92             <intent-filter>
     93                 <action android:name="android.intent.action.MAIN" />
     94                 <category android:name="android.intent.category.DEFAULT" />
     95                 <category android:name="android.intent.category.LAUNCHER" />
     96                 <category android:name="android.intent.category.BROWSABLE" />
     97             </intent-filter>
     98             <intent-filter>
     99                 <action android:name="android.intent.action.VIEW" />
    100                 <action android:name="android.intent.action.DIAL" />
    101                 <category android:name="android.intent.category.DEFAULT" />
    102                 <category android:name="android.intent.category.BROWSABLE" />
    103                 <data android:scheme="tel" />
    104             </intent-filter>
    105             <intent-filter>
    106                 <action android:name="android.intent.action.VIEW" />
    107                 <category android:name="android.intent.category.DEFAULT" />
    108                 <category android:name="android.intent.category.BROWSABLE" />
    109                 <data android:mimeType="vnd.android.cursor.dir/calls" />
    110             </intent-filter>
    111             <intent-filter>
    112                 <action android:name="android.intent.action.CALL_BUTTON" />
    113                 <category android:name="android.intent.category.DEFAULT" />
    114                 <category android:name="android.intent.category.BROWSABLE" />
    115             </intent-filter>
    116         </activity>
    117 
    118         <!-- Tab container for all tabs -->
    119         <activity-alias android:name="DialtactsContactsEntryActivity"
    120             android:targetActivity="DialtactsActivity"
    121             android:label="@string/contactsList"
    122             android:icon="@drawable/ic_launcher_contacts"
    123         >
    124             <intent-filter>
    125                 <action android:name="android.intent.action.MAIN" />
    126                 <category android:name="android.intent.category.DEFAULT" />
    127                 <category android:name="android.intent.category.LAUNCHER" />
    128                 <category android:name="android.intent.category.BROWSABLE" />
    129             </intent-filter>
    130 
    131             <intent-filter>
    132                 <action android:name="android.intent.action.VIEW" />
    133                 <category android:name="android.intent.category.DEFAULT" />
    134                 <data android:mimeType="vnd.android.cursor.dir/person" android:host="contacts" />
    135                 <data android:mimeType="vnd.android.cursor.dir/contact" android:host="com.android.contacts" />
    136             </intent-filter>
    137 
    138         </activity-alias>
    139 
    140         <!-- Main launch Intent to open the Contacts app. This will open the app in its last manual
    141         state. This is the state that has been explicitly set by the user (e.g. by clicking a tab).
    142         States configured via other Intents (e.g. CallLog after Call) are not considered manual
    143         state. At the moment, the Intent always goes to the DialtactsActivity, but this might later
    144         be changed to also include sub-activities like Edit or View if they were left open -->
    145 
    146         <activity-alias android:name="ContactsLaunchActivity"
    147             android:targetActivity="DialtactsActivity"
    148         >
    149             <intent-filter>
    150                 <action android:name="android.intent.action.MAIN" />
    151                 <category android:name="android.intent.category.DEFAULT" />
    152                 <category android:name="android.intent.category.BROWSABLE" />
    153             </intent-filter>
    154         </activity-alias>
    155 
    156         <!-- An empty activity that presents the DialtactActivity's Favorites tab -->
    157         <activity-alias android:name="DialtactsFavoritesEntryActivity"
    158             android:targetActivity="DialtactsActivity"
    159         >
    160             <intent-filter>
    161                 <action android:name="android.intent.action.MAIN" />
    162                 <category android:name="android.intent.category.DEFAULT" />
    163             </intent-filter>
    164         </activity-alias>
    165 
    166         <!-- The actual list of contacts, usually embedded in ContactsActivity -->
    167         <activity android:name="ContactsListActivity"
    168             android:label="@string/contactsList"
    169             android:clearTaskOnLaunch="true"
    170         >
    171             <intent-filter>
    172                 <action android:name="com.android.contacts.action.LIST_DEFAULT" />
    173                 <category android:name="android.intent.category.DEFAULT" />
    174                 <category android:name="android.intent.category.TAB" />
    175             </intent-filter>
    176 
    177             <intent-filter>
    178                 <action android:name="com.android.contacts.action.LIST_CONTACTS" />
    179                 <category android:name="android.intent.category.DEFAULT" />
    180                 <category android:name="android.intent.category.TAB" />
    181             </intent-filter>
    182 
    183             <intent-filter>
    184                 <action android:name="com.android.contacts.action.LIST_ALL_CONTACTS" />
    185                 <category android:name="android.intent.category.DEFAULT" />
    186                 <category android:name="android.intent.category.TAB" />
    187             </intent-filter>
    188 
    189             <intent-filter>
    190                 <action android:name="com.android.contacts.action.LIST_CONTACTS_WITH_PHONES" />
    191                 <category android:name="android.intent.category.DEFAULT" />
    192                 <category android:name="android.intent.category.TAB" />
    193             </intent-filter>
    194 
    195             <intent-filter android:label="@string/starredList">
    196                 <action android:name="com.android.contacts.action.LIST_STARRED" />
    197                 <category android:name="android.intent.category.DEFAULT" />
    198                 <category android:name="android.intent.category.TAB" />
    199             </intent-filter>
    200 
    201             <intent-filter android:label="@string/frequentList">
    202                 <action android:name="com.android.contacts.action.LIST_FREQUENT" />
    203                 <category android:name="android.intent.category.DEFAULT" />
    204                 <category android:name="android.intent.category.TAB" />
    205             </intent-filter>
    206 
    207             <intent-filter android:label="@string/strequentList">
    208                 <action android:name="com.android.contacts.action.LIST_STREQUENT" />
    209                 <category android:name="android.intent.category.DEFAULT" />
    210                 <category android:name="android.intent.category.TAB" />
    211             </intent-filter>
    212 
    213             <intent-filter>
    214                 <action android:name="android.intent.action.INSERT_OR_EDIT" />
    215                 <category android:name="android.intent.category.DEFAULT" />
    216                 <data android:mimeType="vnd.android.cursor.item/person" />
    217                 <data android:mimeType="vnd.android.cursor.item/contact" />
    218                 <data android:mimeType="vnd.android.cursor.item/raw_contact" />
    219             </intent-filter>
    220 
    221             <intent-filter>
    222                 <action android:name="android.intent.action.PICK" />
    223                 <category android:name="android.intent.category.DEFAULT" />
    224                 <data android:mimeType="vnd.android.cursor.dir/contact" android:host="com.android.contacts" />
    225                 <data android:mimeType="vnd.android.cursor.dir/person" android:host="contacts" />
    226                 <data android:mimeType="vnd.android.cursor.dir/phone_v2" android:host="com.android.contacts" />
    227                 <data android:mimeType="vnd.android.cursor.dir/phone" android:host="contacts" />
    228                 <data android:mimeType="vnd.android.cursor.dir/postal-address_v2" android:host="com.android.contacts" />
    229                 <data android:mimeType="vnd.android.cursor.dir/postal-address" android:host="contacts" />
    230             </intent-filter>
    231 
    232             <intent-filter>
    233                 <action android:name="android.intent.action.GET_CONTENT" />
    234                 <category android:name="android.intent.category.DEFAULT" />
    235                 <data android:mimeType="vnd.android.cursor.item/contact" android:host="com.android.contacts" />
    236                 <data android:mimeType="vnd.android.cursor.item/person" android:host="contacts" />
    237                 <data android:mimeType="vnd.android.cursor.item/phone_v2" android:host="com.android.contacts" />
    238                 <data android:mimeType="vnd.android.cursor.item/phone" android:host="contacts" />
    239                 <data android:mimeType="vnd.android.cursor.item/postal-address_v2" android:host="com.android.contacts" />
    240                 <data android:mimeType="vnd.android.cursor.item/postal-address" android:host="contacts" />
    241             </intent-filter>
    242 
    243         </activity>
    244 
    245         <!-- An activity for joining contacts -->
    246         <activity android:name="ContactsListActivity$JoinContactActivity"
    247             android:theme="@style/TallTitleBarTheme"
    248             android:clearTaskOnLaunch="true"
    249         >
    250             <intent-filter>
    251                 <action android:name="com.android.contacts.action.JOIN_AGGREGATE" />
    252                 <category android:name="android.intent.category.DEFAULT" />
    253             </intent-filter>
    254         </activity>
    255 
    256         <!-- The contacts search/filter UI -->
    257         <activity android:name="ContactsListActivity$ContactsSearchActivity"
    258             android:theme="@style/ContactsSearchTheme"
    259             android:windowSoftInputMode="stateAlwaysVisible|adjustPan"
    260         >
    261             <intent-filter>
    262                 <action android:name="com.android.contacts.action.FILTER_CONTACTS" />
    263                 <category android:name="android.intent.category.DEFAULT" />
    264                 <data android:mimeType="vnd.android.cursor.dir/contact" android:host="com.android.contacts" />
    265             </intent-filter>
    266         </activity>
    267 
    268         <!-- The contacts search/filter UI -->
    269         <activity android:name="SearchResultsActivity"
    270             android:theme="@style/TallTitleBarTheme"
    271             android:label="@string/contactsList"
    272         >
    273             <intent-filter>
    274                 <action android:name="android.intent.action.SEARCH" />
    275                 <category android:name="android.intent.category.DEFAULT" />
    276             </intent-filter>
    277 
    278             <meta-data android:name="android.app.searchable"
    279                 android:resource="@xml/searchable"
    280             />
    281         </activity>
    282 
    283         <!-- Used to select display and sync groups -->
    284         <activity android:name=".ui.ContactsPreferencesActivity" android:label="@string/displayGroups" />
    285 
    286         <activity
    287             android:name=".ui.ShowOrCreateActivity"
    288             android:theme="@style/FullyTranslucent">
    289 
    290             <intent-filter>
    291                 <action android:name="com.android.contacts.action.SHOW_OR_CREATE_CONTACT" />
    292                 <category android:name="android.intent.category.DEFAULT" />
    293                 <data android:scheme="mailto" />
    294                 <data android:scheme="tel" />
    295             </intent-filter>
    296         </activity>
    297 
    298         <!-- Used to show QuickContact window over a translucent activity, which is a
    299              temporary hack until we add better framework support. -->
    300         <activity
    301             android:name=".ui.QuickContactActivity"
    302             android:theme="@style/FullyTranslucent.QuickContact"
    303             android:launchMode="singleTop"
    304             android:excludeFromRecents="true"
    305             android:taskAffinity="android.task.quickcontact"
    306             android:windowSoftInputMode="stateUnchanged"
    307             >
    308 
    309             <intent-filter>
    310                 <action android:name="com.android.contacts.action.QUICK_CONTACT" />
    311                 <category android:name="android.intent.category.DEFAULT" />
    312                 <data android:mimeType="vnd.android.cursor.item/contact" android:host="com.android.contacts" />
    313                 <data android:mimeType="vnd.android.cursor.item/person" android:host="contacts" />
    314             </intent-filter>
    315         </activity>
    316 
    317         <activity-alias android:name="ContactShortcut"
    318             android:targetActivity="ContactsListActivity"
    319             android:label="@string/shortcutContact"
    320             android:icon="@drawable/ic_launcher_shortcut_contact">
    321 
    322             <intent-filter>
    323                 <action android:name="android.intent.action.CREATE_SHORTCUT" />
    324                 <category android:name="android.intent.category.DEFAULT" />
    325             </intent-filter>
    326 
    327         </activity-alias>
    328 
    329         <activity-alias android:name="alias.DialShortcut"
    330             android:targetActivity="ContactsListActivity"
    331             android:label="@string/shortcutDialContact"
    332             android:icon="@drawable/ic_launcher_shortcut_directdial">
    333 
    334             <intent-filter>
    335                 <action android:name="android.intent.action.CREATE_SHORTCUT" />
    336                 <category android:name="android.intent.category.DEFAULT" />
    337                 <category android:name="android.intent.category.CAR_MODE" />
    338             </intent-filter>
    339 
    340         </activity-alias>
    341 
    342         <activity-alias android:name="alias.MessageShortcut"
    343             android:targetActivity="ContactsListActivity"
    344             android:label="@string/shortcutMessageContact"
    345             android:icon="@drawable/ic_launcher_shortcut_directmessage">
    346 
    347             <intent-filter>
    348                 <action android:name="android.intent.action.CREATE_SHORTCUT" />
    349                 <category android:name="android.intent.category.DEFAULT" />
    350             </intent-filter>
    351 
    352         </activity-alias>
    353 
    354         <activity android:name="CallDetailActivity"
    355             android:label="@string/callDetailTitle"
    356             android:theme="@style/TallTitleBarTheme"
    357         >
    358             <intent-filter>
    359                 <action android:name="android.intent.action.VIEW" />
    360                 <category android:name="android.intent.category.DEFAULT" />
    361                 <data android:mimeType="vnd.android.cursor.item/calls" />
    362             </intent-filter>
    363         </activity>
    364 
    365         <!-- Views the details of a single contact -->
    366         <activity android:name="ViewContactActivity"
    367             android:label="@string/viewContactTitle"
    368             android:theme="@style/TallTitleBarTheme">
    369 
    370             <intent-filter android:label="@string/viewContactDesription">
    371                 <action android:name="android.intent.action.VIEW" />
    372                 <category android:name="android.intent.category.DEFAULT" />
    373                 <data android:mimeType="vnd.android.cursor.item/person" android:host="contacts" />
    374                 <data android:mimeType="vnd.android.cursor.item/contact" android:host="com.android.contacts" />
    375                 <data android:mimeType="vnd.android.cursor.item/raw_contact" android:host="com.android.contacts" />
    376             </intent-filter>
    377         </activity>
    378 
    379         <!-- Edit or insert details for a contact -->
    380         <activity
    381             android:name=".ui.EditContactActivity"
    382             android:windowSoftInputMode="stateHidden|adjustResize">
    383 
    384             <intent-filter android:label="@string/editContactDescription">
    385                 <action android:name="android.intent.action.EDIT" />
    386                 <category android:name="android.intent.category.DEFAULT" />
    387                 <data android:mimeType="vnd.android.cursor.item/person" android:host="contacts" />
    388                 <data android:mimeType="vnd.android.cursor.item/contact" android:host="com.android.contacts" />
    389                 <data android:mimeType="vnd.android.cursor.item/raw_contact" android:host="com.android.contacts" />
    390             </intent-filter>
    391 
    392             <intent-filter android:label="@string/insertContactDescription">
    393                 <action android:name="android.intent.action.INSERT" />
    394                 <category android:name="android.intent.category.DEFAULT" />
    395                 <data android:mimeType="vnd.android.cursor.dir/person" />
    396                 <data android:mimeType="vnd.android.cursor.dir/contact" />
    397                 <data android:mimeType="vnd.android.cursor.dir/raw_contact" />
    398             </intent-filter>
    399 
    400         </activity>
    401 
    402         <!-- Stub service used to keep our process alive long enough for
    403              background threads to finish their operations. -->
    404         <service
    405             android:name=".util.EmptyService"
    406             android:exported="false" />
    407 
    408         <!-- Views the details of a single contact -->
    409         <activity android:name="ContactOptionsActivity"
    410             android:label="@string/contactOptionsTitle"
    411         >
    412             <intent-filter>
    413                 <action android:name="android.intent.action.EDIT" />
    414                 <category android:name="android.intent.category.DEFAULT" />
    415             </intent-filter>
    416         </activity>
    417 
    418         <!-- Attaches a photo to a contact. Started from external applications -->
    419         <activity android:name="AttachImage"
    420             android:label="@string/attachToContact"
    421             android:taskAffinity="">
    422             <intent-filter>
    423                 <action android:name="android.intent.action.ATTACH_DATA" />
    424                 <data android:mimeType="image/*" />
    425                 <category android:name="android.intent.category.DEFAULT" />
    426             </intent-filter>
    427             />
    428         </activity>
    429 
    430         <!-- Makes .ContactsListActivity the search target for any activity in Contacts -->
    431         <meta-data
    432             android:name="android.app.default_searchable"
    433             android:value=".ContactsListActivity" />
    434 
    435 
    436         <!-- LIVE FOLDERS -->
    437         <activity
    438             android:name=".ContactsLiveFolders$AllContacts"
    439             android:label="@string/liveFolderAll"
    440             android:icon="@drawable/ic_launcher_folder_live_contacts">
    441             <intent-filter>
    442                 <action android:name="android.intent.action.CREATE_LIVE_FOLDER" />
    443                 <category android:name="android.intent.category.DEFAULT" />
    444             </intent-filter>
    445         </activity>
    446 
    447         <activity
    448             android:name=".ContactsLiveFolders$StarredContacts"
    449             android:label="@string/liveFolderFavorites"
    450             android:icon="@drawable/ic_launcher_folder_live_contacts_starred">
    451             <intent-filter>
    452                 <action android:name="android.intent.action.CREATE_LIVE_FOLDER" />
    453                 <category android:name="android.intent.category.DEFAULT" />
    454             </intent-filter>
    455         </activity>
    456 
    457         <activity
    458             android:name=".ContactsLiveFolders$PhoneContacts"
    459             android:label="@string/liveFolderPhone"
    460             android:icon="@drawable/ic_launcher_folder_live_contacts_phone">
    461             <intent-filter>
    462                 <action android:name="android.intent.action.CREATE_LIVE_FOLDER" />
    463                 <category android:name="android.intent.category.DEFAULT" />
    464             </intent-filter>
    465         </activity>
    466 
    467         <activity android:name=".ImportVCardActivity"
    468             android:theme="@style/BackgroundOnly">
    469             <intent-filter>
    470                 <action android:name="android.intent.action.VIEW" />
    471                 <data android:mimeType="text/directory" />
    472                 <data android:mimeType="text/x-vcard" />
    473                 <category android:name="android.intent.category.DEFAULT" />
    474             </intent-filter>
    475         </activity>
    476 
    477         <activity android:name=".ExportVCardActivity"
    478             android:theme="@style/BackgroundOnly" />
    479     </application>
    480 </manifest>
    481