AndroidManifest.xml revision 4b0a265171f9b1f4d4513224f0129737c0fd6552
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    <uses-sdk
24        android:minSdkVersion="23"
25        android:targetSdkVersion="23" />
26
27
28    <protected-broadcast android:name="android.intent.action.SHOW_MISSED_CALLS_NOTIFICATION" />
29
30    <!-- Prevents the activity manager from delaying any activity-start
31         requests by this package, including requests immediately after
32         the user presses "home". -->
33    <uses-permission android:name="android.permission.BIND_CONNECTION_SERVICE" />
34    <uses-permission android:name="android.permission.BIND_INCALL_SERVICE" />
35    <uses-permission android:name="android.permission.BLUETOOTH" />
36    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
37    <uses-permission android:name="android.permission.BROADCAST_CALLLOG_INFO" />
38    <uses-permission android:name="android.permission.BROADCAST_PHONE_ACCOUNT_REGISTRATION" />
39    <uses-permission android:name="android.permission.CALL_PRIVILEGED" />
40    <uses-permission android:name="android.permission.INTERACT_ACROSS_USERS" />
41    <uses-permission android:name="android.permission.INTERACT_ACROSS_USERS_FULL" />
42    <uses-permission android:name="android.permission.MANAGE_USERS" />
43    <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
44    <uses-permission android:name="android.permission.MODIFY_PHONE_STATE" />
45    <uses-permission android:name="android.permission.READ_CALL_LOG" />
46    <uses-permission android:name="android.permission.STOP_APP_SWITCHES" />
47    <uses-permission android:name="android.permission.VIBRATE" />
48    <uses-permission android:name="android.permission.WRITE_CALL_LOG" />
49
50    <permission
51            android:name="android.permission.BROADCAST_CALLLOG_INFO"
52            android:label="Broadcast the call type/duration information"
53            android:protectionLevel="signature|system"/>
54
55    <permission
56            android:name="android.permission.PROCESS_CALLLOG_INFO"
57            android:label="Register to handle the broadcasted call type/duration information"
58            android:protectionLevel="signature|system"/>
59
60    <permission
61            android:name="android.permission.BROADCAST_PHONE_ACCOUNT_REGISTRATION"
62            android:label="Broadcast phone account registration"
63            android:protectionLevel="signature|system"/>
64
65    <permission
66            android:name="android.permission.PROCESS_PHONE_ACCOUNT_REGISTRATION"
67            android:label="Process phone account registration"
68            android:protectionLevel="signature|system"/>
69
70    <!-- Declare which SDK level this application was built against. This is needed so that IDEs
71         can check for incompatible APIs. -->
72    <uses-sdk android:minSdkVersion="19" />
73
74    <application android:label="@string/telecommAppLabel"
75            android:icon="@mipmap/ic_launcher_phone"
76            android:allowBackup="false"
77            android:supportsRtl="true"
78            android:process="system"
79            android:usesCleartextTraffic="false">
80
81        <!-- CALL vs CALL_PRIVILEGED vs CALL_EMERGENCY
82             We have three different intents through which a call can be initiated each with its
83             own behavior.
84             1) CALL - Expected from any third party app with CALL_PHONE permission. Through this
85             intent, an app can call any number except emergency numbers.
86             2) CALL_PRIVILEGED - Expected from the dialer app and requires CALL_PRIVILEGED
87             permission, which is only held by the system dialer and the emergency dialer at the
88             time of this writing. Through this intent, an app can call any number including
89             emergency numbers.
90             3) CALL_EMERGENCY - Expected from the emergency dialer app and requires CALL_PRIVILEGED
91             permission. Through this intent, an app can call *only* emergency numbers. -->
92
93        <!-- Activity that starts the outgoing call process by listening to CALL intent which
94             contain contact information in the intent's data. CallActivity handles any data
95             URL with the schemes "tel", "sip", and "voicemail". It also handles URLs linked to
96             contacts provider entries. Any data not fitting the schema described is ignored. -->
97        <activity android:name=".components.UserCallActivity"
98                android:label="@string/userCallActivityLabel"
99                android:theme="@style/Theme.Telecomm.Transparent"
100                android:permission="android.permission.CALL_PHONE"
101                android:excludeFromRecents="true"
102                android:process=":ui">
103            <!-- CALL action intent filters for the various ways of initiating an outgoing call. -->
104            <intent-filter>
105                <action android:name="android.intent.action.CALL" />
106                <category android:name="android.intent.category.DEFAULT" />
107                <data android:scheme="tel" />
108            </intent-filter>
109            <!-- Specify an icon for SIP calls so that quick contacts widget shows a special SIP
110                 icon for calls to SIP addresses. -->
111            <intent-filter android:icon="@drawable/ic_launcher_sip_call">
112                <action android:name="android.intent.action.CALL" />
113                <category android:name="android.intent.category.DEFAULT" />
114                <data android:scheme="sip" />
115            </intent-filter>
116            <intent-filter>
117                <action android:name="android.intent.action.CALL" />
118                <category android:name="android.intent.category.DEFAULT" />
119                <data android:scheme="voicemail" />
120            </intent-filter>
121            <!-- Omit default category below so that all Intents sent to this filter must be
122                 explicit. -->
123            <intent-filter>
124                <action android:name="android.intent.action.CALL" />
125                <data android:mimeType="vnd.android.cursor.item/phone" />
126                <data android:mimeType="vnd.android.cursor.item/phone_v2" />
127                <data android:mimeType="vnd.android.cursor.item/person" />
128            </intent-filter>
129        </activity>
130
131        <!-- Works like CallActivity with CALL_PRIVILEGED instead of CALL intent.
132             CALL_PRIVILEGED allows calls to emergency numbers unlike CALL which disallows it.
133             Intent-sender must have the CALL_PRIVILEGED permission or the broadcast will not be
134             processed. High priority of 1000 is used in all intent filters to prevent anything but
135             the system from processing this intent (b/8871505). -->
136        <activity-alias android:name="PrivilegedCallActivity"
137                android:targetActivity=".components.UserCallActivity"
138                android:permission="android.permission.CALL_PRIVILEGED"
139                android:process=":ui">
140            <intent-filter android:priority="1000">
141                <action android:name="android.intent.action.CALL_PRIVILEGED" />
142                <category android:name="android.intent.category.DEFAULT" />
143                <data android:scheme="tel" />
144            </intent-filter>
145            <intent-filter android:priority="1000"
146                    android:icon="@drawable/ic_launcher_sip_call">
147                <action android:name="android.intent.action.CALL_PRIVILEGED" />
148                <category android:name="android.intent.category.DEFAULT" />
149                <data android:scheme="sip" />
150            </intent-filter>
151            <intent-filter android:priority="1000">
152                <action android:name="android.intent.action.CALL_PRIVILEGED" />
153                <category android:name="android.intent.category.DEFAULT" />
154                <data android:scheme="voicemail" />
155            </intent-filter>
156            <intent-filter android:priority="1000">
157                <action android:name="android.intent.action.CALL_PRIVILEGED" />
158                <data android:mimeType="vnd.android.cursor.item/phone" />
159                <data android:mimeType="vnd.android.cursor.item/phone_v2" />
160                <data android:mimeType="vnd.android.cursor.item/person" />
161            </intent-filter>
162        </activity-alias>
163
164        <!-- Works like CallActivity with CALL_EMERGENCY instead of CALL intent.
165             CALL_EMERGENCY allows calls *only* to emergency numbers. Intent-sender must have the
166             CALL_PRIVILEGED permission or the broadcast will not be processed. High priority of
167             1000 is used in all intent filters to prevent anything but the system from processing
168             this intent (b/8871505). -->
169        <!-- TODO: Is there really a notion of an emergency SIP number? If not, can
170             that scheme be removed from this activity? -->
171        <activity-alias android:name="EmergencyCallActivity"
172                android:targetActivity=".components.UserCallActivity"
173                android:permission="android.permission.CALL_PRIVILEGED"
174                android:process=":ui">
175            <intent-filter android:priority="1000">
176                <action android:name="android.intent.action.CALL_EMERGENCY" />
177                <category android:name="android.intent.category.DEFAULT" />
178                <data android:scheme="tel" />
179            </intent-filter>
180            <intent-filter android:priority="1000"
181                    android:icon="@drawable/ic_launcher_sip_call">
182                <action android:name="android.intent.action.CALL_EMERGENCY" />
183                <category android:name="android.intent.category.DEFAULT" />
184                <data android:scheme="sip" />
185            </intent-filter>
186            <intent-filter android:priority="1000">
187                <action android:name="android.intent.action.CALL_EMERGENCY" />
188                <category android:name="android.intent.category.DEFAULT" />
189                <data android:scheme="voicemail" />
190            </intent-filter>
191            <intent-filter android:priority="1000">
192                <action android:name="android.intent.action.CALL_EMERGENCY" />
193                <data android:mimeType="vnd.android.cursor.item/phone" />
194                <data android:mimeType="vnd.android.cursor.item/phone_v2" />
195                <data android:mimeType="vnd.android.cursor.item/person" />
196            </intent-filter>
197        </activity-alias>
198
199        <receiver android:name=".components.TelecomBroadcastReceiver" android:exported="false"
200                android:process="system">
201            <intent-filter>
202                <action android:name="com.android.server.telecom.ACTION_CLEAR_MISSED_CALLS" />
203                <action android:name="com.android.server.telecom.ACTION_CALL_BACK_FROM_NOTIFICATION" />
204                <action android:name="com.android.server.telecom.ACTION_SEND_SMS_FROM_NOTIFICATION" />
205            </intent-filter>
206        </receiver>
207
208        <receiver android:name=".components.PhoneAccountBroadcastReceiver"
209                android:process="system">
210            <intent-filter>
211                <action android:name="android.intent.action.PACKAGE_FULLY_REMOVED" />
212                <data android:scheme="package" />
213            </intent-filter>
214        </receiver>
215
216        <activity android:name=".RespondViaSmsSettings"
217                  android:label="@string/respond_via_sms_setting_title"
218                  android:configChanges="orientation|screenSize|keyboardHidden"
219                  android:theme="@style/Theme.Telecom.DialerSettings"
220                  android:process=":ui">
221            <intent-filter>
222                <action android:name="android.intent.action.MAIN" />
223                <action android:name="android.telecom.action.SHOW_RESPOND_VIA_SMS_SETTINGS" />
224                <category android:name="android.intent.category.DEFAULT" />
225            </intent-filter>
226        </activity>
227
228        <activity android:name=".settings.EnableAccountPreferenceActivity"
229                  android:label="@string/enable_account_preference_title"
230                  android:configChanges="orientation|screenSize|keyboardHidden"
231                  android:theme="@style/Theme.Telecom.DialerSettings"
232                  android:process=":ui">
233            <intent-filter>
234                <action android:name="android.intent.action.MAIN" />
235                <category android:name="android.intent.category.DEFAULT" />
236            </intent-filter>
237        </activity>
238
239        <activity android:name=".components.ErrorDialogActivity"
240                android:configChanges="orientation|screenSize|keyboardHidden"
241                android:excludeFromRecents="true"
242                android:launchMode="singleInstance"
243                android:theme="@style/Theme.Telecomm.Transparent"
244                android:process=":ui">
245        </activity>
246
247        <activity android:name=".components.ChangeDefaultDialerDialog"
248                  android:label="@string/change_default_dialer_dialog_title"
249                  android:excludeFromRecents="true"
250                  android:theme="@*android:style/Theme.Material.Light.Dialog.Alert"
251                  android:priority="1000"
252                  android:process=":ui" >
253            <intent-filter>
254                <action android:name="android.telecom.action.CHANGE_DEFAULT_DIALER" />
255                <category android:name="android.intent.category.DEFAULT" />
256            </intent-filter>
257        </activity>
258
259        <receiver android:name=".components.PrimaryCallReceiver"
260                android:exported="true"
261                android:permission="android.permission.MODIFY_PHONE_STATE"
262                android:process="system">
263        </receiver>
264
265        <service android:name=".components.BluetoothPhoneService"
266                android:singleUser="true"
267                android:process="system">
268            <intent-filter>
269                <action android:name="android.bluetooth.IBluetoothHeadsetPhone" />
270            </intent-filter>
271        </service>
272
273        <service android:name=".components.TelecomService"
274                android:singleUser="true"
275                android:process="system">
276            <intent-filter>
277                <action android:name="android.telecom.ITelecomService" />
278            </intent-filter>
279        </service>
280
281    </application>
282</manifest>
283