<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2006 The Android Open Source Project

     Licensed under the Apache License, Version 2.0 (the "License");
     you may not use this file except in compliance with the License.
     You may obtain a copy of the License at

          http://www.apache.org/licenses/LICENSE-2.0

     Unless required by applicable law or agreed to in writing, software
     distributed under the License is distributed on an "AS IS" BASIS,
     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     See the License for the specific language governing permissions and
     limitations under the License.
-->

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.android.contacts"
    android:sharedUserId="android.uid.shared"
>

    <original-package android:name="com.android.contacts" />

    <uses-permission android:name="android.permission.CALL_PRIVILEGED" />
    <uses-permission android:name="android.permission.READ_CONTACTS" />
    <uses-permission android:name="android.permission.WRITE_CONTACTS" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.MODIFY_PHONE_STATE" />
    <uses-permission android:name="com.google.android.googleapps.permission.GOOGLE_AUTH.mail" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.WRITE_SETTINGS" />
    <uses-permission android:name="android.permission.USE_CREDENTIALS" />
    <uses-permission android:name="android.permission.VIBRATE" />

    <application
        android:label="@string/contactsList"
        android:icon="@drawable/ic_launcher_contacts"
        android:process="android.process.acore"
        android:taskAffinity="android.task.contacts"
    >

        <!-- A virtual 12 key dialer -->
        <activity android:name="TwelveKeyDialer"
            android:launchMode="singleTop"
        >
            <intent-filter>
                <action android:name="com.android.phone.action.TOUCH_DIALER" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.TAB" />
            </intent-filter>
        </activity>

        <!-- A list of recent calls -->
        <activity android:name="RecentCallsListActivity"
            android:label="@string/recentCallsIconLabel"
        >
            <intent-filter>
                <action android:name="com.android.phone.action.RECENT_CALLS" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.TAB" />
            </intent-filter>
        </activity>

        <!-- Tab container for all tabs -->
        <activity android:name="DialtactsActivity"
            android:label="@string/launcherDialer"
            android:theme="@style/DialtactsTheme"
            android:launchMode="singleTask"
            android:clearTaskOnLaunch="true"
            android:icon="@drawable/ic_launcher_phone"
            android:screenOrientation="nosensor"
        >
            <intent-filter>
                <action android:name="android.intent.action.DIAL" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />
                <data android:mimeType="vnd.android.cursor.item/phone" />
                <data android:mimeType="vnd.android.cursor.item/person" />
            </intent-filter>
            <intent-filter>
                <action android:name="android.intent.action.DIAL" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />
                <data android:scheme="voicemail" />
            </intent-filter>
            <intent-filter>
                <action android:name="android.intent.action.DIAL" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.LAUNCHER" />
                <category android:name="android.intent.category.BROWSABLE" />
            </intent-filter>
            <intent-filter>
                <action android:name="android.intent.action.VIEW" />
                <action android:name="android.intent.action.DIAL" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />
                <data android:scheme="tel" />
            </intent-filter>
            <intent-filter>
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />
                <data android:mimeType="vnd.android.cursor.dir/calls" />
            </intent-filter>
            <intent-filter>
                <action android:name="android.intent.action.CALL_BUTTON" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />
            </intent-filter>
        </activity>

        <!-- Tab container for all tabs -->
        <activity-alias android:name="DialtactsContactsEntryActivity"
            android:targetActivity="DialtactsActivity"
            android:label="@string/contactsList"
            android:icon="@drawable/ic_launcher_contacts"
        >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.LAUNCHER" />
                <category android:name="android.intent.category.BROWSABLE" />
            </intent-filter>

            <intent-filter>
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
                <data android:mimeType="vnd.android.cursor.dir/person" android:host="contacts" />
                <data android:mimeType="vnd.android.cursor.dir/contact" android:host="com.android.contacts" />
            </intent-filter>

        </activity-alias>

        <!-- Main launch Intent to open the Contacts app. This will open the app in its last manual
        state. This is the state that has been explicitly set by the user (e.g. by clicking a tab).
        States configured via other Intents (e.g. CallLog after Call) are not considered manual
        state. At the moment, the Intent always goes to the DialtactsActivity, but this might later
        be changed to also include sub-activities like Edit or View if they were left open -->

        <activity-alias android:name="ContactsLaunchActivity"
            android:targetActivity="DialtactsActivity"
        >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />
            </intent-filter>
        </activity-alias>

        <!-- An empty activity that presents the DialtactActivity's Favorites tab -->
        <activity-alias android:name="DialtactsFavoritesEntryActivity"
            android:targetActivity="DialtactsActivity"
        >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity-alias>

        <!-- The actual list of contacts, usually embedded in ContactsActivity -->
        <activity android:name="ContactsListActivity"
            android:label="@string/contactsList"
            android:clearTaskOnLaunch="true"
        >
            <intent-filter>
                <action android:name="com.android.contacts.action.LIST_DEFAULT" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.TAB" />
            </intent-filter>

            <intent-filter>
                <action android:name="com.android.contacts.action.LIST_CONTACTS" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.TAB" />
            </intent-filter>

            <intent-filter>
                <action android:name="com.android.contacts.action.LIST_ALL_CONTACTS" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.TAB" />
            </intent-filter>

            <intent-filter>
                <action android:name="com.android.contacts.action.LIST_CONTACTS_WITH_PHONES" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.TAB" />
            </intent-filter>

            <intent-filter android:label="@string/starredList">
                <action android:name="com.android.contacts.action.LIST_STARRED" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.TAB" />
            </intent-filter>

            <intent-filter android:label="@string/frequentList">
                <action android:name="com.android.contacts.action.LIST_FREQUENT" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.TAB" />
            </intent-filter>

            <intent-filter android:label="@string/strequentList">
                <action android:name="com.android.contacts.action.LIST_STREQUENT" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.TAB" />
            </intent-filter>

            <intent-filter>
                <action android:name="android.intent.action.INSERT_OR_EDIT" />
                <category android:name="android.intent.category.DEFAULT" />
                <data android:mimeType="vnd.android.cursor.item/person" />
                <data android:mimeType="vnd.android.cursor.item/contact" />
                <data android:mimeType="vnd.android.cursor.item/raw_contact" />
            </intent-filter>

            <intent-filter>
                <action android:name="android.intent.action.PICK" />
                <category android:name="android.intent.category.DEFAULT" />
                <data android:mimeType="vnd.android.cursor.dir/contact" android:host="com.android.contacts" />
                <data android:mimeType="vnd.android.cursor.dir/person" android:host="contacts" />
                <data android:mimeType="vnd.android.cursor.dir/phone_v2" android:host="com.android.contacts" />
                <data android:mimeType="vnd.android.cursor.dir/phone" android:host="contacts" />
                <data android:mimeType="vnd.android.cursor.dir/postal-address_v2" android:host="com.android.contacts" />
                <data android:mimeType="vnd.android.cursor.dir/postal-address" android:host="contacts" />
            </intent-filter>

            <intent-filter>
                <action android:name="android.intent.action.GET_CONTENT" />
                <category android:name="android.intent.category.DEFAULT" />
                <data android:mimeType="vnd.android.cursor.item/contact" android:host="com.android.contacts" />
                <data android:mimeType="vnd.android.cursor.item/person" android:host="contacts" />
                <data android:mimeType="vnd.android.cursor.item/phone_v2" android:host="com.android.contacts" />
                <data android:mimeType="vnd.android.cursor.item/phone" android:host="contacts" />
                <data android:mimeType="vnd.android.cursor.item/postal-address_v2" android:host="com.android.contacts" />
                <data android:mimeType="vnd.android.cursor.item/postal-address" android:host="contacts" />
            </intent-filter>

        </activity>

        <!-- An activity for joining contacts -->
        <activity android:name="ContactsListActivity$JoinContactActivity"
            android:theme="@style/TallTitleBarTheme"
            android:clearTaskOnLaunch="true"
        >
            <intent-filter>
                <action android:name="com.android.contacts.action.JOIN_AGGREGATE" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>

        <!-- The contacts search/filter UI -->
        <activity android:name="ContactsListActivity$ContactsSearchActivity"
            android:theme="@style/ContactsSearchTheme"
            android:windowSoftInputMode="stateAlwaysVisible|adjustPan"
        >
            <intent-filter>
                <action android:name="com.android.contacts.action.FILTER_CONTACTS" />
                <category android:name="android.intent.category.DEFAULT" />
                <data android:mimeType="vnd.android.cursor.dir/contact" android:host="com.android.contacts" />
            </intent-filter>
        </activity>

        <!-- The contacts search/filter UI -->
        <activity android:name="SearchResultsActivity"
            android:theme="@style/TallTitleBarTheme"
            android:label="@string/contactsList"
        >
            <intent-filter>
                <action android:name="android.intent.action.SEARCH" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>

            <meta-data android:name="android.app.searchable"
                android:resource="@xml/searchable"
            />
        </activity>

        <!-- Used to select display and sync groups -->
        <activity android:name=".ui.ContactsPreferencesActivity" android:label="@string/displayGroups" />

        <activity
            android:name=".ui.ShowOrCreateActivity"
            android:theme="@style/FullyTranslucent">

            <intent-filter>
                <action android:name="com.android.contacts.action.SHOW_OR_CREATE_CONTACT" />
                <category android:name="android.intent.category.DEFAULT" />
                <data android:scheme="mailto" />
                <data android:scheme="tel" />
            </intent-filter>
        </activity>

        <!-- Used to show QuickContact window over a translucent activity, which is a
             temporary hack until we add better framework support. -->
        <activity
            android:name=".ui.QuickContactActivity"
            android:theme="@style/FullyTranslucent.QuickContact"
            android:launchMode="singleTop"
            android:excludeFromRecents="true"
            android:taskAffinity="android.task.quickcontact"
            android:windowSoftInputMode="stateUnchanged"
            >

            <intent-filter>
                <action android:name="com.android.contacts.action.QUICK_CONTACT" />
                <category android:name="android.intent.category.DEFAULT" />
                <data android:mimeType="vnd.android.cursor.item/contact" android:host="com.android.contacts" />
                <data android:mimeType="vnd.android.cursor.item/person" android:host="contacts" />
            </intent-filter>
        </activity>

        <activity-alias android:name="ContactShortcut"
            android:targetActivity="ContactsListActivity"
            android:label="@string/shortcutContact"
            android:icon="@drawable/ic_launcher_shortcut_contact">

            <intent-filter>
                <action android:name="android.intent.action.CREATE_SHORTCUT" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>

        </activity-alias>

        <activity-alias android:name="alias.DialShortcut"
            android:targetActivity="ContactsListActivity"
            android:label="@string/shortcutDialContact"
            android:icon="@drawable/ic_launcher_shortcut_directdial">

            <intent-filter>
                <action android:name="android.intent.action.CREATE_SHORTCUT" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.CAR_MODE" />
            </intent-filter>

        </activity-alias>

        <activity-alias android:name="alias.MessageShortcut"
            android:targetActivity="ContactsListActivity"
            android:label="@string/shortcutMessageContact"
            android:icon="@drawable/ic_launcher_shortcut_directmessage">

            <intent-filter>
                <action android:name="android.intent.action.CREATE_SHORTCUT" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>

        </activity-alias>

        <activity android:name="CallDetailActivity"
            android:label="@string/callDetailTitle"
            android:theme="@style/TallTitleBarTheme"
        >
            <intent-filter>
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
                <data android:mimeType="vnd.android.cursor.item/calls" />
            </intent-filter>
        </activity>

        <!-- Views the details of a single contact -->
        <activity android:name="ViewContactActivity"
            android:label="@string/viewContactTitle"
            android:theme="@style/TallTitleBarTheme">

            <intent-filter android:label="@string/viewContactDesription">
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
                <data android:mimeType="vnd.android.cursor.item/person" android:host="contacts" />
                <data android:mimeType="vnd.android.cursor.item/contact" android:host="com.android.contacts" />
                <data android:mimeType="vnd.android.cursor.item/raw_contact" android:host="com.android.contacts" />
            </intent-filter>
        </activity>

        <!-- Edit or insert details for a contact -->
        <activity
            android:name=".ui.EditContactActivity"
            android:windowSoftInputMode="stateHidden|adjustResize">

            <intent-filter android:label="@string/editContactDescription">
                <action android:name="android.intent.action.EDIT" />
                <category android:name="android.intent.category.DEFAULT" />
                <data android:mimeType="vnd.android.cursor.item/person" android:host="contacts" />
                <data android:mimeType="vnd.android.cursor.item/contact" android:host="com.android.contacts" />
                <data android:mimeType="vnd.android.cursor.item/raw_contact" android:host="com.android.contacts" />
            </intent-filter>

            <intent-filter android:label="@string/insertContactDescription">
                <action android:name="android.intent.action.INSERT" />
                <category android:name="android.intent.category.DEFAULT" />
                <data android:mimeType="vnd.android.cursor.dir/person" />
                <data android:mimeType="vnd.android.cursor.dir/contact" />
                <data android:mimeType="vnd.android.cursor.dir/raw_contact" />
            </intent-filter>

        </activity>

        <!-- Stub service used to keep our process alive long enough for
             background threads to finish their operations. -->
        <service
            android:name=".util.EmptyService"
            android:exported="false" />

        <!-- Views the details of a single contact -->
        <activity android:name="ContactOptionsActivity"
            android:label="@string/contactOptionsTitle"
        >
            <intent-filter>
                <action android:name="android.intent.action.EDIT" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>

        <!-- Attaches a photo to a contact. Started from external applications -->
        <activity android:name="AttachImage"
            android:label="@string/attachToContact"
            android:taskAffinity="">
            <intent-filter>
                <action android:name="android.intent.action.ATTACH_DATA" />
                <data android:mimeType="image/*" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
            />
        </activity>

        <!-- Makes .ContactsListActivity the search target for any activity in Contacts -->
        <meta-data
            android:name="android.app.default_searchable"
            android:value=".ContactsListActivity" />


        <!-- LIVE FOLDERS -->
        <activity
            android:name=".ContactsLiveFolders$AllContacts"
            android:label="@string/liveFolderAll"
            android:icon="@drawable/ic_launcher_folder_live_contacts">
            <intent-filter>
                <action android:name="android.intent.action.CREATE_LIVE_FOLDER" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>

        <activity
            android:name=".ContactsLiveFolders$StarredContacts"
            android:label="@string/liveFolderFavorites"
            android:icon="@drawable/ic_launcher_folder_live_contacts_starred">
            <intent-filter>
                <action android:name="android.intent.action.CREATE_LIVE_FOLDER" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>

        <activity
            android:name=".ContactsLiveFolders$PhoneContacts"
            android:label="@string/liveFolderPhone"
            android:icon="@drawable/ic_launcher_folder_live_contacts_phone">
            <intent-filter>
                <action android:name="android.intent.action.CREATE_LIVE_FOLDER" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>

        <activity android:name=".ImportVCardActivity"
            android:theme="@style/BackgroundOnly">
            <intent-filter>
                <action android:name="android.intent.action.VIEW" />
                <data android:mimeType="text/directory" />
                <data android:mimeType="text/x-vcard" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>

        <activity android:name=".ExportVCardActivity"
            android:theme="@style/BackgroundOnly" />
    </application>
</manifest>
