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