• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1<?xml version="1.0" encoding="utf-8"?>
2<!-- Copyright (C) 2016 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    xmlns:tools="http://schemas.android.com/tools"
20    package="android.ext.services"
21    android:versionCode="309999900"
22    android:versionName="2019-09"
23    coreApp="true">
24
25    <uses-permission android:name="android.permission.PROVIDE_RESOLVER_RANKER_SERVICE" />
26    <uses-permission android:name="android.permission.READ_DEVICE_CONFIG" />
27
28    <uses-permission android:name="android.permission.MONITOR_DEFAULT_SMS_PACKAGE" />
29    <uses-permission android:name="android.permission.REQUEST_NOTIFICATION_ASSISTANT_SERVICE" />
30    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
31    <uses-permission android:name="android.permission.INTERACT_ACROSS_USERS" />
32    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
33    <uses-permission android:name="android.permission.QUERY_ALL_PACKAGES" />
34    <!-- INTERNET permission is restricted to TextClassifier downloader process only -->
35    <uses-permission android:name="android.permission.INTERNET" />
36    <!-- Remove unused permissions merged from WorkManager library -->
37    <uses-permission android:name="android.permission.WAKE_LOCK" tools:node="remove" />
38    <uses-permission android:name="android.permission.FOREGROUND_SERVICE" tools:node="remove" />
39    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
40
41    <permission android:name="android.permission.INIT_EXT_SERVICES"
42        android:protectionLevel="signature"/>
43    <uses-permission android:name="android.permission.INIT_EXT_SERVICES" />
44    <application
45        android:name=".ExtServicesApplication"
46        android:label="@string/app_name"
47        android:forceQueryable="true"
48        android:supportsRtl="true">
49
50        <processes>
51            <!-- Deny INTERNET permission for all processes by default -->
52            <deny-permission android:name="android.permission.INTERNET" />
53            <process />
54            <process android:process=":modelDownloaderServiceProcess">
55                <allow-permission android:name="android.permission.INTERNET" />
56            </process>
57        </processes>
58
59        <service android:name=".storage.CacheQuotaServiceImpl"
60             android:exported="true"
61             android:directBootAware="true"
62             android:permission="android.permission.BIND_CACHE_QUOTA_SERVICE">
63            <intent-filter>
64                <action android:name="android.app.usage.CacheQuotaService" />
65            </intent-filter>
66        </service>
67
68        <service android:name=".resolver.LRResolverRankerService"
69                 android:exported="true"
70                 android:directBootAware="true"
71                 android:permission="android.permission.BIND_RESOLVER_RANKER_SERVICE">
72            <intent-filter android:priority="-1">
73                <action android:name="android.service.resolver.ResolverRankerService" />
74            </intent-filter>
75        </service>
76
77        <service android:name=".notification.Assistant"
78                 android:label="@string/notification_assistant"
79                 android:directBootAware="true"
80                 android:permission="android.permission.BIND_NOTIFICATION_ASSISTANT_SERVICE"
81                 android:exported="true">
82            <intent-filter>
83                <action android:name="android.service.notification.NotificationAssistantService" />
84            </intent-filter>
85        </service>
86
87        <service android:name=".autofill.AutofillFieldClassificationServiceImpl"
88             android:exported="true"
89             android:directBootAware="true"
90             android:permission="android.permission.BIND_AUTOFILL_FIELD_CLASSIFICATION_SERVICE">
91            <intent-filter>
92                <action android:name="android.service.autofill.AutofillFieldClassificationService" />
93            </intent-filter>
94            <meta-data
95                android:name="android.autofill.field_classification.default_algorithm"
96                android:resource="@string/autofill_field_classification_default_algorithm" />
97            <meta-data
98                android:name="android.autofill.field_classification.available_algorithms"
99                android:resource="@array/autofill_field_classification_available_algorithms" />
100        </service>
101
102        <service android:name=".watchdog.ExplicitHealthCheckServiceImpl"
103                 android:exported="true"
104                 android:directBootAware="true"
105                 android:permission="android.permission.BIND_EXPLICIT_HEALTH_CHECK_SERVICE">
106            <intent-filter>
107                <action android:name="android.service.watchdog.ExplicitHealthCheckService" />
108            </intent-filter>
109        </service>
110
111        <activity android:name="com.android.textclassifier.notification.CopyCodeActivity"
112                  android:exported="false"
113                  android:directBootAware="true"
114                  android:theme="@android:style/Theme.NoDisplay"/>
115
116        <!-- DirectBootAware is disabled below as it shouldn't be used if the device is locked -->
117        <service
118            android:name="com.android.textclassifier.DefaultTextClassifierService"
119            android:directBootAware="false"
120            android:exported="true"
121            android:permission="android.permission.BIND_TEXTCLASSIFIER_SERVICE">
122            <intent-filter>
123                <action android:name="android.service.textclassifier.TextClassifierService"/>
124            </intent-filter>
125        </service>
126
127        <service android:name="com.android.textclassifier.downloader.ModelDownloaderService"
128                 android:exported="false"
129                 android:directBootAware="false"
130                 android:process=":modelDownloaderServiceProcess">
131        </service>
132
133        <service android:name=".autofill.InlineSuggestionRenderServiceImpl"
134                 android:exported="true"
135                 android:directBootAware="true"
136                 android:permission="android.permission.BIND_INLINE_SUGGESTION_RENDER_SERVICE">
137            <intent-filter>
138                <action android:name="android.service.autofill.InlineSuggestionRenderService" />
139            </intent-filter>
140        </service>
141
142        <service android:name=".displayhash.DisplayHashingServiceImpl"
143            android:exported="true"
144            android:directBootAware="true"
145            android:permission="android.permission.BIND_DISPLAY_HASHING_SERVICE">
146            <intent-filter>
147                <action android:name="android.service.displayhash.DisplayHashingService" />
148            </intent-filter>
149        </service>
150
151        <!-- Remove the default WorkManager and Startup initializers and use on-demand
152             initialization instead. This gives us more control on when initialization
153             happens, e.g. when the user is unlocked.
154        -->
155        <provider
156            android:name="androidx.work.impl.WorkManagerInitializer"
157            android:authorities="${applicationId}.workmanager-init"
158            tools:node="remove" />
159        <provider
160            android:name="androidx.startup.InitializationProvider"
161            android:authorities="${applicationId}.androidx-startup"
162            tools:node="remove" />
163
164        <!-- Boot completed receiver sends privileged startup broadcast. -->
165        <receiver android:name=".common.BootCompletedReceiver"
166                  android:enabled="@bool/enableBootCompletedReceiver"
167                  android:exported="true">
168            <intent-filter>
169                <action android:name="android.intent.action.BOOT_COMPLETED"/>
170            </intent-filter>
171        </receiver>
172    </application>
173</manifest>
174