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