1<manifest xmlns:android="http://schemas.android.com/apk/res/android"
2        package="com.android.providers.contacts"
3        android:sharedUserId="android.uid.shared"
4        android:sharedUserLabel="@string/sharedUserLabel">
5
6    <uses-permission android:name="android.permission.BIND_DIRECTORY_SEARCH" />
7    <!-- For sending voicemail intents -->
8    <uses-permission android:name="android.permission.CHANGE_DEVICE_IDLE_TEMP_WHITELIST" />
9    <uses-permission android:name="android.permission.GET_ACCOUNTS" />
10    <uses-permission android:name="android.permission.GET_ACCOUNTS_PRIVILEGED" />
11    <uses-permission android:name="android.permission.INTERACT_ACROSS_USERS" />
12    <uses-permission android:name="android.permission.MANAGE_USERS" />
13    <uses-permission android:name="android.permission.PROCESS_PHONE_ACCOUNT_REGISTRATION" />
14    <uses-permission android:name="android.permission.READ_CONTACTS" />
15    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
16    <uses-permission android:name="android.permission.READ_PRIVILEGED_PHONE_STATE" />
17    <uses-permission android:name="android.permission.READ_SYNC_SETTINGS" />
18    <uses-permission android:name="android.permission.SEND_CALL_LOG_CHANGE" />
19    <uses-permission android:name="android.permission.UPDATE_APP_OPS_STATS" />
20    <uses-permission android:name="android.permission.WRITE_CONTACTS" />
21    <uses-permission android:name="android.permission.USE_RESERVED_DISK" />
22    <uses-permission android:name="android.permission.READ_DEVICE_CONFIG" />
23    <uses-permission android:name="android.permission.HIDE_NON_SYSTEM_OVERLAY_WINDOWS" />
24    <uses-permission android:name="android.permission.READ_PHONE_NUMBERS" />
25
26    <permission
27            android:name="android.permission.SEND_CALL_LOG_CHANGE"
28            android:label="Broadcast that a change happened to the call log."
29            android:protectionLevel="signature|system"/>
30
31    <permission
32        android:name="android.contacts.permission.MANAGE_SIM_ACCOUNTS"
33        android:label="Change known SIM accounts in ContactsProvider."
34        android:protectionLevel="signature"/>
35
36    <application android:process="android.process.acore"
37        android:label="@string/app_label"
38        android:allowBackup="false"
39        android:forceQueryable="true"
40        android:usesCleartextTraffic="false">
41
42        <provider android:name="ContactsProvider2"
43            android:authorities="contacts;com.android.contacts"
44            android:label="@string/provider_label"
45            android:multiprocess="false"
46            android:exported="true"
47            android:grantUriPermissions="true"
48            android:readPermission="android.permission.READ_CONTACTS"
49            android:writePermission="android.permission.WRITE_CONTACTS"
50            android:visibleToInstantApps="true">
51            <path-permission
52                    android:pathPrefix="/search_suggest_query"
53                    android:readPermission="android.permission.GLOBAL_SEARCH" />
54            <path-permission
55                    android:pathPrefix="/search_suggest_shortcut"
56                    android:readPermission="android.permission.GLOBAL_SEARCH" />
57            <path-permission
58                    android:pathPattern="/contacts/.*/photo"
59                    android:readPermission="android.permission.GLOBAL_SEARCH" />
60            <grant-uri-permission android:pathPattern=".*" />
61        </provider>
62
63        <provider android:name="CallLogProvider"
64            android:authorities="call_log"
65            android:syncable="false" android:multiprocess="false"
66            android:exported="true"
67            android:readPermission="android.permission.READ_CALL_LOG"
68            android:writePermission="android.permission.WRITE_CALL_LOG">
69        </provider>
70
71        <!-- Separate provider for the locations stored in call provider.
72             Uses a different db in order to prevent SQL injection attacks from bypassing
73             location permission requirements -->
74        <provider android:name="CallComposerLocationProvider"
75            android:authorities="call_composer_locations"
76            android:syncable="false" android:multiprocess="false"
77            android:exported="true"
78            android:readPermission="android.permission.READ_CALL_LOG"
79            android:writePermission="android.permission.WRITE_CALL_LOG">
80        </provider>
81
82        <provider android:name="ShadowCallLogProvider"
83                  android:authorities="call_log_shadow"
84                  android:syncable="false" android:multiprocess="false"
85                  android:exported="true"
86                  android:directBootAware="true"
87                  android:readPermission="android.permission.INTERACT_ACROSS_USERS"
88                  android:writePermission="android.permission.INTERACT_ACROSS_USERS">
89        </provider>
90
91        <!-- Note: While this provider does not declare a permission explicitly, it enforces that
92             the caller has either ADD_VOICEMAIL or carrier privileges at a minimum to access it.
93             Additional permission checks may be done depending on the operation. -->
94        <provider android:name="VoicemailContentProvider"
95            android:authorities="com.android.voicemail"
96            android:syncable="false" android:multiprocess="false"
97            android:exported="true">
98        </provider>
99
100        <!-- Handles database upgrades after OTAs, then disables itself -->
101        <receiver android:name="ContactsUpgradeReceiver"
102            android:exported="true">
103            <!-- This broadcast is sent after the core system has finished
104                 booting, before the home app is launched or BOOT_COMPLETED
105                 is sent. -->
106            <intent-filter>
107                <action android:name="android.intent.action.PRE_BOOT_COMPLETED"/>
108            </intent-filter>
109        </receiver>
110
111        <receiver android:name="PhoneAccountRegistrationReceiver"
112                android:exported="true"
113                android:permission="android.permission.BROADCAST_PHONE_ACCOUNT_REGISTRATION">
114            <!-- Broadcast sent after a phone account is registered in telecom. -->
115            <intent-filter>
116                <action android:name="android.telecom.action.PHONE_ACCOUNT_REGISTERED"/>
117            </intent-filter>
118        </receiver>
119
120        <receiver android:name="LocaleChangeReceiver"
121            android:exported="true">
122            <intent-filter>
123                <action android:name="android.intent.action.LOCALE_CHANGED"/>
124            </intent-filter>
125        </receiver>
126
127        <activity android:name=".debug.ContactsDumpActivity"
128                android:label="@string/debug_dump_title"
129                android:theme="@android:style/Theme.Holo.Dialog"
130                android:exported="true"
131                >
132            <intent-filter>
133                <action android:name="com.android.providers.contacts.DUMP_DATABASE"/>
134                <category android:name="android.intent.category.DEFAULT"/>
135            </intent-filter>
136        </activity>
137
138        <provider android:name=".debug.DumpFileProvider"
139            android:authorities="com.android.contacts.dumpfile"
140            android:exported="true">
141        </provider>
142
143    </application>
144</manifest>
145