1<?xml version="1.0" encoding="utf-8"?>
2<!-- Copyright (C) 2007 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     xmlns:androidprv="http://schemas.android.com/apk/prv/res/android"
19     package="com.android.server.telecom"
20     coreApp="true"
21     android:sharedUserId="android.uid.system">
22
23    <protected-broadcast android:name="android.intent.action.SHOW_MISSED_CALLS_NOTIFICATION"/>
24    <protected-broadcast android:name="com.android.server.telecom.MESSAGE_SENT"/>
25
26
27    <!-- Prevents the activity manager from delaying any activity-start
28         requests by this package, including requests immediately after
29         the user presses "home". -->
30    <uses-permission android:name="android.permission.BIND_CONNECTION_SERVICE"/>
31    <uses-permission android:name="android.permission.BIND_INCALL_SERVICE"/>
32    <uses-permission android:name="android.permission.BLUETOOTH"/>
33    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
34    <uses-permission android:name="android.permission.BROADCAST_CALLLOG_INFO"/>
35    <uses-permission android:name="android.permission.BROADCAST_PHONE_ACCOUNT_REGISTRATION"/>
36    <uses-permission android:name="android.permission.CALL_PRIVILEGED"/>
37    <uses-permission android:name="android.permission.HANDLE_CALL_INTENT"/>
38    <uses-permission android:name="android.permission.HANDLE_CAR_MODE_CHANGES"/>
39    <uses-permission android:name="android.permission.INTERACT_ACROSS_USERS"/>
40    <uses-permission android:name="android.permission.INTERACT_ACROSS_USERS_FULL"/>
41    <uses-permission android:name="android.permission.MANAGE_USERS"/>
42    <uses-permission android:name="android.permission.MANAGE_ROLE_HOLDERS"/>
43    <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>
44    <!-- Required to determine source of ongoing audio recordings. -->
45    <uses-permission android:name="android.permission.MODIFY_AUDIO_ROUTING"/>
46    <uses-permission android:name="android.permission.MODIFY_PHONE_STATE"/>
47    <uses-permission android:name="android.permission.READ_CALL_LOG"/>
48    <uses-permission android:name="android.permission.READ_DEVICE_CONFIG"/>
49    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
50    <uses-permission android:name="android.permission.SEND_SMS"/>
51    <uses-permission android:name="android.permission.STOP_APP_SWITCHES"/>
52    <uses-permission android:name="android.permission.VIBRATE"/>
53    <uses-permission android:name="android.permission.WRITE_CALL_LOG"/>
54    <uses-permission android:name="android.permission.WAKE_LOCK"/>
55    <uses-permission android:name="android.permission.READ_BLOCKED_NUMBERS"/>
56    <uses-permission android:name="android.permission.WRITE_BLOCKED_NUMBERS"/>
57    <uses-permission android:name="android.permission.SUBSTITUTE_NOTIFICATION_APP_NAME"/>
58
59    <permission android:name="android.permission.BROADCAST_CALLLOG_INFO"
60         android:label="Broadcast the call type/duration information"
61         android:protectionLevel="signature|system"/>
62
63    <permission android:name="android.permission.PROCESS_CALLLOG_INFO"
64         android:label="Register to handle the broadcasted call type/duration information"
65         android:protectionLevel="signature|system"/>
66
67    <permission android:name="android.permission.BROADCAST_PHONE_ACCOUNT_REGISTRATION"
68         android:label="Broadcast phone account registration"
69         android:protectionLevel="signature|system"/>
70
71    <permission android:name="android.permission.PROCESS_PHONE_ACCOUNT_REGISTRATION"
72         android:label="Process phone account registration"
73         android:protectionLevel="signature|system"/>
74
75    <permission android:name="android.permission.HANDLE_CALL_INTENT"
76         android:label="Protects handling the call intent via the TelecomManager API."
77         android:protectionLevel="signature|system"/>
78
79    <application android:label="@string/telecommAppLabel"
80         android:icon="@mipmap/ic_launcher_phone"
81         android:allowBackup="false"
82         android:supportsRtl="true"
83         android:process="system"
84         android:usesCleartextTraffic="false"
85         android:defaultToDeviceProtectedStorage="true"
86         android:directBootAware="true">
87
88        <!-- CALL vs CALL_PRIVILEGED vs CALL_EMERGENCY
89             We have three different intents through which a call can be initiated each with its
90             own behavior.
91             1) CALL - Expected from any third party app with CALL_PHONE permission. Through this
92             intent, an app can call any number except emergency numbers.
93             2) CALL_PRIVILEGED - Expected from the dialer app and requires CALL_PRIVILEGED
94             permission, which is only held by the system dialer and the emergency dialer at the
95             time of this writing. Through this intent, an app can call any number including
96             emergency numbers.
97             3) CALL_EMERGENCY - Expected from the emergency dialer app and requires CALL_PRIVILEGED
98             permission. Through this intent, an app can call *only* emergency numbers. -->
99
100        <!-- Activity that displays UI for managing blocked numbers. -->
101        <activity android:name=".settings.BlockedNumbersActivity"
102             android:label="@string/blocked_numbers"
103             android:configChanges="orientation|screenSize|keyboardHidden"
104             android:theme="@style/Theme.Telecom.BlockedNumbers"
105             android:process=":ui"
106             android:exported="true">
107            <intent-filter>
108                <action android:name="android.telecom.action.MANAGE_BLOCKED_NUMBERS"/>
109                <category android:name="android.intent.category.DEFAULT"/>
110            </intent-filter>
111        </activity>
112
113        <activity android:name=".settings.CallBlockDisabledActivity"
114             android:configChanges="keyboardHidden|orientation|screenSize"
115             android:excludeFromRecents="true"
116             android:launchMode="singleInstance"
117             android:theme="@style/Theme.Telecomm.Transparent"
118             android:process=":ui">
119        </activity>
120
121        <!-- Activity that starts the outgoing call process by listening to CALL intent which
122                         contain contact information in the intent's data. CallActivity handles any data
123                         URL with the schemes "tel", "sip", and "voicemail". It also handles URLs linked to
124                         contacts provider entries. Any data not fitting the schema described is ignored. -->
125        <activity android:name=".components.UserCallActivity"
126             android:label="@string/userCallActivityLabel"
127             android:theme="@style/Theme.Telecomm.Transparent"
128             android:permission="android.permission.CALL_PHONE"
129             android:excludeFromRecents="true"
130             android:process=":ui"
131             android:exported="true">
132            <!-- CALL action intent filters for the various ways of initiating an outgoing call. -->
133            <intent-filter>
134                <action android:name="android.intent.action.CALL"/>
135                <category android:name="android.intent.category.DEFAULT"/>
136                <data android:scheme="tel"/>
137            </intent-filter>
138            <!-- Specify an icon for SIP calls so that quick contacts widget shows a special SIP
139                                 icon for calls to SIP addresses. -->
140            <intent-filter android:icon="@drawable/ic_launcher_sip_call">
141                <action android:name="android.intent.action.CALL"/>
142                <category android:name="android.intent.category.DEFAULT"/>
143                <data android:scheme="sip"/>
144            </intent-filter>
145            <intent-filter>
146                <action android:name="android.intent.action.CALL"/>
147                <category android:name="android.intent.category.DEFAULT"/>
148                <data android:scheme="voicemail"/>
149            </intent-filter>
150            <!-- Omit default category below so that all Intents sent to this filter must be
151                                 explicit. -->
152            <intent-filter>
153                <action android:name="android.intent.action.CALL"/>
154                <data android:mimeType="vnd.android.cursor.item/phone"/>
155                <data android:mimeType="vnd.android.cursor.item/phone_v2"/>
156                <data android:mimeType="vnd.android.cursor.item/person"/>
157            </intent-filter>
158        </activity>
159
160        <!-- Works like CallActivity with CALL_PRIVILEGED instead of CALL intent.
161             CALL_PRIVILEGED allows calls to emergency numbers unlike CALL which disallows it.
162             Intent-sender must have the CALL_PRIVILEGED permission or the broadcast will not be
163             processed. High priority of 1000 is used in all intent filters to prevent anything but
164             the system from processing this intent (b/8871505). -->
165        <activity-alias android:name="PrivilegedCallActivity"
166             android:targetActivity=".components.UserCallActivity"
167             android:permission="android.permission.CALL_PRIVILEGED"
168             android:process=":ui">
169            <intent-filter android:priority="1000">
170                <action android:name="android.intent.action.CALL_PRIVILEGED"/>
171                <category android:name="android.intent.category.DEFAULT"/>
172                <data android:scheme="tel"/>
173            </intent-filter>
174            <intent-filter android:priority="1000"
175                 android:icon="@drawable/ic_launcher_sip_call">
176                <action android:name="android.intent.action.CALL_PRIVILEGED"/>
177                <category android:name="android.intent.category.DEFAULT"/>
178                <data android:scheme="sip"/>
179            </intent-filter>
180            <intent-filter android:priority="1000">
181                <action android:name="android.intent.action.CALL_PRIVILEGED"/>
182                <category android:name="android.intent.category.DEFAULT"/>
183                <data android:scheme="voicemail"/>
184            </intent-filter>
185            <intent-filter android:priority="1000">
186                <action android:name="android.intent.action.CALL_PRIVILEGED"/>
187                <data android:mimeType="vnd.android.cursor.item/phone"/>
188                <data android:mimeType="vnd.android.cursor.item/phone_v2"/>
189                <data android:mimeType="vnd.android.cursor.item/person"/>
190            </intent-filter>
191        </activity-alias>
192
193        <!-- Works like CallActivity with CALL_EMERGENCY instead of CALL intent.
194             CALL_EMERGENCY allows calls *only* to emergency numbers. Intent-sender must have the
195             CALL_PRIVILEGED permission or the broadcast will not be processed. High priority of
196             1000 is used in all intent filters to prevent anything but the system from processing
197             this intent (b/8871505). -->
198        <!-- TODO: Is there really a notion of an emergency SIP number? If not, can
199                         that scheme be removed from this activity? -->
200        <activity-alias android:name="EmergencyCallActivity"
201             android:targetActivity=".components.UserCallActivity"
202             android:permission="android.permission.CALL_PRIVILEGED"
203             android:process=":ui">
204            <intent-filter android:priority="1000">
205                <action android:name="android.intent.action.CALL_EMERGENCY"/>
206                <category android:name="android.intent.category.DEFAULT"/>
207                <data android:scheme="tel"/>
208            </intent-filter>
209            <intent-filter android:priority="1000"
210                 android:icon="@drawable/ic_launcher_sip_call">
211                <action android:name="android.intent.action.CALL_EMERGENCY"/>
212                <category android:name="android.intent.category.DEFAULT"/>
213                <data android:scheme="sip"/>
214            </intent-filter>
215            <intent-filter android:priority="1000">
216                <action android:name="android.intent.action.CALL_EMERGENCY"/>
217                <category android:name="android.intent.category.DEFAULT"/>
218                <data android:scheme="voicemail"/>
219            </intent-filter>
220            <intent-filter android:priority="1000">
221                <action android:name="android.intent.action.CALL_EMERGENCY"/>
222                <data android:mimeType="vnd.android.cursor.item/phone"/>
223                <data android:mimeType="vnd.android.cursor.item/phone_v2"/>
224                <data android:mimeType="vnd.android.cursor.item/person"/>
225            </intent-filter>
226        </activity-alias>
227
228        <receiver android:name=".components.TelecomBroadcastReceiver"
229             android:exported="false"
230             android:process="system">
231            <intent-filter>
232                <action android:name="com.android.server.telecom.ACTION_CLEAR_MISSED_CALLS"/>
233                <action android:name="com.android.server.telecom.ACTION_CALL_BACK_FROM_NOTIFICATION"/>
234                <action android:name="com.android.server.telecom.ACTION_SEND_SMS_FROM_NOTIFICATION"/>
235                <action android:name="com.android.server.telecom.ACTION_ANSWER_FROM_NOTIFICATION"/>
236                <action android:name="com.android.server.telecom.ACTION_REJECT_FROM_NOTIFICATION"/>
237                <action android:name="com.android.server.telecom.PROCEED_WITH_CALL"/>
238                <action android:name="com.android.server.telecom.CANCEL_CALL"/>
239                <action android:name="com.android.server.telecom.PROCEED_WITH_REDIRECTED_CALL"/>
240                <action android:name="com.android.server.telecom.CANCEL_REDIRECTED_CALL"/>
241            </intent-filter>
242        </receiver>
243
244        <receiver android:name=".components.AppUninstallBroadcastReceiver"
245             android:process="system"
246             android:exported="true">
247            <intent-filter>
248                <action android:name="android.intent.action.PACKAGE_FULLY_REMOVED"/>
249                <data android:scheme="package"/>
250            </intent-filter>
251        </receiver>
252
253        <activity android:name=".RespondViaSmsSettings"
254             android:label="@string/respond_via_sms_setting_title"
255             android:configChanges="orientation|screenSize|keyboardHidden"
256             android:theme="@style/Theme.Telecom.DialerSettings"
257             android:process=":ui"
258             android:exported="true">
259            <intent-filter>
260                <action android:name="android.intent.action.MAIN"/>
261                <action android:name="android.telecom.action.SHOW_RESPOND_VIA_SMS_SETTINGS"/>
262                <category android:name="android.intent.category.DEFAULT"/>
263            </intent-filter>
264        </activity>
265
266        <activity android:name=".settings.EnableAccountPreferenceActivity"
267             android:label="@string/enable_account_preference_title"
268             android:configChanges="orientation|screenSize|keyboardHidden"
269             android:theme="@style/Theme.Telecom.DialerSettings"
270             android:process=":ui"
271             android:exported="true">
272            <intent-filter>
273                <action android:name="android.intent.action.MAIN"/>
274                <category android:name="android.intent.category.DEFAULT"/>
275            </intent-filter>
276        </activity>
277
278        <activity android:name=".components.ErrorDialogActivity"
279             android:configChanges="orientation|screenSize|keyboardHidden"
280             android:excludeFromRecents="true"
281             android:launchMode="singleInstance"
282             android:theme="@style/Theme.Telecomm.Transparent"
283             android:process=":ui">
284        </activity>
285
286        <activity android:name=".ui.ConfirmCallDialogActivity"
287             android:configChanges="orientation|screenSize|keyboardHidden"
288             android:excludeFromRecents="true"
289             android:launchMode="singleInstance"
290             android:theme="@style/Theme.Telecomm.Transparent"
291             android:process=":ui">
292        </activity>
293
294        <activity android:name=".ui.CallRedirectionTimeoutDialogActivity"
295             android:configChanges="orientation|screenSize|keyboardHidden"
296             android:excludeFromRecents="true"
297             android:launchMode="singleInstance"
298             android:theme="@style/Theme.Telecomm.Transparent"
299             android:process=":ui">
300        </activity>
301
302        <activity android:name=".ui.TelecomDeveloperMenu"
303             android:label="@string/developer_title"
304             android:exported="false"
305             android:process=":ui"/>
306
307        <service android:name=".components.BluetoothPhoneService"
308             android:singleUser="true"
309             android:process="system"
310             android:exported="true">
311            <intent-filter>
312                <action android:name="android.bluetooth.IBluetoothHeadsetPhone"/>
313            </intent-filter>
314        </service>
315
316        <service android:name=".components.TelecomService"
317             android:singleUser="true"
318             android:process="system"
319             android:exported="true">
320            <intent-filter>
321                <action android:name="android.telecom.ITelecomService"/>
322            </intent-filter>
323        </service>
324
325    </application>
326</manifest>
327