1<?xml version="1.0" encoding="utf-8"?>
2<!--
3/* Copyright 2006, The Android Open Source Project
4**
5** Licensed under the Apache License, Version 2.0 (the "License");
6** you may not use this file except in compliance with the License.
7** You may obtain a copy of the License at
8**
9**     http://www.apache.org/licenses/LICENSE-2.0
10**
11** Unless required by applicable law or agreed to in writing, software
12** distributed under the License is distributed on an "AS IS" BASIS,
13** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14** See the License for the specific language governing permissions and
15** limitations under the License.
16*/
17-->
18<resources>
19    <!-- **************************************************************** -->
20    <!-- These are the attributes used in AndroidManifest.xml. -->
21    <!-- **************************************************************** -->
22    <eat-comment />
23
24    <!-- The overall theme to use for an activity.  Use with either the
25         application tag (to supply a default theme for all activities) or
26         the activity tag (to supply a specific theme for that activity).
27
28         <p>This automatically sets
29         your activity's Context to use this theme, and may also be used
30         for "starting" animations prior to the activity being launched (to
31         better match what the activity actually looks like).  It is a reference
32         to a style resource defining the theme.  If not set, the default
33         system theme will be used. -->
34    <attr name="theme" format="reference" />
35
36    <!-- A user-legible name for the given item.  Use with the
37         application tag (to supply a default label for all application
38         components), or with the activity, receiver, service, or instrumentation
39         tag (to supply a specific label for that component).  It may also be
40         used with the intent-filter tag to supply a label to show to the
41         user when an activity is being selected based on a particular Intent.
42
43         <p>The given label will be used wherever the user sees information
44         about its associated component; for example, as the name of a
45         main activity that is displayed in the launcher.  You should
46         generally set this to a reference to a string resource, so that
47         it can be localized, however it is also allowed to supply a plain
48         string for quick and dirty programming. -->
49    <attr name="label" format="reference|string" />
50
51    <!-- A Drawable resource providing a graphical representation of its
52         associated item.  Use with the
53         application tag (to supply a default icon for all application
54         components), or with the activity, receiver, service, or instrumentation
55         tag (to supply a specific icon for that component).  It may also be
56         used with the intent-filter tag to supply an icon to show to the
57         user when an activity is being selected based on a particular Intent.
58
59         <p>The given icon will be used to display to the user a graphical
60         representation of its associated component; for example, as the icon
61         for main activity that is displayed in the launcher.  This must be
62         a reference to a Drawable resource containing the image definition. -->
63    <attr name="icon" format="reference" />
64
65    <!-- A Drawable resource providing a graphical representation of its
66         associated item.  Use with the
67         application tag (to supply a default round icon for all application
68         components), or with the activity, receiver, service, or instrumentation
69         tag (to supply a specific round icon for that component).  It may also be
70         used with the intent-filter tag to supply a round icon to show to the
71         user when an activity is being selected based on a particular Intent.
72
73         <p>The given round icon will be used to display to the user a graphical
74         representation of its associated component; for example, as the round icon
75         for main activity that is displayed in the launcher.  This must be
76         a reference to a Drawable resource containing the image definition. -->
77    <attr name="roundIcon" format="reference" />
78
79    <!-- A Drawable resource providing an extended graphical banner for its
80         associated item. Use with the application tag (to supply a default
81         banner for all application activities), or with the activity, tag to
82         supply a banner for a specific activity.
83
84         <p>The given banner will be used to display to the user a graphical
85         representation of an activity in the Leanback application launcher.
86         Since banners are displayed only in the Leanback launcher, they should
87         only be used with activities (and applications) that support Leanback
88         mode. These are activities that handle Intents of category
89         {@link android.content.Intent#CATEGORY_LEANBACK_LAUNCHER
90         Intent.CATEGORY_LEANBACK_LAUNCHER}.
91         <p>This must be a reference to a Drawable resource containing the image definition. -->
92    <attr name="banner" format="reference" />
93
94    <!-- A Drawable resource providing an extended graphical logo for its
95         associated item. Use with the application tag (to supply a default
96         logo for all application components), or with the activity, receiver,
97         service, or instrumentation tag (to supply a specific logo for that
98         component). It may also be used with the intent-filter tag to supply
99         a logo to show to the user when an activity is being selected based
100         on a particular Intent.
101
102         <p>The given logo will be used to display to the user a graphical
103         representation of its associated component; for example as the
104         header in the Action Bar. The primary differences between an icon
105         and a logo are that logos are often wider and more detailed, and are
106         used without an accompanying text caption. This must be a reference
107         to a Drawable resource containing the image definition. -->
108    <attr name="logo" format="reference" />
109
110    <!-- Name of the activity to be launched to manage application's space on
111         device. The specified activity gets automatically launched when the
112         application's space needs to be managed and is usually invoked
113         through user actions. Applications can thus provide their own custom
114         behavior for managing space for various scenarios like out of memory
115         conditions. This is an optional attribute and
116         applications can choose not to specify a default activity to
117         manage space. -->
118    <attr name="manageSpaceActivity" format="string" />
119
120    <!-- Option to let applications specify that user data can/cannot be
121         cleared. This flag is turned on by default.
122         <p>Starting from API level 29 this flag only controls if the user can
123         clear app data from Settings. To control clearing the data after a
124         failed restore use allowClearUserDataOnFailedRestore flag.
125         <p><em>This attribute is usable only by applications
126         included in the system image. Third-party apps cannot use it.</em> -->
127    <attr name="allowClearUserData" format="boolean" />
128
129    <!-- Option to indicate this application is only for testing purposes.
130         For example, it may expose functionality or data outside of itself
131         that would cause a security hole, but is useful for testing.  This
132         kind of application can not be installed without the
133         INSTALL_ALLOW_TEST flag, which means only through adb install.  -->
134    <attr name="testOnly" format="boolean" />
135
136    <!-- A unique name for the given item.  This must use a Java-style naming
137         convention to ensure the name is unique, for example
138         "com.mycompany.MyName". -->
139    <attr name="name" format="string" />
140
141    <!-- Specify a permission that a client is required to have in order to
142    	 use the associated object.  If the client does not hold the named
143    	 permission, its request will fail.  See the
144         <a href="{@docRoot}guide/topics/security/security.html">Security and Permissions</a>
145         document for more information on permissions. -->
146    <attr name="permission" format="string" />
147
148    <!-- A specific {@link android.R.attr#permission} name for read-only
149         access to a {@link android.content.ContentProvider}.  See the
150         <a href="{@docRoot}guide/topics/security/security.html">Security and Permissions</a>
151         document for more information on permissions. -->
152    <attr name="readPermission" format="string" />
153
154    <!-- A specific {@link android.R.attr#permission} name for write
155         access to a {@link android.content.ContentProvider}.  See the
156         <a href="{@docRoot}guide/topics/security/security.html">Security and Permissions</a>
157         document for more information on permissions. -->
158    <attr name="writePermission" format="string" />
159
160    <!-- If true, the {@link android.content.Context#grantUriPermission
161         Context.grantUriPermission} or corresponding Intent flags can
162         be used to allow others to access specific URIs in the content
163         provider, even if they do not have an explicit read or write
164         permission.  If you are supporting this feature, you must be
165         sure to call {@link android.content.Context#revokeUriPermission
166         Context.revokeUriPermission} when URIs are deleted from your
167         provider.-->
168    <attr name="grantUriPermissions" format="boolean" />
169
170    <!-- If true, the system will always create URI permission grants
171         in the cases where {@link android.content.Intent#FLAG_GRANT_READ_URI_PERMISSION}
172         or {@link android.content.Intent#FLAG_GRANT_WRITE_URI_PERMISSION} would apply.
173         This is useful for a content provider that dynamically enforces permissions
174         on calls in to the provider, instead of through the manifest: the system
175         needs to know that it should always apply permission grants, even if it
176         looks like the target of the grant would already have access to the URI. -->
177    <attr name="forceUriPermissions" format="boolean" />
178
179    <!-- Characterizes the potential risk implied in a permission and
180         indicates the procedure the system should follow when determining
181         whether to grant the permission to an application requesting it. {@link
182         android.Manifest.permission Standard permissions} have a predefined and
183         permanent protectionLevel. If you are creating a custom permission in an
184         application, you can define a protectionLevel attribute with one of the
185         values listed below. If no protectionLevel is defined for a custom
186         permission, the system assigns the default ("normal").
187         <p>Each protection level consists of a base permission type and zero or
188         more flags. Use the following functions to extract those.
189         <pre>
190         int basePermissionType = permissionInfo.getProtection();
191         int permissionFlags = permissionInfo.getProtectionFlags();
192         </pre>
193         -->
194    <attr name="protectionLevel">
195        <!-- <strong>Base permission type</strong>: a lower-risk permission that gives
196             an application access to isolated application-level features, with minimal
197             risk to other applications, the system, or the user. The system
198             automatically grants this type of permission to a requesting application at
199             installation, without asking for the user's explicit approval (though the
200             user always has the option to review these permissions before installing). -->
201        <flag name="normal" value="0" />
202        <!-- <strong>Base permission type</strong>: a higher-risk permission that
203             would give a requesting application access to private user data or
204             control over the device that can negatively impact the user.  Because
205             this type of permission introduces potential risk, the system may
206             not automatically grant it to the requesting application.  For example,
207             any dangerous permissions requested by an application may be displayed
208             to the user and require confirmation before proceeding, or some other
209             approach may be taken to avoid the user automatically allowing
210             the use of such facilities.  -->
211        <flag name="dangerous" value="1" />
212        <!-- <strong>Base permission type</strong>: a permission that the system is
213             to grant only if the requesting application is signed with the same
214             certificate as the application that declared the permission. If the
215             certificates match, the system automatically grants the permission
216             without notifying the user or asking for the user's explicit approval. -->
217        <flag name="signature" value="2" />
218        <!-- Old synonym for "signature|privileged". Deprecated in API level 23.
219             Base permission type: a permission that the system is to grant only
220             to packages in the Android system image <em>or</em> that are signed
221             with the same certificates. Please avoid using this option, as the
222             signature protection level should be sufficient for most needs and
223             works regardless of exactly where applications are installed.  This
224             permission is used for certain special situations where multiple
225             vendors have applications built in to a system image which need
226             to share specific features explicitly because they are being built
227             together. -->
228        <flag name="signatureOrSystem" value="3" />
229        <!-- Additional flag from base permission type: this permission can also
230             be granted to any applications installed as privileged apps on the system image.
231             Please avoid using this option, as the
232             signature protection level should be sufficient for most needs and
233             works regardless of exactly where applications are installed.  This
234             permission flag is used for certain special situations where multiple
235             vendors have applications built in to a system image which need
236             to share specific features explicitly because they are being built
237             together. -->
238        <flag name="privileged" value="0x10" />
239        <!-- Old synonym for "privileged". Deprecated in API level 23. -->
240        <flag name="system" value="0x10" />
241        <!-- Additional flag from base permission type: this permission can also
242             (optionally) be granted to development applications. -->
243        <flag name="development" value="0x20" />
244        <!-- Additional flag from base permission type: this permission is closely
245             associated with an app op for controlling access. -->
246        <flag name="appop" value="0x40" />
247        <!-- Additional flag from base permission type: this permission can be automatically
248             granted to apps that target API levels below
249             {@link android.os.Build.VERSION_CODES#M} (before runtime permissions
250             were introduced). -->
251        <flag name="pre23" value="0x80" />
252        <!-- Additional flag from base permission type: this permission can be automatically
253            granted to system apps that install packages. -->
254        <flag name="installer" value="0x100" />
255        <!-- Additional flag from base permission type: this permission can be automatically
256            granted to system apps that verify packages. -->
257        <flag name="verifier" value="0x200" />
258        <!-- Additional flag from base permission type: this permission can be automatically
259            granted any application pre-installed on the system image (not just privileged
260            apps). -->
261        <flag name="preinstalled" value="0x400" />
262        <!-- Additional flag from base permission type: this permission can be automatically
263            granted to the setup wizard app -->
264        <flag name="setup" value="0x800" />
265        <!-- Additional flag from base permission type: this permission can be granted to instant
266             apps -->
267        <flag name="instant" value="0x1000" />
268        <!-- Additional flag from base permission type: this permission can only be granted to apps
269             that target runtime permissions ({@link android.os.Build.VERSION_CODES#M} and above)
270             -->
271        <flag name="runtime" value="0x2000" />
272        <!-- Additional flag from base permission type: this permission can be granted only
273             if its protection level is signature, the requesting app resides on the OEM partition,
274             and the OEM has white-listed the app to receive this permission by the OEM.
275         -->
276        <flag name="oem" value="0x4000" />
277        <!-- Additional flag from base permission type: this permission can be granted to
278             privileged apps in vendor partition. -->
279        <flag name="vendorPrivileged" value="0x8000" />
280        <!-- Additional flag from base permission type: this permission can be automatically
281            granted to the system default text classifier -->
282        <flag name="textClassifier" value="0x10000" />
283        <!-- Additional flag from base permission type: this permission will be granted to the
284             wellbeing app, as defined by the OEM. -->
285        <flag name="wellbeing" value="0x20000" />
286        <!-- Additional flag from base permission type: this permission can be automatically
287            granted to the document manager -->
288        <flag name="documenter" value="0x40000" />
289        <!-- Additional flag from base permission type: this permission automatically
290            granted to device configurator -->
291        <flag name="configurator" value="0x80000" />
292        <!-- Additional flag from base permission type: this permission designates the app
293            that will approve the sharing of incident reports. -->
294        <flag name="incidentReportApprover" value="0x100000" />
295        <!-- Additional flag from base permission type: this permission can be automatically
296            granted to the system app predictor -->
297        <flag name="appPredictor" value="0x200000" />
298        <!-- Additional flag from base permission type: this permission can be automatically
299            granted to the system telephony apps -->
300        <flag name="telephony" value="0x400000" />
301    </attr>
302
303    <!-- Flags indicating more context for a permission group. -->
304    <attr name="permissionGroupFlags">
305        <!-- Set to indicate that this permission group contains permissions
306             protecting access to some information that is considered
307             personal to the user (such as contacts, e-mails, etc). -->
308        <flag name="personalInfo" value="0x0001" />
309    </attr>
310
311    <!-- Flags indicating more context for a permission. -->
312    <attr name="permissionFlags">
313        <!-- Set to indicate that this permission allows an operation that
314             may cost the user money.  Such permissions may be highlighted
315             when shown to the user with this additional information.  -->
316        <flag name="costsMoney" value="0x1" />
317        <!-- Additional flag from base permission type: this permission has been
318             removed and it is no longer enforced. It shouldn't be shown in the
319             UI. Removed permissions are kept as normal permissions for backwards
320             compatibility as apps may be checking them before calling an API.
321        -->
322        <flag name="removed" value="0x2" />
323        <!-- This permission is restricted by the platform and it would be
324             grantable only to apps that meet special criteria per platform
325             policy.
326        -->
327        <flag name="hardRestricted" value="0x4" />
328        <!-- This permission is restricted by the platform and it would be
329             grantable in its full form to apps that meet special criteria
330             per platform policy. Otherwise, a weaker form of the permission
331             would be granted. The weak grant depends on the permission.
332             <p>What weak grant means is described in the documentation of
333             the permissions.
334        -->
335        <flag name="softRestricted" value="0x8" />
336        <!-- This permission is restricted immutably which means that its
337             restriction state may be specified only on the first install of
338             the app and will stay in this initial whitelist state until
339             the app is uninstalled.
340        -->
341        <flag name="immutablyRestricted" value="0x10" />
342    </attr>
343
344    <!-- Specified the name of a group that this permission is associated
345         with.  The group must have been defined with the
346         {@link android.R.styleable#AndroidManifestPermissionGroup permission-group} tag. -->
347    <attr name="permissionGroup" format="string" />
348
349    <!-- Specify the name of a user ID that will be shared between multiple
350         packages.  By default, each package gets its own unique user-id.
351         By setting this value on two or more packages, each of these packages
352         will be given a single shared user ID, so they can for example run
353         in the same process.  Note that for them to actually get the same
354         user ID, they must also be signed with the same signature.
355         @deprecated Shared user IDs cause non-deterministic behavior within the
356         package manager. As such, its use is strongly discouraged and may be
357         removed in a future version of Android. Instead, apps should use proper
358         communication mechanisms, such as services and content providers,
359         to facilitate interoperability between shared components. -->
360    <attr name="sharedUserId" format="string" />
361
362    <!-- Specify a label for the shared user UID of this package.  This is
363         only used if you have also used android:sharedUserId.  This must
364         be a reference to a string resource; it can not be an explicit
365         string.
366         @deprecated There is no replacement for this attribute.
367         {@link android.R.attr#sharedUserId} has been deprecated making
368         this attribute unnecessary. -->
369    <attr name="sharedUserLabel" format="reference" />
370
371    <!-- Internal version code.  This is the number used to determine whether
372         one version is more recent than another: it has no other meaning than
373         that higher numbers are more recent.  You could use this number to
374         encode a "x.y" in the lower and upper 16 bits, make it a build
375         number, simply increase it by one each time a new version is
376         released, or define it however else you want, as long as each
377         successive version has a higher number.  This is not a version
378         number generally shown to the user, that is usually supplied
379         with {@link android.R.attr#versionName}.  When an app is delivered
380         as multiple split APKs, each APK must have the exact same versionCode. -->
381    <attr name="versionCode" format="integer" />
382
383    <!-- Internal major version code.  This is essentially additional high bits
384         for the base version code; it has no other meaning than
385         that higher numbers are more recent.  This is not a version
386         number generally shown to the user, that is usually supplied
387         with {@link android.R.attr#versionName}. -->
388    <attr name="versionCodeMajor" format="integer" />
389
390    <!-- Internal revision code.  This number is the number used to determine
391         whether one APK is more recent than another: it has no other meaning
392         than that higher numbers are more recent.  This value is only meaningful
393         when the two {@link android.R.attr#versionCode} values are already
394         identical.  When an app is delivered as multiple split APKs, each
395         APK may have a different revisionCode value. -->
396    <attr name="revisionCode" format="integer" />
397
398    <!-- The text shown to the user to indicate the version they have.  This
399         is used for no other purpose than display to the user; the actual
400         significant version number is given by {@link android.R.attr#versionCode}. -->
401    <attr name="versionName" format="string" />
402
403    <!-- Flag to control special persistent mode of an application.  This should
404         not normally be used by applications; it requires that the system keep
405         your application running at all times. -->
406    <attr name="persistent" format="boolean" />
407
408    <!-- If set, the "persistent" attribute will only be honored if the feature
409         specified here is present on the device. -->
410    <attr name="persistentWhenFeatureAvailable" format="string" />
411
412    <!-- Flag to specify if this application needs to be present for all users. Only pre-installed
413         applications can request this feature. Default value is false. -->
414    <attr name="requiredForAllUsers" format="boolean" />
415
416    <!-- Flag indicating whether the application can be debugged, even when
417         running on a device that is running in user mode. -->
418    <attr name="debuggable" format="boolean" />
419
420    <!-- Flag indicating whether the application requests the VM to operate in
421         the safe mode.  -->
422    <attr name="vmSafeMode" format="boolean" />
423
424    <!-- <p>Flag indicating whether the application's rendering should be hardware
425         accelerated if possible. This flag is turned on by default for applications
426         that are targeting {@link android.os.Build.VERSION_CODES#ICE_CREAM_SANDWICH}
427         or later.</p>
428         <p>This flag can be set on the application and any activity declared
429         in the manifest. When enabled for the application, each activity is
430         automatically assumed to be hardware accelerated. This flag can be
431         overridden in the activity tags, either turning it off (if on for the
432         application) or on (if off for the application.)</p>
433         <p>When this flag is turned on for an activity (either directly or via
434         the application tag), every window created from the activity, including
435         the activity's own window, will be hardware accelerated, if possible.</p>
436         <p>Please refer to the documentation of
437         {@link android.view.WindowManager.LayoutParams#FLAG_HARDWARE_ACCELERATED}
438         for more information on how to control this flag programmatically.</p> -->
439    <attr name="hardwareAccelerated" format="boolean" />
440
441    <!-- Flag indicating whether the given application component is available
442         to other applications.  If false, it can only be accessed by
443         applications with its same user id (which usually means only by
444         code in its own package).  If true, it can be invoked by external
445         entities, though which ones can do so may be controlled through
446         permissions.  The default value is false for activity, receiver,
447         and service components that do not specify any intent filters; it
448         is true for activity, receiver, and service components that do
449         have intent filters (implying they expect to be invoked by others
450         who do not know their particular component name) and for all
451         content providers. -->
452    <attr name="exported" format="boolean" />
453
454    <!-- A boolean flag used to indicate if an application is a Game or not.
455         <p>This information can be used by the system to group together
456         applications that are classified as games, and display them separately
457         from the other applications. -->
458    <attr name="isGame" format="boolean" />
459
460    <!-- If set to true, a single instance of this component will run for
461         all users.  That instance will run as user 0, the default/primary
462         user.  When the app running is in processes for other users and interacts
463         with this component (by binding to a service for example) those processes will
464         always interact with the instance running for user 0.  Enabling
465         single user mode forces "exported" of the component to be false, to
466         help avoid introducing multi-user security bugs.  This feature is only
467         available to applications built in to the system image; you must hold the
468         permission INTERACT_ACROSS_USERS in order
469         to use this feature.  This flag can only be used with services,
470         receivers, and providers; it can not be used with activities. -->
471    <attr name="singleUser" format="boolean" />
472
473    <!-- Specify a specific process that the associated code is to run in.
474         Use with the application tag (to supply a default process for all
475         application components), or with the activity, receiver, service,
476         or provider tag (to supply a specific icon for that component).
477
478         <p>Application components are normally run in a single process that
479         is created for the entire application.  You can use this tag to modify
480         where they run.  If the process name begins with a ':' character,
481         a new process private to that application will be created when needed
482         to run that component (allowing you to spread your application across
483         multiple processes).  If the process name begins with a lower-case
484         character, the component will be run in a global process of that name,
485         provided that you have permission to do so, allowing multiple
486         applications to share one process to reduce resource usage. -->
487    <attr name="process" format="string" />
488
489    <!-- Specify a task name that activities have an "affinity" to.
490         Use with the application tag (to supply a default affinity for all
491         activities in the application), or with the activity tag (to supply
492         a specific affinity for that component).
493
494         <p>The default value for this attribute is the same as the package
495         name, indicating that all activities in the manifest should generally
496         be considered a single "application" to the user.  You can use this
497         attribute to modify that behavior: either giving them an affinity
498         for another task, if the activities are intended to be part of that
499         task from the user's perspective, or using an empty string for
500         activities that have no affinity to a task. -->
501    <attr name="taskAffinity" format="string" />
502
503    <!-- Specify that an activity can be moved out of a task it is in to
504         the task it has an affinity for when appropriate.  Use with the
505         application tag (to supply a default for all activities in the
506         application), or with an activity tag (to supply a specific
507         setting for that component).
508
509         <p>Normally when an application is started, it is associated with
510         the task of the activity that started it and stays there for its
511         entire lifetime.  You can use the allowTaskReparenting feature to force an
512         activity to be re-parented to a different task when the task it is
513         in goes to the background.  Typically this is used to cause the
514         activities of an application to move back to the main task associated
515         with that application.  The activity is re-parented to the task
516         with the same {@link android.R.attr#taskAffinity} as it has. -->
517    <attr name="allowTaskReparenting" format="boolean" />
518
519    <!-- Declare that this application may use cleartext traffic, such as HTTP rather than HTTPS;
520         WebSockets rather than WebSockets Secure; XMPP, IMAP, STMP without STARTTLS or TLS.
521         Defaults to true. If set to false {@code false}, the application declares that it does not
522         intend to use cleartext network traffic, in which case platform components (e.g. HTTP
523         stacks, {@code DownloadManager}, {@code MediaPlayer}) will refuse applications's requests
524         to use cleartext traffic. Third-party libraries are encouraged to honor this flag as well.
525         -->
526    <attr name="usesCleartextTraffic" format="boolean" />
527
528    <!-- Declare that code from this application will need to be loaded into other
529         applications' processes. On devices that support multiple instruction sets,
530         this implies the code might be loaded into a process that's using any of the devices
531         supported instruction sets.
532
533         <p> The system might treat such applications specially, for eg., by
534         extracting the application's native libraries for all supported instruction
535         sets or by compiling the application's dex code for all supported instruction
536         sets. -->
537    <attr name="multiArch" format ="boolean" />
538
539    <!-- Specify whether the 32 bit version of the ABI should be used in a
540         multiArch application. If both abioverride flag (i.e. using abi option of abd install)
541         and use32bitAbi are used, then use32bit is ignored.-->
542    <attr name="use32bitAbi" />
543
544    <!-- Specify whether a component is allowed to have multiple instances
545         of itself running in different processes.  Use with the activity
546         and provider tags.
547
548         <p>Normally the system will ensure that all instances of a particular
549         component are only running in a single process.  You can use this
550         attribute to disable that behavior, allowing the system to create
551         instances wherever they are used (provided permissions allow it).
552         This is most often used with content providers, so that instances
553         of a provider can be created in each client process, allowing them
554         to be used without performing IPC.  -->
555    <attr name="multiprocess" format="boolean" />
556
557    <!-- Specify whether an activity should be finished when its task is
558         brought to the foreground by relaunching from the home screen.
559
560         <p>If both this option and {@link android.R.attr#allowTaskReparenting} are
561         specified, the finish trumps the affinity: the affinity will be
562         ignored and the activity simply finished. -->
563    <attr name="finishOnTaskLaunch" format="boolean" />
564
565    <!-- Specify whether an activity should be finished when a "close system
566         windows" request has been made.  This happens, for example, when
567         the home key is pressed, when the device is locked, when a system
568         dialog showing recent applications is displayed, etc. -->
569    <attr name="finishOnCloseSystemDialogs" format="boolean" />
570
571    <!-- Specify whether an activity's task should be cleared when it
572         is re-launched from the home screen.  As a result, every time the
573         user starts the task, they will be brought to its root activity,
574         regardless of whether they used BACK or HOME to last leave it.
575         This flag only applies to activities that
576         are used to start the root of a new task.
577
578         <p>An example of the use of this flag would be for the case where
579         a user launches activity A from home, and from there goes to
580         activity B.  They now press home, and then return to activity A.
581         Normally they would see activity B, since that is what they were
582         last doing in A's task.  However, if A has set this flag to true,
583         then upon going to the background all of the tasks on top of it (B
584         in this case) are removed, so when the user next returns to A they
585         will restart at its original activity.
586
587         <p>When this option is used in conjunction with
588         {@link android.R.attr#allowTaskReparenting}, the allowTaskReparenting trumps the
589         clear.  That is, all activities above the root activity of the
590         task will be removed: those that have an affinity will be moved
591         to the task they are associated with, otherwise they will simply
592         be dropped as described here. -->
593    <attr name="clearTaskOnLaunch" format="boolean" />
594
595    <!-- Specify whether an activity should be kept in its history stack.
596         If this attribute is set, then as soon as the user navigates away
597         from the activity it will be finished and they will no longer be
598         able to return to it. -->
599    <attr name="noHistory" format="boolean" />
600
601    <!-- Specify whether an acitivty's task state should always be maintained
602         by the system, or if it is allowed to reset the task to its initial
603         state in certain situations.
604
605         <p>Normally the system will reset a task (remove all activities from
606         the stack and reset the root activity) in certain situations when
607         the user re-selects that task from the home screen.  Typically this
608         will be done if the user hasn't visited that task for a certain
609         amount of time, such as 30 minutes.
610
611         <p>By setting this attribute, the user will always return to your
612         task in its last state, regardless of how they get there.  This is
613         useful, for example, in an application like the web browser where there
614         is a lot of state (such as multiple open tabs) that the application
615         would not like to lose. -->
616    <attr name="alwaysRetainTaskState" format="boolean" />
617
618    <!-- Indicates that an Activity does not need to have its freeze state
619         (as returned by {@link android.app.Activity#onSaveInstanceState}
620         retained in order to be restarted.  Generally you use this for activities
621         that do not store any state.  When this flag is set, if for some reason
622         the activity is killed before it has a chance to save its state,
623         then the system will not remove it from the activity stack like
624         it normally would.  Instead, the next time the user navigates to
625         it its {@link android.app.Activity#onCreate} method will be called
626         with a null icicle, just like it was starting for the first time.
627
628         <p>This is used by the Home activity to make sure it does not get
629         removed if it crashes for some reason. -->
630    <attr name="stateNotNeeded" format="boolean" />
631
632    <!-- Indicates that an Activity should be excluded from the list of
633         recently launched activities. -->
634    <attr name="excludeFromRecents" format="boolean" />
635
636    <!-- Specify that an Activity should be shown over the lock screen and,
637         in a multiuser environment, across all users' windows.
638         @deprecated use {@link android.R.attr#showForAllUsers} instead. -->
639    <attr name="showOnLockScreen" format="boolean" />
640
641    <!-- Specify that an Activity should be shown even if the current/foreground user
642         is different from the user of the Activity. This will also force the
643         <code>android.view.LayoutParams.FLAG_SHOW_WHEN_LOCKED</code> flag
644         to be set for all windows of this activity -->
645    <attr name="showForAllUsers" format="boolean" />
646
647    <!-- Specifies whether an {@link android.app.Activity} should be shown on top of the lock screen
648         whenever the lockscreen is up and the activity is resumed. Normally an activity will be
649         transitioned to the stopped state if it is started while the lockscreen is up, but with
650         this flag set the activity will remain in the resumed state visible on-top of the lock
651         screen.
652
653         <p>This should be used instead of {@link android.view.WindowManager.LayoutParams#FLAG_SHOW_WHEN_LOCKED}
654         flag set for Windows. When using the Window flag during activity startup, there may not be
655         time to add it before the system stops your activity for being behind the lock-screen.
656         This leads to a double life-cycle as it is then restarted.</p> -->
657    <attr name="showWhenLocked" format="boolean" />
658
659    <!-- Specifies whether the screen should be turned on when the {@link android.app.Activity} is resumed.
660         Normally an activity will be transitioned to the stopped state if it is started while the
661         screen if off, but with this flag set the activity will cause the screen to turn on if the
662         activity will be visible and resumed due to the screen coming on. The screen will not be
663         turned on if the activity won't be visible after the screen is turned on. This flag is
664         normally used in conjunction with the {@link android.R.attr#showWhenLocked} flag to make
665         sure the activity is visible after the screen is turned on when the lockscreen is up. In
666         addition, if this flag is set and the activity calls
667         {@link android.app.KeyguardManager#requestDismissKeyguard}
668         the screen will turn on.
669
670         <p>This should be used instead of {@link android.view.WindowManager.LayoutParams#FLAG_TURN_SCREEN_ON}
671         flag set for Windows. When using the Window flag during activity startup, there may not be
672         time to add it before the system stops your activity because the screen has not yet turned
673         on. This leads to a double life-cycle as it is then restarted.</p> -->
674    <attr name="turnScreenOn" format="boolean" />
675
676    <!-- Specify the authorities under which this content provider can be
677         found.  Multiple authorities may be supplied by separating them
678         with a semicolon.  Authority names should use a Java-style naming
679         convention (such as <code>com.google.provider.MyProvider</code>)
680         in order to avoid conflicts.  Typically this name is the same
681         as the class implementation describing the provider's data structure. -->
682    <attr name="authorities" format="string" />
683
684    <!-- Flag indicating whether this content provider would like to
685         participate in data synchronization. -->
686    <attr name="syncable" format="boolean" />
687
688    <!-- Flag declaring this activity to be 'immersive'; immersive activities
689         should not be interrupted with other activities or notifications. -->
690    <attr name="immersive" format="boolean" />
691
692    <!-- Flag declaring that this activity will be run in VR mode, and specifying
693         the component of the {@link android.service.vr.VrListenerService} that should be
694         bound while this Activity is visible if it is installed and enabled on this device.
695         This is equivalent to calling {@link android.app.Activity#setVrModeEnabled} with the
696         the given component name within the Activity that this attribute is set for.
697         Declaring this will prevent the system from leaving VR mode during an Activity
698         transtion from one VR activity to another. -->
699    <attr name="enableVrMode" format="string" />
700
701    <!-- Flag allowing the activity to specify which screen rotation animation
702         it desires.  Valid values are "rotate", "crossfade", and "jumpcut"
703         as described in {@link android.view.WindowManager.LayoutParams#rotationAnimation}.
704         Specifying your Rotation animation in the WindowManager.LayoutParams
705         may be racy with app startup and updattransitions occuring during application startup and thusly
706         the manifest attribute is preferred.
707    -->
708    <attr name="rotationAnimation">
709      <flag name="rotate" value= "0" />
710      <flag name="crossfade" value = "1" />
711      <flag name="jumpcut" value = "2" />
712      <flag name="seamless" value = "3" />
713    </attr>
714
715    <!-- Specify the order in which content providers hosted by a process
716         are instantiated when that process is created.  Not needed unless
717         you have providers with dependencies between each other, to make
718         sure that they are created in the order needed by those dependencies.
719         The value is a simple integer, with higher numbers being
720         initialized first. -->
721    <attr name="initOrder" format="integer" />
722
723    <!-- Specify the relative importance or ability in handling a particular
724         Intent.  For receivers, this controls the order in which they are
725         executed to receive a broadcast (note that for
726         asynchronous broadcasts, this order is ignored).  For activities,
727         this provides information about how good an activity is handling an
728         Intent; when multiple activities match an intent and have different
729         priorities, only those with the higher priority value will be
730         considered a match.
731
732         <p>Only use if you really need to impose some specific
733         order in which the broadcasts are received, or want to forcibly
734         place an activity to always be preferred over others.  The value is a
735         single integer, with higher numbers considered to be better. -->
736    <attr name="priority" format="integer" />
737
738    <!-- Indicate if this component is aware of direct boot lifecycle, and can be
739         safely run before the user has entered their credentials (such as a lock
740         pattern or PIN). -->
741    <attr name="directBootAware" format="boolean" />
742
743    <!-- Specify how an activity should be launched.  See the
744         <a href="{@docRoot}guide/topics/fundamentals/tasks-and-back-stack.html">Tasks and Back
745         Stack</a> document for important information on how these options impact
746         the behavior of your application.
747
748         <p>If this attribute is not specified, <code>standard</code> launch
749         mode will be used.  Note that the particular launch behavior can
750         be changed in some ways at runtime through the
751         {@link android.content.Intent} flags
752         {@link android.content.Intent#FLAG_ACTIVITY_SINGLE_TOP},
753         {@link android.content.Intent#FLAG_ACTIVITY_NEW_TASK}, and
754         {@link android.content.Intent#FLAG_ACTIVITY_MULTIPLE_TASK}. -->
755    <attr name="launchMode">
756        <!-- The default mode, which will usually create a new instance of
757             the activity when it is started, though this behavior may change
758             with the introduction of other options such as
759             {@link android.content.Intent#FLAG_ACTIVITY_NEW_TASK
760             Intent.FLAG_ACTIVITY_NEW_TASK}. -->
761        <enum name="standard" value="0" />
762        <!-- If, when starting the activity, there is already an
763            instance of the same activity class in the foreground that is
764            interacting with the user, then
765            re-use that instance.  This existing instance will receive a call to
766            {@link android.app.Activity#onNewIntent Activity.onNewIntent()} with
767            the new Intent that is being started. -->
768        <enum name="singleTop" value="1" />
769        <!-- If, when starting the activity, there is already a task running
770            that starts with this activity, then instead of starting a new
771            instance the current task is brought to the front.  The existing
772            instance will receive a call to {@link android.app.Activity#onNewIntent
773            Activity.onNewIntent()}
774            with the new Intent that is being started, and with the
775            {@link android.content.Intent#FLAG_ACTIVITY_BROUGHT_TO_FRONT
776            Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT} flag set.  This is a superset
777            of the singleTop mode, where if there is already an instance
778            of the activity being started at the top of the stack, it will
779            receive the Intent as described there (without the
780            FLAG_ACTIVITY_BROUGHT_TO_FRONT flag set).  See the
781            <a href="{@docRoot}guide/topics/fundamentals/tasks-and-back-stack.html">Tasks and Back
782            Stack</a> document for more details about tasks.-->
783        <enum name="singleTask" value="2" />
784        <!-- Only allow one instance of this activity to ever be
785            running.  This activity gets a unique task with only itself running
786            in it; if it is ever launched again with the same Intent, then that
787            task will be brought forward and its
788            {@link android.app.Activity#onNewIntent Activity.onNewIntent()}
789            method called.  If this
790            activity tries to start a new activity, that new activity will be
791            launched in a separate task.  See the
792            <a href="{@docRoot}guide/topics/fundamentals/tasks-and-back-stack.html">Tasks and Back
793            Stack</a> document for more details about tasks.-->
794        <enum name="singleInstance" value="3" />
795    </attr>
796
797    <!-- Specify the orientation an activity should be run in.  If not
798         specified, it will run in the current preferred orientation
799         of the screen.
800         <p>This attribute is supported by the <a
801            href="{@docRoot}guide/topics/manifest/activity-element.html">{@code <activity>}</a>
802            element. -->
803    <attr name="screenOrientation">
804        <!-- No preference specified: let the system decide the best
805             orientation.  This will either be the orientation selected
806             by the activity below, or the user's preferred orientation
807             if this activity is the bottom of a task. If the user
808             explicitly turned off sensor based orientation through settings
809             sensor based device rotation will be ignored. If not by default
810             sensor based orientation will be taken into account and the
811             orientation will changed based on how the user rotates the device.
812             Corresponds to
813             {@link android.content.pm.ActivityInfo#SCREEN_ORIENTATION_UNSPECIFIED}. -->
814        <enum name="unspecified" value="-1" />
815        <!-- Would like to have the screen in a landscape orientation: that
816             is, with the display wider than it is tall, ignoring sensor data.
817             Corresponds to
818             {@link android.content.pm.ActivityInfo#SCREEN_ORIENTATION_LANDSCAPE}. -->
819        <enum name="landscape" value="0" />
820        <!-- Would like to have the screen in a portrait orientation: that
821             is, with the display taller than it is wide, ignoring sensor data.
822             Corresponds to
823             {@link android.content.pm.ActivityInfo#SCREEN_ORIENTATION_PORTRAIT}. -->
824        <enum name="portrait" value="1" />
825        <!-- Use the user's current preferred orientation of the handset.
826             Corresponds to
827             {@link android.content.pm.ActivityInfo#SCREEN_ORIENTATION_USER}. -->
828        <enum name="user" value="2" />
829        <!-- Keep the screen in the same orientation as whatever is behind
830             this activity.
831             Corresponds to
832             {@link android.content.pm.ActivityInfo#SCREEN_ORIENTATION_BEHIND}. -->
833        <enum name="behind" value="3" />
834        <!-- Orientation is determined by a physical orientation sensor:
835             the display will rotate based on how the user moves the device.
836             Ignores user's setting to turn off sensor-based rotation.
837             Corresponds to
838             {@link android.content.pm.ActivityInfo#SCREEN_ORIENTATION_SENSOR}. -->
839        <enum name="sensor" value="4" />
840        <!-- Always ignore orientation determined by orientation sensor:
841             the display will not rotate when the user moves the device.
842             Corresponds to
843             {@link android.content.pm.ActivityInfo#SCREEN_ORIENTATION_NOSENSOR}. -->
844        <enum name="nosensor" value="5" />
845        <!-- Would like to have the screen in landscape orientation, but can
846             use the sensor to change which direction the screen is facing.
847             Corresponds to
848             {@link android.content.pm.ActivityInfo#SCREEN_ORIENTATION_SENSOR_LANDSCAPE}. -->
849        <enum name="sensorLandscape" value="6" />
850        <!-- Would like to have the screen in portrait orientation, but can
851             use the sensor to change which direction the screen is facing.
852             Corresponds to
853             {@link android.content.pm.ActivityInfo#SCREEN_ORIENTATION_SENSOR_PORTRAIT}. -->
854        <enum name="sensorPortrait" value="7" />
855        <!-- Would like to have the screen in landscape orientation, turned in
856             the opposite direction from normal landscape.
857             Corresponds to
858             {@link android.content.pm.ActivityInfo#SCREEN_ORIENTATION_REVERSE_LANDSCAPE}. -->
859        <enum name="reverseLandscape" value="8" />
860        <!-- Would like to have the screen in portrait orientation, turned in
861             the opposite direction from normal portrait.
862             Corresponds to
863             {@link android.content.pm.ActivityInfo#SCREEN_ORIENTATION_REVERSE_PORTRAIT}. -->
864        <enum name="reversePortrait" value="9" />
865        <!-- Orientation is determined by a physical orientation sensor:
866             the display will rotate based on how the user moves the device.
867             This allows any of the 4 possible rotations, regardless of what
868             the device will normally do (for example some devices won't
869             normally use 180 degree rotation).
870             Corresponds to
871             {@link android.content.pm.ActivityInfo#SCREEN_ORIENTATION_FULL_SENSOR}. -->
872        <enum name="fullSensor" value="10" />
873        <!-- Would like to have the screen in landscape orientation, but if
874             the user has enabled sensor-based rotation then we can use the
875             sensor to change which direction the screen is facing.
876             Corresponds to
877             {@link android.content.pm.ActivityInfo#SCREEN_ORIENTATION_USER_LANDSCAPE}. -->
878        <enum name="userLandscape" value="11" />
879        <!-- Would like to have the screen in portrait orientation, but if
880             the user has enabled sensor-based rotation then we can use the
881             sensor to change which direction the screen is facing.
882             Corresponds to
883             {@link android.content.pm.ActivityInfo#SCREEN_ORIENTATION_USER_PORTRAIT}. -->
884        <enum name="userPortrait" value="12" />
885        <!-- Respect the user's sensor-based rotation preference, but if
886             sensor-based rotation is enabled then allow the screen to rotate
887             in all 4 possible directions regardless of what
888             the device will normally do (for example some devices won't
889             normally use 180 degree rotation).
890             Corresponds to
891             {@link android.content.pm.ActivityInfo#SCREEN_ORIENTATION_FULL_USER}. -->
892        <enum name="fullUser" value="13" />
893        <!-- Screen is locked to its current rotation, whatever that is.
894             Corresponds to
895             {@link android.content.pm.ActivityInfo#SCREEN_ORIENTATION_LOCKED}. -->
896        <enum name="locked" value="14" />
897    </attr>
898
899    <!-- Specify the configuration changes that trigger the system to recreate the
900         current activity if any of these configuration changes happen in the system.
901         The valid configuration changes include mcc and mnc which are the same with
902         those in configChanges. By default from Android O, we don't recreate the activity
903         even the app doesn't specify mcc or mnc in configChanges. If the app wants to
904         be recreated, specify them in recreateOnConfigChanges. -->
905    <attr name="recreateOnConfigChanges">
906        <!-- The IMSI MCC has changed, that is a SIM has been detected and
907             updated the Mobile Country Code. -->
908        <flag name="mcc" value="0x0001" />
909        <!-- The IMSI MNC has changed, that is a SIM has been detected and
910             updated the Mobile Network Code. -->
911        <flag name="mnc" value="0x0002" />
912    </attr>
913
914    <!-- Specify one or more configuration changes that the activity will
915         handle itself.  If not specified, the activity will be restarted
916         if any of these configuration changes happen in the system.  Otherwise,
917         the activity will remain running and its
918         {@link android.app.Activity#onConfigurationChanged Activity.onConfigurationChanged}
919         method called with the new configuration.
920
921         <p>Note that all of these configuration changes can impact the
922         resource values seen by the application, so you will generally need
923         to re-retrieve all resources (including view layouts, drawables, etc)
924         to correctly handle any configuration change.
925
926         <p>These values must be kept in sync with those in
927         {@link android.content.pm.ActivityInfo} and
928         include/utils/ResourceTypes.h. -->
929    <attr name="configChanges">
930        <!-- The IMSI MCC has changed, that is a SIM has been detected and
931             updated the Mobile Country Code. By default from Android O, we
932             don't recreate the activity even the app doesn't specify mcc in
933             configChanges. If the app wants to recreate the activity, specify
934             mcc in recreateOnConfigChanges. -->
935        <flag name="mcc" value="0x0001" />
936        <!-- The IMSI MNC has changed, that is a SIM has been detected and
937             updated the Mobile Network Code. By default from Android O, we
938             don't recreate the activity even the app doesn't specify mnc in
939             configChanges. If the app wants to recreate the acvitity, specify
940             mnc in recreateOnConfigChanges. -->
941        <flag name="mnc" value="0x0002" />
942        <!-- The locale has changed, that is the user has selected a new
943             language that text should be displayed in. -->
944        <flag name="locale" value="0x0004" />
945        <!-- The touchscreen has changed.  Should never normally happen. -->
946        <flag name="touchscreen" value="0x0008" />
947        <!-- The keyboard type has changed, for example the user has plugged
948             in an external keyboard. -->
949        <flag name="keyboard" value="0x0010" />
950        <!-- The keyboard or navigation accessibility has changed, for example
951             the user has slid the keyboard out to expose it.  Note that
952             despite its name, this applied to any accessibility: keyboard
953             or navigation. -->
954        <flag name="keyboardHidden" value="0x0020" />
955        <!-- The navigation type has changed.  Should never normally happen. -->
956        <flag name="navigation" value="0x0040" />
957        <!-- The screen orientation has changed, that is the user has
958             rotated the device. -->
959        <flag name="orientation" value="0x0080" />
960        <!-- The screen layout has changed.  This might be caused by a
961             different display being activated. -->
962        <flag name="screenLayout" value="0x0100" />
963        <!-- The global user interface mode has changed.  For example,
964             going in or out of car mode, night mode changing, etc. -->
965        <flag name="uiMode" value="0x0200" />
966        <!-- The current available screen size has changed.  If applications don't
967             target at least {@link android.os.Build.VERSION_CODES#HONEYCOMB_MR2}
968             then the activity will always handle this itself (the change
969             will not result in a restart).  This represents a change in the
970             currently available size, so will change when the user switches
971             between landscape and portrait. -->
972        <flag name="screenSize" value="0x0400" />
973        <!-- The physical screen size has changed.  If applications don't
974             target at least {@link android.os.Build.VERSION_CODES#HONEYCOMB_MR2}
975             then the activity will always handle this itself (the change
976             will not result in a restart).  This represents a change in size
977             regardless of orientation, so will only change when the actual
978             physical screen size has changed such as switching to an external
979             display. -->
980        <flag name="smallestScreenSize" value="0x0800" />
981        <!-- The display density has changed. This might be caused by the user
982             specifying a different display scale, or it might be caused by a
983             different display being activated. -->
984        <flag name="density" value="0x1000" />
985        <!-- The layout direction has changed. For example going from LTR to RTL. -->
986        <flag name="layoutDirection" value="0x2000" />
987        <!-- The color mode of the screen has changed (color gamut or dynamic range). -->
988        <flag name="colorMode" value="0x4000" />
989        <!-- The font scaling factor has changed, that is the user has
990             selected a new global font size. -->
991        <flag name="fontScale" value="0x40000000" />
992    </attr>
993
994    <!-- Indicate that the activity can be launched as the embedded child of another
995         activity. Particularly in the case where the child lives in a container
996         such as a Display owned by another activity.
997
998         <p>The default value of this attribute is <code>false</code>. -->
999    <attr name="allowEmbedded" format="boolean" />
1000
1001    <!-- Specifies whether this {@link android.app.Activity} should be shown on
1002         top of the lock screen whenever the lockscreen is up and this activity has another
1003         activity behind it with the {@link android.R.attr#showWhenLocked} attribute set. That
1004         is, this activity is only visible on the lock screen if there is another activity with
1005         the {@link android.R.attr#showWhenLocked} attribute visible at the same time on the
1006         lock screen. A use case for this is permission dialogs, that should only be visible on
1007         the lock screen if their requesting activity is also visible.
1008
1009         <p>The default value of this attribute is <code>false</code>. -->
1010    <attr name="inheritShowWhenLocked" format="boolean" />
1011
1012    <!-- Descriptive text for the associated data. -->
1013    <attr name="description" format="reference" />
1014
1015    <!-- The name of the application package that an Instrumentation object
1016         will run against. -->
1017    <attr name="targetPackage" format="string" />
1018
1019    <!-- The name of an application's processes that an Instrumentation object
1020         will run against.  If not specified, only runs in the main process of the targetPackage.
1021         Can either be a comma-separated list of process names or '*' for any process that
1022         launches to run targetPackage code. -->
1023    <attr name="targetProcesses" format="string" />
1024
1025    <!-- Flag indicating that an Instrumentation class wants to take care
1026         of starting/stopping profiling itself, rather than relying on
1027         the default behavior of profiling the complete time it is running.
1028         This allows it to target profiling data at a specific set of
1029         operations. -->
1030    <attr name="handleProfiling" format="boolean" />
1031
1032    <!-- Flag indicating that an Instrumentation class should be run as a
1033         functional test. -->
1034    <attr name="functionalTest" format="boolean" />
1035
1036    <!-- The touch screen type used by an application. -->
1037    <attr name="reqTouchScreen">
1038        <enum name="undefined" value="0" />
1039        <enum name="notouch" value="1" />
1040        <enum name="stylus" value="2" />
1041        <enum name="finger" value="3" />
1042    </attr>
1043
1044    <!-- The input method preferred by an application. -->
1045    <attr name="reqKeyboardType">
1046        <enum name="undefined" value="0" />
1047        <enum name="nokeys" value="1" />
1048        <enum name="qwerty" value="2" />
1049        <enum name="twelvekey" value="3" />
1050    </attr>
1051
1052    <!-- Application's requirement for a hard keyboard -->
1053    <attr name="reqHardKeyboard" format="boolean" />
1054
1055    <!-- The navigation device preferred by an application. -->
1056    <attr name="reqNavigation">
1057        <enum name="undefined" value="0" />
1058        <enum name="nonav" value="1" />
1059        <enum name="dpad" value="2" />
1060        <enum name="trackball" value="3" />
1061        <enum name="wheel" value="4" />
1062    </attr>
1063
1064    <!-- Application's requirement for five way navigation -->
1065    <attr name="reqFiveWayNav" format="boolean" />
1066
1067    <!-- The name of the class subclassing <code>BackupAgent</code> to manage
1068         backup and restore of the application's data on external storage. -->
1069    <attr name="backupAgent" format="string" />
1070
1071    <!-- Whether to allow the application to participate in the backup
1072         and restore infrastructure.  If this attribute is set to <code>false</code>,
1073         no backup or restore of the application will ever be performed, even by a
1074         full-system backup that would otherwise cause all application data to be saved
1075         via adb.  The default value of this attribute is <code>true</code>. -->
1076    <attr name="allowBackup" format="boolean" />
1077
1078    <!-- Applications will set this in their manifest to opt-in to or out of full app data back-up
1079         and restore. Alternatively they can set it to an xml resource within their app that will
1080         be parsed by the BackupAgent to selectively backup files indicated within that xml. -->
1081    <attr name="fullBackupContent" format="reference|boolean" />
1082
1083    <!-- Indicates that even though the application provides a <code>BackupAgent</code>,
1084         only full-data streaming backup operations are to be performed to save the app's
1085         data.  This lets the app rely on full-data backups while still participating in
1086         the backup and restore process via the BackupAgent's full-data backup APIs.
1087         When this attribute is <code>true</code> the app's BackupAgent overrides of
1088         the onBackup() and onRestore() callbacks can be empty stubs. -->
1089    <attr name="fullBackupOnly" format="boolean" />
1090
1091    <!-- Whether the application in question should be terminated after its
1092         settings have been restored during a full-system restore operation.
1093         Single-package restore operations will never cause the application to
1094         be shut down.  Full-system restore operations typically only occur once,
1095         when the phone is first set up.  Third-party applications will not usually
1096         need to use this attribute.
1097
1098         <p>The default is <code>true</code>, which means that after the application
1099         has finished processing its data during a full-system restore, it will be
1100         terminated. -->
1101    <attr name="killAfterRestore" format="boolean" />
1102
1103    <!-- @deprecated This attribute is not used by the Android operating system. -->
1104    <attr name="restoreNeedsApplication" format="boolean" />
1105
1106    <!-- Indicate that the application is prepared to attempt a restore of any
1107         backed-up dataset, even if the backup is apparently from a newer version
1108         of the application than is currently installed on the device.  Setting
1109         this attribute to <code>true</code> will permit the Backup Manager to
1110         attempt restore even when a version mismatch suggests that the data are
1111         incompatible.  <em>Use with caution!</em>
1112
1113         <p>The default value of this attribute is <code>false</code>. -->
1114    <attr name="restoreAnyVersion" format="boolean" />
1115
1116    <!-- Indicates that full-data backup operations for this application may
1117         be performed even if the application is in a foreground-equivalent
1118         state.  <em>Use with caution!</em>  Setting this flag to <code>true</code>
1119         can impact app behavior while the user is interacting with the device.
1120
1121         <p>If unspecified, the default value of this attribute is <code>false</code>,
1122         which means that the OS will avoid backing up the application while it is
1123         running in the foreground (such as a music app that is actively playing
1124         music via a service in the startForeground() state). -->
1125    <attr name="backupInForeground" format="boolean" />
1126
1127    <!-- The default install location defined by an application. -->
1128    <attr name="installLocation">
1129        <!-- Let the system decide ideal install location -->
1130        <enum name="auto" value="0" />
1131        <!-- Explicitly request to be installed on internal phone storage
1132             only. -->
1133        <enum name="internalOnly" value="1" />
1134        <!-- Prefer to be installed on SD card. There is no guarantee that
1135             the system will honor this request. The application might end
1136             up being installed on internal storage if external media
1137             is unavailable or too full. -->
1138        <enum name="preferExternal" value="2" />
1139    </attr>
1140
1141    <!-- If set to <code>true</code>, indicates to the platform that any split APKs
1142         installed for this application should be loaded into their own Context
1143         objects and not appear in the base application's Context.
1144
1145         <p>The default value of this attribute is <code>false</code>. -->
1146    <attr name="isolatedSplits" format="boolean" />
1147
1148    <!-- The classname of the classloader used to load the application's classes
1149         from its APK. The APK in question can either be the 'base' APK or any
1150         of the application's 'split' APKs if it's using a feature split.
1151
1152         <p>
1153         The supported values for this attribute are
1154         <code>dalvik.system.PathClassLoader</code> and
1155         <code>dalvik.system.DelegateLastClassLoader</code>. If unspecified,
1156         the default value of this attribute is <code>dalvik.system.PathClassLoader</code>.
1157
1158         If an unknown classloader is provided, a PackageParserException with cause
1159         <code>PackageManager.INSTALL_PARSE_FAILED_MANIFEST_MALFORMED</code> will be
1160         thrown and the app will not be installed.
1161         -->
1162    <attr name="classLoader" format="string" />
1163
1164    <!-- Name of the class that gets invoked for preloading application code, when starting an
1165         {@link android.R.attr#isolatedProcess} service that has
1166         {@link android.R.attr#useAppZygote} set to <code>true</code>. This is a fully
1167         qualified class name (for example, com.mycompany.myapp.MyZygotePreload); as a
1168         short-hand if the first character of the class is a period then it is appended
1169         to your package name. The class must implement the {@link android.app.ZygotePreload}
1170         interface. -->
1171    <attr name="zygotePreloadName" format="string"/>
1172
1173    <!-- If set to <code>true</code>, indicates to the platform that this APK is
1174         a 'feature' split and that it implicitly depends on the base APK. This distinguishes
1175         this split APK from a 'configuration' split, which provides resource overrides
1176         for a particular 'feature' split. Only useful when the base APK specifies
1177         <code>android:isolatedSplits="true"</code>.
1178
1179         <p>The default value of this attribute is <code>false</code>. -->
1180    <attr name="isFeatureSplit" format="boolean" />
1181
1182    <!-- Flag to specify if this APK requires at least one split [either feature or
1183         resource] to be present in order to function. Default value is false. -->
1184    <attr name="isSplitRequired" format="boolean" />
1185
1186    <!-- Flag to specify if this app wants to run the dex within its APK but not extracted or
1187         locally compiled variants. This keeps the dex code protected by the APK signature. Such
1188         apps will always run in JIT mode (same when they are first installed), and the system will
1189         never generate ahead-of-time compiled code for them. Depending on the app's workload,
1190         there may be some run time performance change, noteably the cold start time. -->
1191    <attr name="useEmbeddedDex" format="boolean" />
1192
1193    <!-- Extra options for an activity's UI. Applies to either the {@code <activity>} or
1194         {@code <application>} tag. If specified on the {@code <application>}
1195         tag these will be considered defaults for all activities in the
1196         application. -->
1197    <attr name="uiOptions">
1198        <!-- No extra UI options. This is the default. -->
1199        <flag name="none" value="0" />
1200        <!-- Split the options menu into a separate bar at the bottom of
1201             the screen when severely constrained for horizontal space.
1202             (e.g. portrait mode on a phone.) Instead of a small number
1203             of action buttons appearing in the action bar at the top
1204             of the screen, the action bar will split into the top navigation
1205             section and the bottom menu section. Menu items will not be
1206             split across the two bars; they will always appear together. -->
1207        <flag name="splitActionBarWhenNarrow" value="1" />
1208    </attr>
1209
1210    <!-- The name of the logical parent of the activity as it appears in the manifest. -->
1211    <attr name="parentActivityName" format="string" />
1212
1213    <!-- Define how an activity persist across reboots. Activities defined as "never" will not
1214         be persisted. Those defined as "always" will be persisted. Those defined as "taskOnly"
1215         will persist the root activity of the task only. See below for more detail as to
1216         what gets persisted. -->
1217    <attr name="persistableMode">
1218        <!-- The default. If this activity forms the root of a task then that task will be
1219             persisted across reboots but only the launching intent will be used. If the task
1220             relinquishes its identity then the intent used is that of the topmost inherited
1221             identity. All activities above this activity in the task will not be persisted.
1222             In addition this activity will not be passed a PersistableBundle into which it
1223             could have stored its state. -->
1224        <enum name="persistRootOnly" value="0" />
1225        <!-- If this activity forms the root of a task then that task will not be persisted
1226             across reboots -->
1227        <enum name="persistNever" value="1" />
1228        <!-- If this activity forms the root of a task then the task and this activity will
1229             be persisted across reboots. If the activity above this activity is also
1230             tagged with the attribute <code>"persist"</code> then it will be persisted as well.
1231             And so on up the task stack until either an activity without the
1232             <code>persistableMode="persistAcrossReboots"</code> attribute or one that was launched
1233             with the flag Intent.FLAG_CLEAR_TASK_WHEN_RESET is encountered.
1234
1235             <p>Activities that are declared with the persistAcrossReboots attribute will be
1236             provided with a PersistableBundle in onSavedInstanceState(), These activities may
1237             use this PeristableBundle to save their state. Then, following a reboot, that
1238             PersistableBundle will be provided back to the activity in its onCreate() method. -->
1239        <enum name="persistAcrossReboots" value="2" />
1240    </attr>
1241
1242    <!-- This attribute specifies that an activity shall become the root activity of a
1243         new task each time it is launched. Using this attribute permits the user to
1244         have multiple documents from the same applications appear in the recent tasks list.
1245
1246         <p>Such a document is any kind of item for which an application may want to
1247         maintain multiple simultaneous instances. Examples might be text files, web
1248         pages, spreadsheets, or emails. Each such document will be in a separate
1249         task in the recent taskss list.
1250
1251         <p>This attribute is equivalent to adding the flag {@link
1252         android.content.Intent#FLAG_ACTIVITY_NEW_DOCUMENT} to every Intent used to launch
1253         the activity.
1254
1255         <p>The documentLaunchMode attribute may be assigned one of four values, "none",
1256         "intoExisting", "always" and "never", described in detail below. For values other than
1257         <code>none</code> and <code>never</code> the activity must be defined with
1258         {@link android.R.attr#launchMode} <code>standard</code>.
1259         If this attribute is not specified, <code>none</code> will be used.
1260         Note that <code>none</code> can be overridden at run time if the Intent used
1261         to launch it contains the flag {@link android.content.Intent#FLAG_ACTIVITY_NEW_DOCUMENT
1262         Intent.FLAG_ACTIVITY_NEW_DOCUMENT}.
1263         Similarly <code>intoExisting</code> will be overridden by the flag
1264         {@link android.content.Intent#FLAG_ACTIVITY_NEW_DOCUMENT
1265         Intent.FLAG_ACTIVITY_NEW_DOCUMENT} combined with
1266         {@link android.content.Intent#FLAG_ACTIVITY_MULTIPLE_TASK
1267         Intent.FLAG_ACTIVITY_MULTIPLE_TASK}. If the value of
1268         documentLaunchModes is <code>never</code> then any use of
1269         {@link android.content.Intent#FLAG_ACTIVITY_NEW_DOCUMENT
1270         Intent.FLAG_ACTIVITY_NEW_DOCUMENT} to launch this activity will be ignored. -->
1271    <attr name="documentLaunchMode">
1272        <!-- The default mode, which will create a new task only when
1273             {@link android.content.Intent#FLAG_ACTIVITY_NEW_TASK
1274             Intent.FLAG_ACTIVITY_NEW_TASK} is set. -->
1275        <enum name="none" value="0" />
1276        <!-- All tasks will be searched for one whose base Intent's ComponentName and
1277             data URI match those of the launching Intent. If such a task is found
1278             that task will be cleared and restarted with the root activity receiving a call
1279             to {@link android.app.Activity#onNewIntent Activity.onNewIntent}. If no
1280             such task is found a new task will be created.
1281             <p>This is the equivalent of launching an activity with {@link
1282             android.content.Intent#FLAG_ACTIVITY_NEW_DOCUMENT Intent.FLAG_ACTIVITY_NEW_DOCUMENT}
1283             set and without {@link android.content.Intent#FLAG_ACTIVITY_MULTIPLE_TASK
1284             Intent.FLAG_ACTIVITY_MULTIPLE_TASK} set. -->
1285        <enum name="intoExisting" value="1" />
1286        <!-- A new task rooted at this activity will be created. This will happen whether or
1287             not there is an existing task whose ComponentName and data URI match
1288             that of the launcing intent This is the equivalent of launching an activity
1289             with {@link
1290             android.content.Intent#FLAG_ACTIVITY_NEW_DOCUMENT Intent.FLAG_ACTIVITY_NEW_DOCUMENT}
1291             and {@link android.content.Intent#FLAG_ACTIVITY_MULTIPLE_TASK
1292             Intent.FLAG_ACTIVITY_MULTIPLE_TASK} both set. -->
1293        <enum name="always" value="2" />
1294        <!-- This activity will not be launched into a new document even if the Intent contains
1295             {@link android.content.Intent#FLAG_ACTIVITY_NEW_DOCUMENT
1296             Intent.FLAG_ACTIVITY_NEW_DOCUMENT}. This gives the activity writer ultimate
1297             control over how their activity is used. Note that applications prior to api
1298             21 will default to documentLaunchMode="none" so only activities that explicitly
1299             opt out with <code>"never"</code> may do so. -->
1300        <enum name="never" value="3" />
1301    </attr>
1302
1303    <!-- The maximum number of entries of tasks rooted at this activity in the recent task list.
1304         When this number of entries is reached the least recently used instance of this activity
1305         will be removed from recents. The value will be clamped between 1 and 100 inclusive.
1306         The default value for this if it is not specified is 15. -->
1307    <attr name="maxRecents" format="integer" />
1308
1309    <!-- Tasks launched by activities with this attribute will remain in the recent tasks
1310         list until the last activity in the task is completed.  When that happens the task
1311         will be automatically removed from the recent tasks list.  This overrides the caller's
1312         use of {@link android.content.Intent#FLAG_ACTIVITY_RETAIN_IN_RECENTS
1313         Intent.FLAG_ACTIVITY_RETAIN_IN_RECENTS} -->
1314    <attr name="autoRemoveFromRecents" format="boolean" />
1315
1316    <!-- Tasks whose root has this attribute set to true will replace baseIntent with that of the
1317         next activity in the task. If the next activity also has this attribute set to true then
1318         it will yield the baseIntent to any activity that it launches in the same task. This
1319         continues until an activity is encountered which has this attribute set to false. False
1320         is the default. This attribute set to true also permits activity's use of the
1321         TaskDescription to change labels, colors and icons in the recent task list. -->
1322    <attr name="relinquishTaskIdentity" format="boolean" />
1323
1324    <!-- Indicate that it is okay for this activity be resumed while the previous
1325         activity is in the process of pausing, without waiting for the previous pause
1326         to complete.  Use this with caution: your activity can not acquire any exclusive
1327         resources (such as opening the camera or recording audio) when it launches, or it
1328         may conflict with the previous activity and fail.
1329
1330         <p>The default value of this attribute is <code>false</code>. -->
1331    <attr name="resumeWhilePausing" format="boolean" />
1332
1333    <!-- Indicates that it is okay for this activity to be put in multi-window mode. Intended for a
1334         multi-window device where there can be multiple activities of various sizes on the screen
1335         at the same time.
1336
1337         <p>The default value is <code>false</code> for applications with
1338         <code>targetSdkVersion</code> lesser than {@link android.os.Build.VERSION_CODES#N} and
1339         <code>true</code> otherwise.
1340
1341         <p>Setting this flag to <code>false</code> lets the system know that the app may not be
1342         tested or optimized for multi-window environment. The system may still put such activity in
1343         multi-window with compatibility mode applied. It also does not guarantee that there will be
1344         no other apps in multi-window visible on screen (e.g. picture-in-picture) or on other
1345         displays. Therefore, this flag cannot be used to assure an exclusive resource access.
1346
1347         <p>NOTE: A task's root activity value is applied to all additional activities launched in
1348         the task. That is if the root activity of a task is resizeable then the system will treat
1349         all other activities in the task as resizeable and will not if the root activity isn't
1350         resizeable.
1351
1352         <p>NOTE: The value of {@link android.R.attr#screenOrientation} is ignored for
1353         resizeable activities when in multi-window mode. -->
1354    <attr name="resizeableActivity" format="boolean" />
1355
1356    <!-- Indicates that the activity specifically supports the picture-in-picture form of
1357         multi-window. If true, this activity will support entering picture-in-picture, but will
1358         only support split-screen and other forms of multi-window if
1359         {@link android.R.attr#resizeableActivity} is also set to true.
1360
1361         Note that your activity may still be resized even if this attribute is true and
1362         {@link android.R.attr#resizeableActivity} is false.
1363
1364         <p>The default value is <code>false</code>.  -->
1365    <attr name="supportsPictureInPicture" format="boolean" />
1366
1367    <!-- This value indicates the maximum aspect ratio the activity supports. If the app runs on a
1368         device with a wider aspect ratio, the system automatically letterboxes the app, leaving
1369         portions of the screen unused so the app can run at its specified maximum aspect ratio.
1370         <p>
1371         Maximum aspect ratio, expressed as (longer dimension / shorter dimension) in decimal
1372         form. For example, if the maximum aspect ratio is 7:3, set value to 2.33.
1373         <p>
1374         Value needs to be greater or equal to 1.0, otherwise it is ignored.
1375         <p>
1376         NOTE: This attribute is ignored if the activity has
1377         {@link android.R.attr#resizeableActivity} set to true. -->
1378    <attr name="maxAspectRatio" format="float" />
1379
1380    <!-- This value indicates the minimum aspect ratio the activity supports. If the app runs on a
1381         device with a narrower aspect ratio, the system automatically letterboxes the app, leaving
1382         portions of the screen unused so the app can run at its specified minimum aspect ratio.
1383         <p>
1384         Minimum aspect ratio, expressed as (longer dimension / shorter dimension) in decimal
1385         form. For example, if the minimum aspect ratio is 4:3, set value to 1.33.
1386         <p>
1387         Value needs to be greater or equal to 1.0, otherwise it is ignored.
1388         <p>
1389         NOTE: This attribute is ignored if the activity has
1390         {@link android.R.attr#resizeableActivity} set to true. -->
1391    <attr name="minAspectRatio" format="float" />
1392
1393    <!-- This value indicates how tasks rooted at this activity will behave in lockTask mode.
1394         While in lockTask mode the system will not launch non-permitted tasks until
1395         lockTask mode is disabled.
1396         <p>While in lockTask mode with multiple permitted tasks running, each launched task is
1397         permitted to finish, transitioning to the previous locked task, until there is only one
1398         task remaining. At that point the last task running is not permitted to finish, unless it
1399         uses the value always. -->
1400    <attr name="lockTaskMode">
1401        <!-- This is the default value. Tasks will not launch into lockTask mode but can be
1402             placed there by calling {@link android.app.Activity#startLockTask}. If a task with
1403             this mode has been whitelisted using {@link
1404             android.app.admin.DevicePolicyManager#setLockTaskPackages} then calling
1405             {@link android.app.Activity#startLockTask} will enter lockTask mode immediately,
1406             otherwise the user will be presented with a dialog to approve entering pinned mode.
1407             <p>If the system is already in lockTask mode when a new task rooted at this activity
1408             is launched that task will or will not start depending on whether the package of this
1409             activity has been whitelisted.
1410             <p>Tasks rooted at this activity can only exit lockTask mode using
1411             {@link android.app.Activity#stopLockTask}. -->
1412        <enum name="normal" value="0"/>
1413        <!-- Tasks will not launch into lockTask mode and cannot be placed there using
1414             {@link android.app.Activity#startLockTask} or be pinned from the Overview screen.
1415             If the system is already in lockTask mode when a new task rooted at this activity is
1416             launched that task will not be started.
1417             <p>Note: This mode is only available to system and privileged applications.
1418             Non-privileged apps with this value will be treated as normal.
1419             -->
1420        <enum name="never" value="1"/>
1421        <!-- Tasks rooted at this activity will always launch into lockTask mode. If the system is
1422             already in lockTask mode when this task is launched then the new task will be launched
1423             on top of the current task. Tasks launched in this mode are capable of exiting
1424             lockTask mode using {@link android.app.Activity#finish()}.
1425             <p>Note: This mode is only available to system and privileged applications.
1426             Non-privileged apps with this value will be treated as normal.
1427             -->
1428        <enum name="always" value="2"/>
1429        <!-- If the DevicePolicyManager (DPM) authorizes this package ({@link
1430             android.app.admin.DevicePolicyManager#setLockTaskPackages}) then this mode is
1431             identical to always, except that the activity needs to call
1432             {@link android.app.Activity#stopLockTask} before being able to finish if it is the last
1433             locked task.
1434             If the DPM does not authorize this package then this mode is identical to normal. -->
1435        <enum name="if_whitelisted" value="3"/>
1436    </attr>
1437    <!-- When set installer will extract native libraries. If set to false
1438         libraries in the apk must be stored and page-aligned.  -->
1439    <attr name="extractNativeLibs" format="boolean"/>
1440
1441    <!-- Specify whether an activity intent filter will need to be verified thru its set
1442         of data URIs. This will only be used when the Intent's action is set to
1443         {@link android.content.Intent#ACTION_VIEW Intent.ACTION_VIEW} and the Intent's category is
1444         set to {@link android.content.Intent#CATEGORY_BROWSABLE Intent.CATEGORY_BROWSABLE} and the
1445         intern filter data scheme is set to "http" or "https". When set to true, the intent filter
1446         will need to use its data tag for getting the URIs to verify with.
1447
1448         For each URI, an HTTPS network request will be done to <code>/.well-known/statements.json</code>
1449         host to verify that the web site is okay with the app intercepting the URI.
1450         -->
1451    <attr name="autoVerify" format="boolean" />
1452
1453    <!-- Specify whether a component should be visible to instant apps.
1454         -->
1455    <attr name="visibleToInstantApps" format="boolean" />
1456
1457    <!-- An XML resource with the application's Network Security Config. -->
1458    <attr name="networkSecurityConfig" format="reference" />
1459
1460    <!-- When an application is partitioned into splits, this is the name of the
1461         split that contains the defined component. -->
1462    <attr name="splitName" format="string" />
1463
1464    <!-- Specifies the target sandbox this app wants to use. Higher sandbox versions
1465         will have increasing levels of security.
1466
1467         <p>The default value of this attribute is <code>1</code>.
1468         <p>
1469         @deprecated The security properties have been moved to
1470         {@link android.os.Build.VERSION Build.VERSION} 27 and 28. -->
1471    <attr name="targetSandboxVersion" format="integer" />
1472
1473    <!-- The user-visible SDK version (ex. 26) of the framework against which the application was
1474         compiled. This attribute is automatically specified by the Android build tools and should
1475         NOT be manually specified.
1476         <p>
1477         This attribute is the compile-time equivalent of
1478         {@link android.os.Build.VERSION#SDK_INT Build.VERSION.SDK_INT}. -->
1479    <attr name="compileSdkVersion" format="integer" />
1480
1481    <!-- The development codename (ex. "O") of the framework against which the application was
1482         compiled, or "REL" if the application was compiled against a release build. This attribute
1483         is automatically specified by the Android build tools and should NOT be manually
1484         specified.
1485         <p>
1486         This attribute is the compile-time equivalent of
1487         {@link android.os.Build.VERSION#CODENAME Build.VERSION.CODENAME}. -->
1488    <attr name="compileSdkVersionCodename" format="string" />
1489
1490    <!-- The (optional) fully-qualified name for a subclass of
1491         {@link android.app.AppComponentFactory} that the system uses to instantiate
1492         every other manifest defined class. Most applications
1493         don't need this attribute. If it's not specified, the system
1494         instantiates items without it.-->
1495    <attr name="appComponentFactory" format="string" />
1496
1497    <attr name="usesNonSdkApi" format="boolean" />
1498
1499    <!-- Specify the type of foreground service. Multiple types can be specified by ORing the flags
1500         together. -->
1501    <attr name="foregroundServiceType">
1502        <!-- Data (photo, file, account) upload/download, backup/restore, import/export, fetch,
1503        transfer over network between device and cloud.  -->
1504        <flag name="dataSync" value="0x01" />
1505        <!-- Music, video, news or other media play. -->
1506        <flag name="mediaPlayback" value="0x02" />
1507        <!-- Ongoing phone call or video conference. -->
1508        <flag name="phoneCall" value="0x04" />
1509        <!-- GPS, map, navigation location update. -->
1510        <flag name="location" value="0x08" />
1511        <!-- Auto, bluetooth, TV or other devices connection, monitoring and interaction. -->
1512        <flag name="connectedDevice" value="0x10" />
1513        <!-- Managing a media projection session, e.g, for screen recording or taking
1514             screenshots.-->
1515        <flag name="mediaProjection" value="0x20" />
1516    </attr>
1517
1518
1519    <!-- The <code>manifest</code> tag is the root of an
1520         <code>AndroidManifest.xml</code> file,
1521         describing the contents of an Android package (.apk) file.  One
1522         attribute must always be supplied: <code>package</code> gives a
1523         unique name for the package, using a Java-style naming convention
1524         to avoid name collisions.  For example, applications published
1525         by Google could have names of the form
1526         <code>com.google.app.<em>appname</em></code>
1527
1528         <p>Inside of the manifest tag, may appear the following tags
1529         in any order: {@link #AndroidManifestPermission permission},
1530         {@link #AndroidManifestPermissionGroup permission-group},
1531         {@link #AndroidManifestPermissionTree permission-tree},
1532         {@link #AndroidManifestUsesSdk uses-sdk},
1533         {@link #AndroidManifestUsesPermission uses-permission},
1534         {@link #AndroidManifestUsesConfiguration uses-configuration},
1535         {@link #AndroidManifestApplication application},
1536         {@link #AndroidManifestInstrumentation instrumentation},
1537         {@link #AndroidManifestUsesFeature uses-feature}.  -->
1538    <declare-styleable name="AndroidManifest">
1539        <attr name="versionCode" />
1540        <attr name="versionCodeMajor" />
1541        <attr name="versionName" />
1542        <attr name="revisionCode" />
1543        <attr name="sharedUserId" />
1544        <attr name="sharedUserLabel" />
1545        <attr name="installLocation" />
1546        <attr name="isolatedSplits" />
1547        <attr name="isFeatureSplit" />
1548        <attr name="targetSandboxVersion" />
1549        <attr name="compileSdkVersion" />
1550        <attr name="compileSdkVersionCodename" />
1551        <attr name="isSplitRequired" />
1552    </declare-styleable>
1553
1554    <!-- The <code>application</code> tag describes application-level components
1555         contained in the package, as well as general application
1556         attributes.  Many of the attributes you can supply here (such
1557         as theme, label, icon, permission, process, taskAffinity,
1558         and allowTaskReparenting) serve
1559         as default values for the corresponding attributes of components
1560         declared inside of the application.
1561
1562         <p>Inside of this element you specify what the application contains,
1563         using the elements {@link #AndroidManifestProvider provider},
1564         {@link #AndroidManifestService service},
1565         {@link #AndroidManifestReceiver receiver},
1566         {@link #AndroidManifestActivity activity},
1567         {@link #AndroidManifestActivityAlias activity-alias},
1568         {@link #AndroidManifestUsesLibrary uses-library},
1569         {@link #AndroidManifestUsesStaticLibrary uses-static-library}, and
1570         {@link #AndroidManifestUsesPackage uses-package}.
1571         The application tag
1572         appears as a child of the root {@link #AndroidManifest manifest} tag in
1573         an application's manifest file. -->
1574    <declare-styleable name="AndroidManifestApplication" parent="AndroidManifest">
1575        <!-- The (optional) fully-qualified name for a subclass of
1576             {@link android.app.Application} that the system instantiates before
1577             any other class when an app's process starts. Most applications
1578             don't need this attribute. If it's not specified, the system
1579             instantiates the base Application class instead.-->
1580        <attr name="name" />
1581        <attr name="theme" />
1582        <attr name="label" />
1583        <attr name="icon" />
1584        <attr name="roundIcon" />
1585        <attr name="banner" />
1586        <attr name="logo" />
1587        <attr name="description" />
1588        <attr name="permission" />
1589        <attr name="process" />
1590        <attr name="taskAffinity" />
1591        <attr name="allowTaskReparenting" />
1592        <!-- Indicate whether this application contains code.  If set to false,
1593             there is no code associated with it and thus the system will not
1594             try to load its code when launching components.  The default is true
1595             for normal behavior. -->
1596        <attr name="hasCode" format="boolean" />
1597        <attr name="persistent" />
1598        <attr name="persistentWhenFeatureAvailable" />
1599        <attr name="requiredForAllUsers" />
1600        <!-- Specify whether the components in this application are enabled or not (that is, can be
1601             instantiated by the system).
1602             If "false", it overrides any component specific values (a value of "true" will not
1603             override the component specific values). -->
1604        <attr name="enabled" />
1605        <attr name="debuggable" />
1606        <attr name="vmSafeMode" />
1607        <attr name="hardwareAccelerated" />
1608        <!-- Name of activity to be launched for managing the application's space on the device. -->
1609        <attr name="manageSpaceActivity" />
1610        <attr name="allowClearUserData" />
1611        <attr name="testOnly" />
1612        <attr name="backupAgent" />
1613        <attr name="allowBackup" />
1614        <attr name="fullBackupOnly" />
1615        <attr name="fullBackupContent" />
1616        <attr name="killAfterRestore" />
1617        <attr name="restoreNeedsApplication" />
1618        <attr name="restoreAnyVersion" />
1619        <attr name="backupInForeground" />
1620        <!-- Request that your application's processes be created with
1621             a large Dalvik heap.  This applies to <em>all</em> processes
1622             created for the application.  It only applies to the first
1623             application loaded into a process; if using a sharedUserId
1624             to allow multiple applications to use a process, they all must
1625             use this option consistently or will get unpredictable results. -->
1626        <attr name="largeHeap" format="boolean" />
1627        <!-- Declare that this application can't participate in the normal
1628             state save/restore mechanism.  Since it is not able to save and
1629             restore its state on demand,
1630             it can not participate in the normal activity lifecycle.  It will
1631             not be killed while in the background; the user must explicitly
1632             quit it.  Only one such app can be running at a time; if the user
1633             tries to launch a second such app, they will be prompted
1634             to quit the first before doing so.  While the
1635             application is running, the user will be informed of this. -->
1636        <attr name="cantSaveState" format="boolean" />
1637        <attr name="uiOptions" />
1638        <!-- Declare that your application will be able to deal with RTL (right to left) layouts.
1639             The default value is false. -->
1640        <attr name="supportsRtl" format="boolean" />
1641        <!-- Declare that this application requires access to restricted accounts of a certain
1642             type. The default value is null and restricted accounts won\'t be visible to this
1643             application. The type should correspond to the account authenticator type, such as
1644             "com.google". -->
1645        <attr name="restrictedAccountType" format="string"/>
1646        <!-- Declare that this application requires an account of a certain
1647             type. The default value is null and indicates that the application can work without
1648             any accounts. The type should correspond to the account authenticator type, such as
1649             "com.google". -->
1650        <attr name="requiredAccountType" format="string"/>
1651        <!-- @deprecated replaced by setting appCategory attribute to "game" -->
1652        <attr name="isGame" />
1653        <!-- Declare that this application may use cleartext traffic, such as HTTP rather than
1654             HTTPS; WebSockets rather than WebSockets Secure; XMPP, IMAP, STMP without STARTTLS or
1655             TLS). Defaults to true. If set to false {@code false}, the application declares that it
1656             does not intend to use cleartext network traffic, in which case platform components
1657             (e.g. HTTP stacks, {@code DownloadManager}, {@code MediaPlayer}) will refuse
1658             applications's requests to use cleartext traffic. Third-party libraries are encouraged
1659             to honor this flag as well. -->
1660        <attr name="usesCleartextTraffic" />
1661        <attr name="multiArch" />
1662        <attr name="useEmbeddedDex" />
1663        <attr name="extractNativeLibs" />
1664        <attr name="defaultToDeviceProtectedStorage" format="boolean" />
1665        <attr name="directBootAware" />
1666        <attr name="resizeableActivity" />
1667        <attr name="maxAspectRatio" />
1668        <attr name="minAspectRatio" />
1669        <attr name="networkSecurityConfig" />
1670        <!-- Declare the category of this app. Categories are used to cluster multiple apps
1671             together into meaningful groups, such as when summarizing battery, network, or
1672             disk usage. Apps should only define this value when they fit well into one of
1673             the specific categories. -->
1674        <attr name="appCategory">
1675            <!-- Apps which are primarily games. -->
1676            <enum name="game" value="0" />
1677            <!-- Apps which primarily work with audio or music, such as music players. -->
1678            <enum name="audio" value="1" />
1679            <!-- Apps which primarily work with video or movies, such as streaming video apps. -->
1680            <enum name="video" value="2" />
1681            <!-- Apps which primarily work with images or photos, such as camera or gallery apps. -->
1682            <enum name="image" value="3" />
1683            <!-- Apps which are primarily social apps, such as messaging, communication, email, or social network apps. -->
1684            <enum name="social" value="4" />
1685            <!-- Apps which are primarily news apps, such as newspapers, magazines, or sports apps. -->
1686            <enum name="news" value="5" />
1687            <!-- Apps which are primarily maps apps, such as navigation apps. -->
1688            <enum name="maps" value="6" />
1689            <!-- Apps which are primarily productivity apps, such as cloud storage or workplace apps. -->
1690            <enum name="productivity" value="7" />
1691        </attr>
1692
1693        <!-- Declares the kind of classloader this application's classes must be loaded with -->
1694        <attr name="classLoader" />
1695
1696        <attr name="appComponentFactory" />
1697
1698        <!-- Declares that this application should be invoked without non-SDK API enforcement -->
1699        <attr name="usesNonSdkApi" />
1700
1701        <!-- If {@code true} the user is prompted to keep the app's data on uninstall -->
1702        <attr name="hasFragileUserData" format="boolean"/>
1703
1704        <attr name="zygotePreloadName" />
1705
1706        <!-- If {@code true} the system will clear app's data if a restore operation fails.
1707             This flag is turned on by default. <em>This attribute is usable only by system apps.
1708             </em> -->
1709        <attr name="allowClearUserDataOnFailedRestore" format="boolean"/>
1710        <!-- If {@code true} the app's non sensitive audio can be captured by other apps with
1711             {@link android.media.AudioPlaybackCaptureConfiguration} and a
1712             {@link android.media.projection.MediaProjection}.
1713
1714             If {@code false} the audio played by the application will never be captured by non
1715             system apps. It is equivalent to limiting
1716             {@link android.media.AudioManager#setAllowedCapturePolicy(int)} to
1717             {@link android.media.AudioAttributes#ALLOW_CAPTURE_BY_SYSTEM}.
1718
1719             <p>
1720             Non sensitive audio is defined as audio whose {@code AttributeUsage} is
1721             {@code USAGE_UNKNOWN}), {@code USAGE_MEDIA}) or {@code USAGE_GAME}).
1722             All other usages like {@code USAGE_VOICE_COMMUNICATION} will not be captured.
1723
1724             <p>
1725             The default value is:
1726                 - {@code true} for apps with targetSdkVersion >= 29 (Q).
1727                 - {@code false} for apps with targetSdkVersion < 29.
1728
1729             <p>
1730             See {@link android.media.AudioPlaybackCaptureConfiguration} for more detail.
1731             -->
1732        <attr name="allowAudioPlaybackCapture" format="boolean" />
1733        <!-- If {@code true} this app would like to run under the legacy storage
1734             model. Note that this may not always be respected due to policy or
1735             backwards compatibility reasons.
1736
1737             <p>Apps not requesting legacy storage can continue to discover and
1738             read media belonging to other apps via {@code MediaStore}.
1739             <p>
1740             The default value is:
1741                 - {@code false} for apps with targetSdkVersion >= 29 (Q).
1742                 - {@code true} for apps with targetSdkVersion < 29.
1743             -->
1744        <attr name="requestLegacyExternalStorage" format="boolean" />
1745    </declare-styleable>
1746    <!-- The <code>permission</code> tag declares a security permission that can be
1747         used to control access from other packages to specific components or
1748         features in your package (or other packages).  See the
1749         <a href="{@docRoot}guide/topics/security/security.html">Security and Permissions</a>
1750         document for more information on permissions.
1751
1752         <p>This appears as a child tag of the root
1753         {@link #AndroidManifest manifest} tag. -->
1754    <declare-styleable name="AndroidManifestPermission" parent="AndroidManifest">
1755        <!-- Required public name of the permission, which other components and
1756        packages will use when referring to this permission.  This is a string using
1757        Java-style scoping to ensure it is unique.  The prefix will often
1758        be the same as our overall package name, for example
1759        "com.mycompany.android.myapp.SomePermission". -->
1760        <attr name="name" />
1761        <attr name="label" />
1762        <attr name="icon" />
1763        <attr name="roundIcon" />
1764        <attr name="banner" />
1765        <attr name="logo" />
1766        <attr name="permissionGroup" />
1767        <attr name="backgroundPermission" format="string"/>
1768        <attr name="description" />
1769        <attr name="request" />
1770        <attr name="protectionLevel" />
1771        <attr name="permissionFlags" />
1772    </declare-styleable>
1773
1774    <!-- The <code>permission-group</code> tag declares a logical grouping of
1775         related permissions.
1776
1777         <p>Note that this tag does not declare a permission itself, only
1778         a namespace in which further permissions can be placed.  See
1779         the {@link #AndroidManifestPermission &lt;permission&gt;} tag for
1780         more information.
1781
1782         <p>This appears as a child tag of the root
1783         {@link #AndroidManifest manifest} tag. -->
1784    <declare-styleable name="AndroidManifestPermissionGroup" parent="AndroidManifest">
1785        <!-- Required public name of the permission group, permissions will use
1786        to specify the group they are in.  This is a string using
1787        Java-style scoping to ensure it is unique.  The prefix will often
1788        be the same as our overall package name, for example
1789        "com.mycompany.android.myapp.SomePermission". -->
1790        <attr name="name" />
1791        <attr name="label" />
1792        <attr name="icon" />
1793        <attr name="roundIcon" />
1794        <attr name="banner" />
1795        <attr name="logo" />
1796        <attr name="description" />
1797        <attr name="request" format="string"/>
1798        <attr name="requestDetail" format="string"/>
1799        <attr name="backgroundRequest" format="string"/>
1800        <attr name="backgroundRequestDetail" format="string"/>
1801        <attr name="permissionGroupFlags" />
1802        <attr name="priority" />
1803    </declare-styleable>
1804
1805    <!-- The <code>permission-tree</code> tag declares the base of a tree of
1806         permission values: it declares that this package has ownership of
1807         the given permission name, as well as all names underneath it
1808         (separated by '.').  This allows you to use the
1809         {@link android.content.pm.PackageManager#addPermission
1810         PackageManager.addPermission()} method to dynamically add new
1811         permissions under this tree.
1812
1813         <p>Note that this tag does not declare a permission itself, only
1814         a namespace in which further permissions can be placed.  See
1815         the {@link #AndroidManifestPermission &lt;permission&gt;} tag for
1816         more information.
1817
1818         <p>This appears as a child tag of the root
1819         {@link #AndroidManifest manifest} tag. -->
1820    <declare-styleable name="AndroidManifestPermissionTree" parent="AndroidManifest">
1821        <!-- Required public name of the permission tree, which is the base name
1822        of all permissions under it.  This is a string using
1823        Java-style scoping to ensure it is unique.  The prefix will often
1824        be the same as our overall package name, for example
1825        "com.mycompany.android.myapp.SomePermission".  A permission tree name
1826        must have more than two segments in its path; that is,
1827        "com.me.foo" is okay, but not "com.me" or "com". -->
1828        <attr name="name" />
1829        <attr name="label" />
1830        <attr name="icon" />
1831        <attr name="roundIcon" />
1832        <attr name="banner" />
1833        <attr name="logo" />
1834    </declare-styleable>
1835
1836    <!-- The <code>uses-permission</code> tag requests a
1837         {@link #AndroidManifestPermission &lt;permission&gt;} that the containing
1838         package must be granted in order for it to operate correctly. For runtime
1839         permissions, i.e. ones with <code>dangerous</code> protection level, on a
1840         platform that supports runtime permissions, the permission will not be
1841         granted until the app explicitly requests it at runtime and the user approves
1842         the grant. You cannot request at runtime permissions that are not declared
1843         as used in the manifest. See the
1844         <a href="{@docRoot}guide/topics/security/security.html">Security and Permissions</a>
1845         document for more information on permissions.  Also available is a
1846         {@link android.Manifest.permission list of permissions} included
1847         with the base platform.
1848
1849         <p>This appears as a child tag of the root
1850         {@link #AndroidManifest manifest} tag. -->
1851    <declare-styleable name="AndroidManifestUsesPermission" parent="AndroidManifest">
1852        <!-- Required name of the permission you use, as published with the
1853        corresponding name attribute of a
1854        {@link android.R.styleable#AndroidManifestPermission &lt;permission&gt;}
1855        tag; often this is one of the {@link android.Manifest.permission standard
1856        system permissions}. -->
1857        <attr name="name" />
1858        <!-- Optional: specify the maximum version of the Android OS for which the
1859             application wishes to request the permission.  When running on a version
1860             of Android higher than the number given here, the permission will not
1861             be requested.  -->
1862        <attr name="maxSdkVersion" format="integer" />
1863        <!-- Optional: the system must support this feature for the permission to be
1864        requested.  If it doesn't support the feature, it will be as if the manifest didn't
1865        request it at all. -->
1866        <attr name="requiredFeature" format="string" />
1867        <!-- Optional: the system must NOT support this feature for the permission to be
1868        requested.  If it does support the feature, it will be as if the manifest didn't
1869        request it at all. -->
1870        <attr name="requiredNotFeature" format="string" />
1871    </declare-styleable>
1872
1873    <!-- The <code>uses-configuration</code> tag specifies
1874         a specific hardware configuration value used by the application.
1875         For example an application might specify that it requires
1876         a physical keyboard or a particular navigation method like
1877         trackball. Multiple such attribute values can be specified by the
1878         application.
1879
1880         <p>This appears as a child tag of the root
1881         {@link #AndroidManifest manifest} tag.
1882
1883         @deprecated Use <code>feature-group</code> instead.-->
1884    <declare-styleable name="AndroidManifestUsesConfiguration" parent="AndroidManifest">
1885        <!-- The type of touch screen used by an application. -->
1886        <attr name="reqTouchScreen" />
1887        <attr name="reqKeyboardType" />
1888        <attr name="reqHardKeyboard" />
1889        <attr name="reqNavigation" />
1890        <attr name="reqFiveWayNav" />
1891    </declare-styleable>
1892
1893    <!-- The <code>uses-feature</code> tag specifies a specific device
1894         hardware or software feature used by the application. For
1895         example an application might specify that it requires
1896         a camera. Multiple attribute values can be specified by the
1897         application.
1898
1899         <p>This appears as a child tag of the root
1900         {@link #AndroidManifest manifest} tag. -->
1901    <declare-styleable name="AndroidManifestUsesFeature" parent="AndroidManifest">
1902        <!-- The name of the feature that is being used. -->
1903        <attr name="name" />
1904        <!-- The version of the feature that is being used. -->
1905        <attr name="version" format="integer" />
1906        <!-- The GLES driver version number needed by an application.
1907             The higher 16 bits represent the major number and the lower 16 bits
1908             represent the minor number. For example for GL 1.2 referring to
1909             0x00000102, the actual value should be set as 0x00010002. -->
1910        <attr name="glEsVersion" format="integer" />
1911        <!--  Specify whether this feature is required for the application.
1912              The default is true, meaning the application requires the
1913              feature, and does not want to be installed on devices that
1914              don't support it.  If you set this to false, then this will
1915              not impose a restriction on where the application can be
1916              installed. -->
1917        <attr name="required" format="boolean" />
1918    </declare-styleable>
1919
1920    <!-- The <code>feature-group</code> tag specifies
1921         a set of one or more <code>uses-feature</code> elements that
1922         the application can utilize. An application uses multiple
1923         <code>feature-group</code> sets to indicate that it can support
1924         different combinations of features.
1925
1926         <p>This appears as a child tag of the root
1927         {@link #AndroidManifest manifest} tag. -->
1928    <declare-styleable name="AndroidManifestFeatureGroup">
1929        <!-- The human-readable name of the feature group. -->
1930        <attr name="label" />
1931    </declare-styleable>
1932
1933    <!-- The <code>uses-sdk</code> tag describes the SDK features that the
1934         containing package must be running on to operate correctly.
1935
1936         <p>This appears as a child tag of the root
1937         {@link #AndroidManifest manifest} tag. -->
1938    <declare-styleable name="AndroidManifestUsesSdk" parent="AndroidManifest">
1939        <!-- This is the minimum SDK version number that the application
1940             requires.  This number is an abstract integer, from the list
1941             in {@link android.os.Build.VERSION_CODES}  If
1942             not supplied, the application will work on any SDK.  This
1943             may also be string (such as "Donut") if the application was built
1944             against a development branch, in which case it will only work against
1945             the development builds. -->
1946        <attr name="minSdkVersion" format="integer|string" />
1947        <!-- This is the SDK version number that the application is targeting.
1948             It is able to run on older versions (down to minSdkVersion), but
1949             was explicitly tested to work with the version specified here.
1950             Specifying this version allows the platform to disable compatibility
1951             code that are not required or enable newer features that are not
1952             available to older applications.  This may also be a string
1953             (such as "Donut") if this is built against a development
1954             branch, in which case minSdkVersion is also forced to be that
1955             string. -->
1956        <attr name="targetSdkVersion" format="integer|string" />
1957        <!-- This is the maximum SDK version number that an application works
1958             on.  You can use this to ensure your application is filtered out
1959             of later versions of the platform when you know you have
1960             incompatibility with them. -->
1961        <attr name="maxSdkVersion" />
1962    </declare-styleable>
1963
1964    <!-- The <code>library</code> tag declares that this apk is providing itself
1965         as a shared library for other applications to use.  It can only be used
1966         with apks that are built in to the system image.  Other apks can link to
1967         it with the {@link #AndroidManifestUsesLibrary uses-library} tag.
1968
1969         <p>This appears as a child tag of the
1970         {@link #AndroidManifestApplication application} tag. -->
1971    <declare-styleable name="AndroidManifestLibrary" parent="AndroidManifest">
1972        <!-- Required public name of the library, which other components and
1973        packages will use when referring to this library.  This is a string using
1974        Java-style scoping to ensure it is unique.  The name should typically
1975        be the same as the apk's package name. -->
1976        <attr name="name" />
1977    </declare-styleable>
1978
1979
1980    <!-- The <code>static-library</code> tag declares that this apk is providing itself
1981       as a static shared library for other applications to use. Any app can declare such
1982       a library and there can be only one static shared library per package. These libraries
1983       are updatable, multiple versions can be installed at the same time, and an app links
1984       against a specific version simulating static linking while allowing code sharing.
1985       Other apks can link to it with the {@link #AndroidManifestUsesLibrary uses-static-library}
1986       tag.
1987
1988     <p>This appears as a child tag of the
1989     {@link #AndroidManifestApplication application} tag. -->
1990    <declare-styleable name="AndroidManifestStaticLibrary" parent="AndroidManifestApplication">
1991        <!-- Required public name of the library, which other components and
1992        packages will use when referring to this library.  This is a string using
1993        Java-style scoping to ensure it is unique.  The name should typically
1994        be the same as the apk's package name. -->
1995        <attr name="name" />
1996        <!-- Required specific library version. -->
1997        <attr name="version" />
1998        <!-- Required specific library major version code.  This matches
1999             android:versionCodeMajor of the library. -->
2000        <!-- Required specific library version. -->
2001        <attr name="versionMajor" format="integer" />
2002    </declare-styleable>
2003
2004    <!-- The <code>uses-libraries</code> specifies a shared library that this
2005         package requires to be linked against.  Specifying this flag tells the
2006         system to include this library's code in your class loader.
2007
2008         <p>This appears as a child tag of the
2009         {@link #AndroidManifestApplication application} tag. -->
2010    <declare-styleable name="AndroidManifestUsesLibrary" parent="AndroidManifestApplication">
2011        <!-- Required name of the library you use. -->
2012        <attr name="name" />
2013        <!--  Specify whether this library is required for the application.
2014              The default is true, meaning the application requires the
2015              library, and does not want to be installed on devices that
2016              don't support it.  If you set this to false, then this will
2017              allow the application to be installed even if the library
2018              doesn't exist, and you will need to check for its presence
2019              dynamically at runtime. -->
2020        <attr name="required" />
2021    </declare-styleable>
2022
2023    <!-- The <code>uses-static-library</code> specifies a shared <strong>static</strong>
2024         library that this package requires to be statically linked against. Specifying
2025         this tag tells the system to include this library's code in your class loader.
2026         Depending on a static shared library is equivalent to statically linking with
2027         the library at build time while it offers apps to share code defined in such
2028         libraries. Hence, static libraries are strictly required.
2029
2030         <p>On devices running O MR1 or higher, if the library is singed with multiple
2031         signing certificates you must to specify the SHA-256 hashes of the additional
2032         certificates via adding
2033         {@link #AndroidManifestAdditionalCertificate additional-certificate} tags.
2034
2035         <p>This appears as a child tag of the
2036         {@link #AndroidManifestApplication application} tag. -->
2037    <declare-styleable name="AndroidManifestUsesStaticLibrary" parent="AndroidManifestApplication">
2038        <!-- Required name of the library you use. -->
2039        <attr name="name" />
2040        <!-- Specify which version of the shared library should be statically linked. -->
2041        <attr name="version" />
2042        <!-- The SHA-256 digest of the library signing certificate. -->
2043        <attr name="certDigest" format="string" />
2044    </declare-styleable>
2045
2046    <!-- The <code>additional-certificate</code> specifies the SHA-256 digest of a static
2047         shared library's additional signing certificate. You need to use this tag if the
2048         library is singed with more than one certificate.
2049
2050         <p>This appears as a child tag of the
2051         {@link #AndroidManifestUsesStaticLibrary uses-static-library} or
2052         {@link #AndroidManifestUsesPackage uses-package} tag. -->
2053    <declare-styleable name="AndroidManifestAdditionalCertificate" parent="AndroidManifestUsesStaticLibrary">
2054        <!-- The SHA-256 digest of the library signing certificate. -->
2055        <attr name="certDigest" />
2056    </declare-styleable>
2057
2058    <!-- The <code>uses-package</code> specifies some kind of dependency on another
2059         package.  It does not have any impact on the app's execution on the device,
2060         but provides information about dependencies it has on other packages that need
2061         to  be satisfied for it to run correctly.  That is, this is primarily for
2062         installers to know what other apps need to be installed along with this one.
2063
2064         <p>This appears as a child tag of the
2065         {@link #AndroidManifestApplication application} tag. -->
2066    <declare-styleable name="AndroidManifestUsesPackage" parent="AndroidManifestApplication">
2067        <!-- Required type of association with the package, for example "android.package.ad_service"
2068             if it provides an advertising service.  This should use the standard scoped naming
2069             convention as used for other things such as package names, based on the Java naming
2070             convention. -->
2071        <attr name="packageType" format="string" />
2072        <!-- Required name of the package you use. -->
2073        <attr name="name" />
2074        <!-- Optional minimum version of the package that satisfies the dependency. -->
2075        <attr name="version" />
2076        <!-- Optional minimum major version of the package that satisfies the dependency. -->
2077        <attr name="versionMajor" format="integer" />
2078        <!-- Optional SHA-256 digest of the package signing certificate. -->
2079        <attr name="certDigest" format="string" />
2080    </declare-styleable>
2081
2082    <!-- The <code>supports-screens</code> specifies the screen dimensions an
2083         application supports.  By default a modern application supports all
2084         screen sizes and must explicitly disable certain screen sizes here;
2085         older applications are assumed to only support the traditional normal
2086         (HVGA) screen size.  Note that screen size is a separate axis from
2087         density, and is determined as the available pixels to an application
2088         after density scaling has been applied.
2089
2090         <p>This appears as a child tag of the
2091         {@link #AndroidManifest manifest} tag. -->
2092    <declare-styleable name="AndroidManifestSupportsScreens" parent="AndroidManifest">
2093        <!-- Starting with {@link android.os.Build.VERSION_CODES#HONEYCOMB_MR2},
2094             this is the new way to specify the minimum screen size an application is
2095             compatible with.  This attribute provides the required minimum
2096             "smallest screen width" (as per the -swNNNdp resource configuration)
2097             that the application can run on.  For example, a typical phone
2098             screen is 320, a 7" tablet 600, and a 10" tablet 720.  If the
2099             smallest screen width of the device is below the value supplied here,
2100             then the application is considered incompatible with that device.
2101             If not supplied, then any old smallScreens, normalScreens, largeScreens,
2102             or xlargeScreens attributes will be used instead. -->
2103        <attr name="requiresSmallestWidthDp" format="integer" />
2104        <!-- Starting with {@link android.os.Build.VERSION_CODES#HONEYCOMB_MR2},
2105             this is the new way to specify the largest screens an application is
2106             compatible with.  This attribute provides the maximum
2107             "smallest screen width" (as per the -swNNNdp resource configuration)
2108             that the application is designed for.  If this value is smaller than
2109             the "smallest screen width" of the device it is running on, the user
2110             is offered to run it in a compatibility mode that emulates a
2111             smaller screen and zooms it to fit the screen. Currently the compatibility mode only
2112             emulates phone screens with a 320dp width, so compatibility mode is not applied if the
2113             value for compatibleWidthLimitDp is larger than 320. -->
2114        <attr name="compatibleWidthLimitDp" format="integer" />
2115        <!-- Starting with {@link android.os.Build.VERSION_CODES#HONEYCOMB_MR2},
2116             this is the new way to specify the screens an application is
2117             compatible with.  This attribute provides the maximum
2118             "smallest screen width" (as per the -swNNNdp resource configuration)
2119             that the application can work well on.  If this value is smaller than
2120             the "smallest screen width" of the device it is running on, the
2121             application will be forced in to screen compatibility mode with
2122             no way for the user to turn it off. Currently the compatibility mode only
2123             emulates phone screens with a 320dp width, so compatibility mode is not applied if the
2124             value for largestWidthLimitDp is larger than 320. -->
2125        <attr name="largestWidthLimitDp" format="integer" />
2126        <!-- Indicates whether the application supports smaller screen form-factors.
2127             A small screen is defined as one with a smaller aspect ratio than
2128             the traditional HVGA screen; that is, for a portrait screen, less
2129             tall than an HVGA screen.  In practice, this means a QVGA low
2130             density or VGA high density screen.  An application that does
2131             not support small screens <em>will not be available</em> for
2132             small screen devices, since there is little the platform can do
2133             to make such an application work on a smaller screen. -->
2134        <attr name="smallScreens" format="boolean" />
2135        <!-- Indicates whether an application supports the normal screen
2136             form-factors.  Traditionally this is an HVGA normal density
2137             screen, but WQVGA low density and WVGA high density are also
2138             considered to be normal.  This attribute is true by default,
2139             and applications currently should leave it that way. -->
2140        <attr name="normalScreens" format="boolean" />
2141        <!-- Indicates whether the application supports larger screen form-factors.
2142             A large screen is defined as a screen that is significantly larger
2143             than a normal phone screen, and thus may require some special care
2144             on the application's part to make good use of it.  An example would
2145             be a VGA <em>normal density</em> screen, though even larger screens
2146             are certainly possible.  An application that does not support
2147             large screens will be placed as a postage stamp on such a
2148             screen, so that it retains the dimensions it was originally
2149             designed for. -->
2150        <attr name="largeScreens" format="boolean" />
2151        <!-- Indicates whether the application supports extra large screen form-factors. -->
2152        <attr name="xlargeScreens" format="boolean" />
2153        <!-- Indicates whether the application can resize itself to newer
2154             screen sizes.  This is mostly used to distinguish between old
2155             applications that may not be compatible with newly introduced
2156             screen sizes and newer applications that should be; it will be
2157             set for you automatically based on whether you are targeting
2158             a newer platform that supports more screens. -->
2159        <attr name="resizeable" format="boolean" />
2160        <!-- Indicates whether the application can accommodate any screen
2161             density.  Older applications are assumed to not be able to,
2162             new ones able to.  You can explicitly supply your abilities
2163             here. -->
2164        <attr name="anyDensity" format="boolean" />
2165    </declare-styleable>
2166
2167    <!-- Private tag to declare system protected broadcast actions.
2168
2169         <p>This appears as a child tag of the root
2170         {@link #AndroidManifest manifest} tag. -->
2171    <declare-styleable name="AndroidManifestProtectedBroadcast" parent="AndroidManifest">
2172        <attr name="name" />
2173    </declare-styleable>
2174
2175    <!-- Private tag to declare the original package name that this package is
2176         based on.  Only used for packages installed in the system image.  If
2177         given, and different than the actual package name, and the given
2178         original package was previously installed on the device but the new
2179         one was not, then the data for the old one will be renamed to be
2180         for the new package.
2181
2182         <p>This appears as a child tag of the root
2183         {@link #AndroidManifest manifest} tag. -->
2184    <declare-styleable name="AndroidManifestOriginalPackage" parent="AndroidManifest">
2185        <attr name="name" />
2186    </declare-styleable>
2187
2188    <!-- The <code>provider</code> tag declares a
2189         {@link android.content.ContentProvider} class that is available
2190         as part of the package's application components, supplying structured
2191         access to data managed by the application.
2192
2193         <p>This appears as a child tag of the
2194         {@link #AndroidManifestApplication application} tag. -->
2195    <declare-styleable name="AndroidManifestProvider" parent="AndroidManifestApplication">
2196        <!-- Required name of the class implementing the provider, deriving from
2197            {@link android.content.ContentProvider}.  This is a fully
2198            qualified class name (for example, com.mycompany.myapp.MyProvider); as a
2199            short-hand if the first character of the class
2200            is a period then it is appended to your package name. -->
2201        <attr name="name" />
2202        <attr name="label" />
2203        <attr name="description" />
2204        <attr name="icon" />
2205        <attr name="roundIcon" />
2206        <attr name="banner" />
2207        <attr name="logo" />
2208        <attr name="process" />
2209        <attr name="authorities" />
2210        <attr name="syncable" />
2211        <attr name="readPermission" />
2212        <attr name="writePermission" />
2213        <attr name="grantUriPermissions" />
2214        <attr name="forceUriPermissions" />
2215        <attr name="permission" />
2216        <attr name="multiprocess" />
2217        <attr name="initOrder" />
2218        <!-- Specify whether this provider is enabled or not (that is, can be instantiated by the system).
2219             It can also be specified for an application as a whole, in which case a value of "false"
2220             will override any component specific values (a value of "true" will not override the
2221             component specific values). -->
2222        <attr name="enabled" />
2223        <attr name="exported" />
2224        <attr name="singleUser" />
2225        <attr name="directBootAware" />
2226        <attr name="visibleToInstantApps" />
2227        <!-- The code for this component is located in the given split. -->
2228        <attr name="splitName" />
2229    </declare-styleable>
2230
2231    <!-- Attributes that can be supplied in an AndroidManifest.xml
2232         <code>grant-uri-permission</code> tag, a child of the
2233         {@link #AndroidManifestProvider provider} tag, describing a specific
2234         URI path that can be granted as a permission.  This tag can be
2235         specified multiple time to supply multiple paths. -->
2236    <declare-styleable name="AndroidManifestGrantUriPermission"  parent="AndroidManifestProvider">
2237        <!-- Specify a URI path that must exactly match, as per
2238             {@link android.os.PatternMatcher} with
2239             {@link android.os.PatternMatcher#PATTERN_LITERAL}. -->
2240        <attr name="path" format="string" />
2241        <!-- Specify a URI path that must be a prefix to match, as per
2242             {@link android.os.PatternMatcher} with
2243             {@link android.os.PatternMatcher#PATTERN_PREFIX}. -->
2244        <attr name="pathPrefix" format="string" />
2245        <!-- Specify a URI path that matches a simple pattern, as per
2246             {@link android.os.PatternMatcher} with
2247             {@link android.os.PatternMatcher#PATTERN_SIMPLE_GLOB}.
2248             Note that because '\' is used as an escape character when
2249             reading the string from XML (before it is parsed as a pattern),
2250             you will need to double-escape: for example a literal "*" would
2251             be written as "\\*" and a literal "\" would be written as
2252             "\\\\".  This is basically the same as what you would need to
2253             write if constructing the string in Java code. -->
2254        <attr name="pathPattern" format="string" />
2255    </declare-styleable>
2256
2257    <!-- Attributes that can be supplied in an AndroidManifest.xml
2258         <code>path-permission</code> tag, a child of the
2259         {@link #AndroidManifestProvider provider} tag, describing a permission
2260         that allows access to a specific path in the provider.  This tag can be
2261         specified multiple time to supply multiple paths. -->
2262    <declare-styleable name="AndroidManifestPathPermission"  parent="AndroidManifestProvider">
2263        <attr name="path" />
2264        <attr name="pathPrefix" />
2265        <attr name="pathPattern" />
2266        <attr name="pathAdvancedPattern" format="string"/>
2267        <attr name="permission" />
2268        <attr name="readPermission" />
2269        <attr name="writePermission" />
2270    </declare-styleable>
2271
2272    <!-- The <code>service</code> tag declares a
2273         {@link android.app.Service} class that is available
2274         as part of the package's application components, implementing
2275         long-running background operations or a rich communication API
2276         that can be called by other packages.
2277
2278         <p>Zero or more {@link #AndroidManifestIntentFilter intent-filter}
2279         tags can be included inside of a service, to specify the Intents
2280         that can connect with it.  If none are specified, the service can
2281         only be accessed by direct specification of its class name.
2282         The service tag appears as a child tag of the
2283         {@link #AndroidManifestApplication application} tag. -->
2284    <declare-styleable name="AndroidManifestService" parent="AndroidManifestApplication">
2285        <!-- Required name of the class implementing the service, deriving from
2286            {@link android.app.Service}.  This is a fully
2287            qualified class name (for example, com.mycompany.myapp.MyService); as a
2288            short-hand if the first character of the class
2289            is a period then it is appended to your package name. -->
2290        <attr name="name" />
2291        <attr name="label" />
2292        <attr name="description" />
2293        <attr name="icon" />
2294        <attr name="roundIcon" />
2295        <attr name="banner" />
2296        <attr name="logo" />
2297        <attr name="permission" />
2298        <attr name="process" />
2299        <!-- Specify whether the service is enabled or not (that is, can be instantiated by the system).
2300             It can also be specified for an application as a whole, in which case a value of "false"
2301             will override any component specific values (a value of "true" will not override the
2302             component specific values). -->
2303        <attr name="enabled" />
2304        <attr name="exported" />
2305        <!-- If set to true, this service with be automatically stopped
2306             when the user remove a task rooted in an activity owned by
2307             the application.  The default is false. -->
2308        <attr name="stopWithTask" format="boolean" />
2309        <!-- If set to true, this service will run under a special process
2310             that is isolated from the rest of the system.  The only communication
2311             with it is through the Service API (binding and starting). -->
2312        <attr name="isolatedProcess" format="boolean" />
2313        <attr name="singleUser" />
2314        <attr name="directBootAware" />
2315        <!-- If the service is an {@link android.R.attr#isolatedProcess} service, this permits a
2316             client to bind to the service as if it were running it its own package.  The service
2317             must also be {@link android.R.attr#exported} if this flag is set. -->
2318        <attr name="externalService" format="boolean" />
2319        <attr name="visibleToInstantApps" />
2320        <!-- The code for this component is located in the given split. -->
2321        <attr name="splitName" />
2322        <!-- If true, and this is an {@link android.R.attr#isolatedProcess} service, the service
2323             will be spawned from an Application Zygote, instead of the regular Zygote.
2324             <p>
2325             The Application Zygote will first pre-initialize the application's class loader. Then,
2326             if the application has defined the {@link android.R.attr#zygotePreloadName} attribute,
2327             the Application Zygote will call into that class to allow it to perform
2328             application-specific preloads (such as loading a shared library). Therefore,
2329             spawning from the Application Zygote will typically reduce the service
2330             launch time and reduce its memory usage. The downside of using this flag
2331             is that you will have an additional process (the app zygote itself) that
2332             is taking up memory. Whether actual memory usage is improved therefore strongly
2333             depends on the number of isolated services that an application starts,
2334             and how much memory those services save by preloading and sharing memory with
2335             the app zygote. Therefore, it is recommended to measure memory usage under
2336             typical workloads to determine whether it makes sense to use this flag. -->
2337        <attr name="useAppZygote" format="boolean" />
2338        <!-- If this is a foreground service, specify its category. -->
2339        <attr name="foregroundServiceType" />
2340    </declare-styleable>
2341
2342    <!-- The <code>receiver</code> tag declares an
2343         {@link android.content.BroadcastReceiver} class that is available
2344         as part of the package's application components, allowing the
2345         application to receive actions or data broadcast by other
2346         applications even if it is not currently running.
2347
2348         <p>Zero or more {@link #AndroidManifestIntentFilter intent-filter}
2349         tags can be included inside of a receiver, to specify the Intents
2350         it will receive.  If none are specified, the receiver will only
2351         be run when an Intent is broadcast that is directed at its specific
2352         class name.  The receiver tag appears as a child tag of the
2353         {@link #AndroidManifestApplication application} tag. -->
2354    <declare-styleable name="AndroidManifestReceiver" parent="AndroidManifestApplication">
2355        <!-- Required name of the class implementing the receiver, deriving from
2356            {@link android.content.BroadcastReceiver}.  This is a fully
2357            qualified class name (for example, com.mycompany.myapp.MyReceiver); as a
2358            short-hand if the first character of the class
2359            is a period then it is appended to your package name. -->
2360        <attr name="name" />
2361        <attr name="label" />
2362        <attr name="description" />
2363        <attr name="icon" />
2364        <attr name="roundIcon" />
2365        <attr name="banner" />
2366        <attr name="logo" />
2367        <attr name="permission" />
2368        <attr name="process" />
2369        <!-- Specify whether the receiver is enabled or not (that is, can be instantiated by the system).
2370             It can also be specified for an application as a whole, in which case a value of "false"
2371             will override any component specific values (a value of "true" will not override the
2372             component specific values). -->
2373        <attr name="enabled" />
2374        <attr name="exported" />
2375        <attr name="singleUser" />
2376        <attr name="directBootAware" />
2377    </declare-styleable>
2378
2379    <!-- The <code>activity</code> tag declares an
2380         {@link android.app.Activity} class that is available
2381         as part of the package's application components, implementing
2382         a part of the application's user interface.
2383
2384         <p>Zero or more {@link #AndroidManifestIntentFilter intent-filter}
2385         tags can be included inside of an activity, to specify the Intents
2386         that it can handle.  If none are specified, the activity can
2387         only be started through direct specification of its class name.
2388         The activity tag appears as a child tag of the
2389         {@link #AndroidManifestApplication application} tag. -->
2390    <declare-styleable name="AndroidManifestActivity" parent="AndroidManifestApplication">
2391        <!-- Required name of the class implementing the activity, deriving from
2392            {@link android.app.Activity}.  This is a fully
2393            qualified class name (for example, com.mycompany.myapp.MyActivity); as a
2394            short-hand if the first character of the class
2395            is a period then it is appended to your package name. -->
2396        <attr name="name" />
2397        <attr name="theme" />
2398        <attr name="label" />
2399        <attr name="description" />
2400        <attr name="icon" />
2401        <attr name="roundIcon" />
2402        <attr name="banner" />
2403        <attr name="logo" />
2404        <attr name="launchMode" />
2405        <attr name="screenOrientation" />
2406        <attr name="configChanges" />
2407        <attr name="recreateOnConfigChanges" />
2408        <attr name="permission" />
2409        <attr name="multiprocess" />
2410        <attr name="process" />
2411        <attr name="taskAffinity" />
2412        <attr name="allowTaskReparenting" />
2413        <attr name="finishOnTaskLaunch" />
2414        <attr name="finishOnCloseSystemDialogs" />
2415        <attr name="clearTaskOnLaunch" />
2416        <attr name="noHistory" />
2417        <attr name="alwaysRetainTaskState" />
2418        <attr name="stateNotNeeded" />
2419        <attr name="excludeFromRecents" />
2420        <!-- @deprecated use {@link android.R.attr#showForAllUsers} instead. -->
2421        <attr name="showOnLockScreen" />
2422        <!-- Specify whether the activity is enabled or not (that is, can be instantiated by the system).
2423             It can also be specified for an application as a whole, in which case a value of "false"
2424             will override any component specific values (a value of "true" will not override the
2425             component specific values). -->
2426        <attr name="enabled" />
2427        <attr name="exported" />
2428        <!-- Specify the default soft-input mode for the main window of
2429             this activity.  A value besides "unspecified" here overrides
2430             any value in the theme. -->
2431        <attr name="windowSoftInputMode" />
2432        <attr name="immersive" />
2433        <attr name="hardwareAccelerated" />
2434        <attr name="uiOptions" />
2435        <attr name="parentActivityName" />
2436        <attr name="singleUser" />
2437        <!-- @hide This broadcast receiver or activity will only receive broadcasts for the
2438             system user-->
2439        <attr name="systemUserOnly" format="boolean" />
2440        <attr name="persistableMode" />
2441        <attr name="allowEmbedded" />
2442        <attr name="documentLaunchMode" />
2443        <attr name="maxRecents" />
2444        <attr name="autoRemoveFromRecents" />
2445        <attr name="relinquishTaskIdentity" />
2446        <attr name="resumeWhilePausing" />
2447        <attr name="resizeableActivity" />
2448        <attr name="supportsPictureInPicture" />
2449        <attr name="maxAspectRatio" />
2450        <attr name="minAspectRatio" />
2451        <attr name="lockTaskMode" />
2452        <attr name="showForAllUsers" />
2453
2454        <attr name="showWhenLocked" />
2455        <attr name="inheritShowWhenLocked" />
2456        <attr name="turnScreenOn" />
2457
2458        <attr name="directBootAware" />
2459        <!-- @hide This activity is always focusable regardless of if it is in a task/stack whose
2460             activities are normally not focusable.
2461             For example, {@link android.R.attr#supportsPictureInPicture} activities are placed
2462             in a task/stack that isn't focusable. This flag allows them to be focusable.-->
2463        <attr name="alwaysFocusable" format="boolean" />
2464        <attr name="enableVrMode" />
2465        <attr name="rotationAnimation" />
2466        <attr name="visibleToInstantApps" />
2467        <!-- The code for this component is located in the given split. -->
2468        <attr name="splitName" />
2469        <!-- Specify the color mode the activity desires. The requested color mode may be ignored
2470             depending on the capabilities of the display the activity is displayed on. -->
2471        <attr name="colorMode">
2472            <!-- The default color mode (typically sRGB, low-dynamic range). -->
2473            <enum name="default" value="0" />
2474            <!-- Wide color gamut color mode. -->
2475            <enum name="wideColorGamut" value="1" />
2476            <!-- High dynamic range color mode. -->
2477            <enum name="hdr" value="2" />
2478        </attr>
2479    </declare-styleable>
2480
2481    <!-- The <code>activity-alias</code> tag declares a new
2482         name for an existing {@link #AndroidManifestActivity activity}
2483         tag.
2484
2485         <p>Zero or more {@link #AndroidManifestIntentFilter intent-filter}
2486         tags can be included inside of an activity-alias, to specify the Intents
2487         that it can handle.  If none are specified, the activity can
2488         only be started through direct specification of its class name.
2489         The activity-alias tag appears as a child tag of the
2490         {@link #AndroidManifestApplication application} tag. -->
2491    <declare-styleable name="AndroidManifestActivityAlias" parent="AndroidManifestApplication">
2492        <!-- Required name of the class implementing the activity, deriving from
2493            {@link android.app.Activity}.  This is a fully
2494            qualified class name (for example, com.mycompany.myapp.MyActivity); as a
2495            short-hand if the first character of the class
2496            is a period then it is appended to your package name. -->
2497        <attr name="name" />
2498        <!-- The name of the activity this alias should launch.  The activity
2499             must be in the same manifest as the alias, and have been defined
2500             in that manifest before the alias here.  This must use a Java-style
2501             naming convention to ensure the name is unique, for example
2502             "com.mycompany.MyName". -->
2503        <attr name="targetActivity" format="string" />
2504        <attr name="label" />
2505        <attr name="description" />
2506        <attr name="icon" />
2507        <attr name="roundIcon" />
2508        <attr name="banner" />
2509        <attr name="logo" />
2510        <attr name="permission" />
2511        <!-- Specify whether the activity-alias is enabled or not (that is, can be instantiated by the system).
2512             It can also be specified for an application as a whole, in which case a value of "false"
2513             will override any component specific values (a value of "true" will not override the
2514             component specific values). -->
2515        <attr name="enabled" />
2516        <attr name="exported" />
2517        <attr name="parentActivityName" />
2518    </declare-styleable>
2519
2520    <!-- The <code>meta-data</code> tag is used to attach additional
2521         arbitrary data to an application component.  The data can later
2522         be retrieved programmatically from the
2523         {@link android.content.pm.ComponentInfo#metaData
2524         ComponentInfo.metaData} field.  There is no meaning given to this
2525         data by the system.  You may supply the data through either the
2526         <code>value</code> or <code>resource</code> attribute; if both
2527         are given, then <code>resource</code> will be used.
2528
2529         <p>It is highly recommended that you avoid supplying related data as
2530         multiple separate meta-data entries.  Instead, if you have complex
2531         data to associate with a component, then use the <code>resource</code>
2532         attribute to assign an XML resource that the client can parse to
2533         retrieve the complete data. -->
2534    <declare-styleable name="AndroidManifestMetaData"
2535         parent="AndroidManifestApplication
2536                 AndroidManifestActivity
2537                 AndroidManifestReceiver
2538                 AndroidManifestProvider
2539                 AndroidManifestService
2540                 AndroidManifestPermission
2541                 AndroidManifestPermissionGroup
2542                 AndroidManifestInstrumentation">
2543        <attr name="name" />
2544        <!-- Concrete value to assign to this piece of named meta-data.
2545             The data can later be retrieved from the meta data Bundle
2546             through {@link android.os.Bundle#getString Bundle.getString},
2547             {@link android.os.Bundle#getInt Bundle.getInt},
2548             {@link android.os.Bundle#getBoolean Bundle.getBoolean},
2549             or {@link android.os.Bundle#getFloat Bundle.getFloat} depending
2550             on the type used here. -->
2551        <attr name="value" format="string|integer|color|float|boolean" />
2552        <!-- Resource identifier to assign to this piece of named meta-data.
2553             The resource identifier can later be retrieved from the meta data
2554             Bundle through {@link android.os.Bundle#getInt Bundle.getInt}. -->
2555        <attr name="resource" format="reference" />
2556    </declare-styleable>
2557
2558    <!-- The <code>intent-filter</code> tag is used to construct an
2559         {@link android.content.IntentFilter} object that will be used
2560         to determine which component can handle a particular
2561         {@link android.content.Intent} that has been given to the system.
2562         It can be used as a child of the
2563         {@link #AndroidManifestActivity activity},
2564         {@link #AndroidManifestReceiver receiver} and
2565         {@link #AndroidManifestService service}
2566         tags.
2567
2568         <p> Zero or more {@link #AndroidManifestAction action},
2569         {@link #AndroidManifestCategory category}, and/or
2570         {@link #AndroidManifestData data} tags should be
2571         included inside to describe the contents of the filter.
2572
2573         <p> The optional label and icon attributes here are used with
2574         an activity to supply an alternative description of that activity
2575         when it is being started through an Intent matching this filter. -->
2576    <declare-styleable name="AndroidManifestIntentFilter"
2577         parent="AndroidManifestActivity AndroidManifestReceiver AndroidManifestService">
2578        <attr name="label" />
2579        <attr name="icon" />
2580        <attr name="roundIcon" />
2581        <attr name="banner" />
2582        <attr name="logo" />
2583        <attr name="priority" />
2584        <attr name="autoVerify" />
2585        <!-- Within an application, multiple intent filters may match a particular
2586             intent. This allows the app author to specify the order filters should
2587             be considered. We don't want to use priority because that is global
2588             across applications.
2589             <p>Only use if you really need to forcibly set the order in which
2590             filters are evaluated. It is preferred to target an activity with a
2591             directed intent instead.
2592             <p>The value is a single integer, with higher numbers considered to
2593             be better. If not specified, the default order is 0. -->
2594        <attr name="order" />
2595    </declare-styleable>
2596
2597    <!-- Attributes that can be supplied in an AndroidManifest.xml
2598         <code>action</code> tag, a child of the
2599         {@link #AndroidManifestIntentFilter intent-filter} tag.
2600         See {@link android.content.IntentFilter#addAction} for
2601         more information. -->
2602    <declare-styleable name="AndroidManifestAction" parent="AndroidManifestIntentFilter">
2603        <!-- The name of an action that is handled, using the Java-style
2604             naming convention.  For example, to support
2605             {@link android.content.Intent#ACTION_VIEW Intent.ACTION_VIEW}
2606             you would put <code>android.intent.action.VIEW</code> here.
2607             Custom actions should generally use a prefix matching the
2608             package name. -->
2609        <attr name="name" />
2610    </declare-styleable>
2611
2612    <!-- Attributes that can be supplied in an AndroidManifest.xml
2613         <code>data</code> tag, a child of the
2614         {@link #AndroidManifestIntentFilter intent-filter} tag, describing
2615         the types of data that match.  This tag can be specified multiple
2616         times to supply multiple data options, as described in the
2617         {@link android.content.IntentFilter} class.  Note that all such
2618         tags are adding options to the same IntentFilter so that, for example,
2619         <code>&lt;data android:scheme="myscheme" android:host="me.com" /&gt;</code>
2620         is equivalent to <code>&lt;data android:scheme="myscheme" /&gt;
2621         &lt;data android:host="me.com" /&gt;</code>. -->
2622    <declare-styleable name="AndroidManifestData" parent="AndroidManifestIntentFilter">
2623        <!-- Specify a MIME type that is handled, as per
2624             {@link android.content.IntentFilter#addDataType
2625             IntentFilter.addDataType()}.
2626             <p><em>Note: MIME type matching in the Android framework is
2627             case-sensitive, unlike formal RFC MIME types.  As a result,
2628             MIME types here should always use lower case letters.</em></p> -->
2629        <attr name="mimeType" format="string" />
2630        <!-- Specify a URI scheme that is handled, as per
2631             {@link android.content.IntentFilter#addDataScheme
2632             IntentFilter.addDataScheme()}.
2633             <p><em>Note: scheme matching in the Android framework is
2634             case-sensitive, unlike the formal RFC.  As a result,
2635             schemes here should always use lower case letters.</em></p> -->
2636        <attr name="scheme" format="string" />
2637        <!-- Specify a URI scheme specific part that must exactly match, as per
2638             {@link android.content.IntentFilter#addDataSchemeSpecificPart
2639             IntentFilter.addDataSchemeSpecificPart()} with
2640             {@link android.os.PatternMatcher#PATTERN_LITERAL}. -->
2641        <attr name="ssp" format="string" />
2642        <!-- Specify a URI scheme specific part that must be a prefix to match, as per
2643             {@link android.content.IntentFilter#addDataSchemeSpecificPart
2644             IntentFilter.addDataSchemeSpecificPart()} with
2645             {@link android.os.PatternMatcher#PATTERN_PREFIX}. -->
2646        <attr name="sspPrefix" format="string" />
2647        <!-- Specify a URI scheme specific part that matches a simple pattern, as per
2648             {@link android.content.IntentFilter#addDataSchemeSpecificPart
2649             IntentFilter.addDataSchemeSpecificPart()} with
2650             {@link android.os.PatternMatcher#PATTERN_SIMPLE_GLOB}.
2651             Note that because '\' is used as an escape character when
2652             reading the string from XML (before it is parsed as a pattern),
2653             you will need to double-escape: for example a literal "*" would
2654             be written as "\\*" and a literal "\" would be written as
2655             "\\\\".  This is basically the same as what you would need to
2656             write if constructing the string in Java code. -->
2657        <attr name="sspPattern" format="string" />
2658        <!-- Specify a URI authority host that is handled, as per
2659             {@link android.content.IntentFilter#addDataAuthority
2660             IntentFilter.addDataAuthority()}.
2661             <p><em>Note: host name matching in the Android framework is
2662             case-sensitive, unlike the formal RFC.  As a result,
2663             host names here should always use lower case letters.</em></p> -->
2664        <attr name="host" format="string" />
2665        <!-- Specify a URI authority port that is handled, as per
2666             {@link android.content.IntentFilter#addDataAuthority
2667             IntentFilter.addDataAuthority()}.  If a host is supplied
2668             but not a port, any port is matched. -->
2669        <attr name="port" format="string" />
2670        <!-- Specify a URI path that must exactly match, as per
2671             {@link android.content.IntentFilter#addDataPath
2672             IntentFilter.addDataPath()} with
2673             {@link android.os.PatternMatcher#PATTERN_LITERAL}. -->
2674        <attr name="path" />
2675        <!-- Specify a URI path that must be a prefix to match, as per
2676             {@link android.content.IntentFilter#addDataPath
2677             IntentFilter.addDataPath()} with
2678             {@link android.os.PatternMatcher#PATTERN_PREFIX}. -->
2679        <attr name="pathPrefix" />
2680        <!-- Specify a URI path that matches a simple pattern, as per
2681             {@link android.content.IntentFilter#addDataPath
2682             IntentFilter.addDataPath()} with
2683             {@link android.os.PatternMatcher#PATTERN_SIMPLE_GLOB}.
2684             Note that because '\' is used as an escape character when
2685             reading the string from XML (before it is parsed as a pattern),
2686             you will need to double-escape: for example a literal "*" would
2687             be written as "\\*" and a literal "\" would be written as
2688             "\\\\".  This is basically the same as what you would need to
2689             write if constructing the string in Java code. -->
2690        <attr name="pathPattern" />
2691        <!-- Specify a URI path that matches an advanced pattern, as per
2692             {@link android.content.IntentFilter#addDataPath
2693             IntentFilter.addDataPath()} with
2694             {@link android.os.PatternMatcher#PATTERN_ADVANCED_GLOB}.
2695             Note that because '\' is used as an escape character when
2696             reading the string from XML (before it is parsed as a pattern),
2697             you will need to double-escape: for example a literal "*" would
2698             be written as "\\*" and a literal "\" would be written as
2699             "\\\\".  This is basically the same as what you would need to
2700             write if constructing the string in Java code. -->
2701        <attr name="pathAdvancedPattern" />
2702    </declare-styleable>
2703
2704    <!-- Attributes that can be supplied in an AndroidManifest.xml
2705         <code>category</code> tag, a child of the
2706         {@link #AndroidManifestIntentFilter intent-filter} tag.
2707         See {@link android.content.IntentFilter#addCategory} for
2708         more information. -->
2709    <declare-styleable name="AndroidManifestCategory" parent="AndroidManifestIntentFilter">
2710        <!-- The name of category that is handled, using the Java-style
2711             naming convention.  For example, to support
2712             {@link android.content.Intent#CATEGORY_LAUNCHER Intent.CATEGORY_LAUNCHER}
2713             you would put <code>android.intent.category.LAUNCHER</code> here.
2714             Custom actions should generally use a prefix matching the
2715             package name. -->
2716        <attr name="name" />
2717    </declare-styleable>
2718
2719    <!-- Attributes that can be supplied in an AndroidManifest.xml
2720         <code>instrumentation</code> tag, a child of the root
2721         {@link #AndroidManifest manifest} tag. -->
2722    <declare-styleable name="AndroidManifestInstrumentation" parent="AndroidManifest">
2723        <!-- Required name of the class implementing the instrumentation, deriving from
2724            {@link android.app.Instrumentation}.  This is a fully
2725            qualified class name (for example, com.mycompany.myapp.MyActivity); as a
2726            short-hand if the first character of the class
2727            is a period then it is appended to your package name. -->
2728        <attr name="name" />
2729        <attr name="targetPackage" />
2730        <attr name="targetProcesses" />
2731        <attr name="label" />
2732        <attr name="icon" />
2733        <attr name="roundIcon" />
2734        <attr name="banner" />
2735        <attr name="logo" />
2736        <attr name="handleProfiling" />
2737        <attr name="functionalTest" />
2738    </declare-styleable>
2739
2740    <!-- Attributes that can be supplied in an AndroidManifest.xml
2741         <code>screen</code> tag, a child of <code>compatible-screens</code>,
2742         which is itself a child of the root
2743         {@link #AndroidManifest manifest} tag. -->
2744    <declare-styleable name="AndroidManifestCompatibleScreensScreen"
2745                       parent="AndroidManifest.AndroidManifestCompatibleScreens">
2746        <!-- Specifies a compatible screen size, as per the device
2747             configuration screen size bins. -->
2748        <attr name="screenSize">
2749            <!-- A small screen configuration, at least 240x320dp. -->
2750            <enum name="small" value="200" />
2751            <!-- A normal screen configuration, at least 320x480dp. -->
2752            <enum name="normal" value="300" />
2753            <!-- A large screen configuration, at least 400x530dp. -->
2754            <enum name="large" value="400" />
2755            <!-- An extra large screen configuration, at least 600x800dp. -->
2756            <enum name="xlarge" value="500" />
2757        </attr>
2758        <!-- Specifies a compatible screen density, as per the device
2759             configuration screen density bins. -->
2760        <attr name="screenDensity" format="integer">
2761            <!-- A low density screen, approximately 120dpi. -->
2762            <enum name="ldpi" value="120" />
2763            <!-- A medium density screen, approximately 160dpi. -->
2764            <enum name="mdpi" value="160" />
2765            <!-- A high density screen, approximately 240dpi. -->
2766            <enum name="hdpi" value="240" />
2767            <!-- An extra high density screen, approximately 320dpi. -->
2768            <enum name="xhdpi" value="320" />
2769            <!-- An extra extra high density screen, approximately 480dpi. -->
2770            <enum name="xxhdpi" value="480" />
2771            <!-- An extra extra extra high density screen, approximately 640dpi. -->
2772            <enum name="xxxhdpi" value="640" />
2773        </attr>
2774    </declare-styleable>
2775
2776    <!-- The <code>input-type</code> tag is a child of the <code>supports-input</code> tag, which
2777         is itself a child of the root {@link #AndroidManifest manifest} tag. Each
2778         <code>input-type</code> tag specifices the name of a specific input device type. When
2779         grouped with the other elements of the parent <code>supports-input</code> tag it defines
2780         a collection of input devices, which when all used together, are considered a supported
2781         input mechanism for the application. There may be multiple <code>supports-input</code>
2782         tags defined, each containing a different combination of input device types. -->
2783    <declare-styleable name="AndroidManifestSupportsInputInputType"
2784                       parent="AndroidManifest.AndroidManifestSupportsInput">
2785        <!-- Specifices the name of the input device type -->
2786        <attr name="name" />
2787    </declare-styleable>
2788
2789    <!-- The attribute that holds a Base64-encoded public key. -->
2790    <attr name="publicKey" format="string" />
2791
2792    <!-- Attributes relating to a package verifier. -->
2793    <declare-styleable name="AndroidManifestPackageVerifier" parent="AndroidManifest">
2794        <!-- Specifies the Java-style package name that defines this
2795             package verifier. -->
2796        <attr name="name" />
2797
2798        <!-- The Base64 encoded public key of the package verifier's
2799             signature. -->
2800        <attr name="publicKey" />
2801    </declare-styleable>
2802
2803    <!-- Attributes relating to resource overlay packages. -->
2804    <declare-styleable name="AndroidManifestResourceOverlay" parent="AndroidManifest">
2805        <!-- Package name of base package whose resources will be overlaid. -->
2806        <attr name="targetPackage" />
2807
2808        <!-- Category of the resource overlay. -->
2809        <attr name="category" format="string"/>
2810
2811        <!-- Load order of overlay package. -->
2812        <attr name="priority" />
2813
2814        <!-- Whether the given RRO is static or not. -->
2815        <attr name="isStatic" format="boolean" />
2816
2817        <!-- Required property name/value pair used to enable this overlay.
2818             e.g. name=ro.oem.sku value=MKT210.
2819             Overlay will be ignored unless system property exists and is
2820             set to specified value -->
2821        <!-- @hide This shouldn't be public. -->
2822        <attr name="requiredSystemPropertyName" format="string" />
2823        <!-- @hide This shouldn't be public. -->
2824        <attr name="requiredSystemPropertyValue" format="string" />
2825
2826        <!-- The name of the overlayable whose resources will be overlaid. -->
2827        <attr name="targetName" />
2828    </declare-styleable>
2829
2830    <!-- Declaration of an {@link android.content.Intent} object in XML.  May
2831         also include zero or more {@link #IntentCategory <category>} and
2832         {@link #Extra <extra>} tags. -->
2833    <declare-styleable name="Intent">
2834        <!-- The action name to assign to the Intent, as per
2835            {@link android.content.Intent#setAction Intent.setAction()}. -->
2836        <attr name="action" format="string" />
2837        <!-- The data URI to assign to the Intent, as per
2838            {@link android.content.Intent#setData Intent.setData()}.
2839            <p><em>Note: scheme and host name matching in the Android framework is
2840            case-sensitive, unlike the formal RFC.  As a result,
2841            URIs here should always be normalized to use lower case letters
2842            for these elements (as well as other proper Uri normalization).</em></p> -->
2843        <attr name="data" format="string" />
2844        <!-- The MIME type name to assign to the Intent, as per
2845            {@link android.content.Intent#setType Intent.setType()}.
2846            <p><em>Note: MIME type matching in the Android framework is
2847            case-sensitive, unlike formal RFC MIME types.  As a result,
2848            MIME types here should always use lower case letters.</em></p> -->
2849        <attr name="mimeType" />
2850        <!-- The identifier to assign to the intent, as per
2851            {@link android.content.Intent#setIdentifier Intent.setIdentifier()}. -->
2852        <attr name="identifier" format="string" />
2853        <!-- The package part of the ComponentName to assign to the Intent, as per
2854            {@link android.content.Intent#setComponent Intent.setComponent()}. -->
2855        <attr name="targetPackage" />
2856        <!-- The class part of the ComponentName to assign to the Intent, as per
2857            {@link android.content.Intent#setComponent Intent.setComponent()}. -->
2858        <attr name="targetClass" format="string" />
2859    </declare-styleable>
2860
2861    <!-- A category to add to an Intent, as per
2862            {@link android.content.Intent#addCategory Intent.addCategory()}. -->
2863    <declare-styleable name="IntentCategory" parent="Intent">
2864        <!-- Required name of the category. -->
2865        <attr name="name" />
2866    </declare-styleable>
2867
2868    <!-- An extra data value to place into a an extra/name value pair held
2869            in a Bundle, as per {@link android.os.Bundle}. -->
2870    <declare-styleable name="Extra" parent="Intent">
2871        <!-- Required name of the extra data. -->
2872        <attr name="name" />
2873        <!-- Concrete value to put for this named extra data. -->
2874        <attr name="value" />
2875    </declare-styleable>
2876
2877    <!-- Groups signing keys into a {@code KeySet} for easier reference in
2878            other APIs. However, currently no APIs use this. -->
2879    <attr name="keySet" />
2880    <declare-styleable name="AndroidManifestPublicKey">
2881        <attr name="name" />
2882        <attr name="value" />
2883    </declare-styleable>
2884    <declare-styleable name="AndroidManifestKeySet">
2885        <attr name="name" />
2886    </declare-styleable>
2887
2888    <!-- Associate declared KeySets with upgrading capability. -->
2889    <declare-styleable name="AndroidManifestUpgradeKeySet" parent="AndroidManifest">
2890      <attr name="name" />
2891    </declare-styleable>
2892
2893    <!-- <code>layout</code> tag allows configuring the layout for the activity within multi-window
2894         environment. -->
2895    <declare-styleable name="AndroidManifestLayout" parent="AndroidManifestActivity">
2896        <!-- Default width of the activity. Can be either a fixed value or fraction, in which case
2897             the width will be constructed as a fraction of the total available width. -->
2898        <attr name="defaultWidth" format="dimension|fraction" />
2899        <!-- Default height of the activity. Can be either a fixed value or fraction, in which case
2900             the height will be constructed as a fraction of the total available height. -->
2901        <attr name="defaultHeight" format="dimension|fraction" />
2902        <!-- Where to initially position the activity inside the available space. Uses constants
2903             defined in {@link android.view.Gravity}. -->
2904        <attr name="gravity" />
2905        <!-- Minimal width of the activity.
2906
2907         <p><strong>NOTE:</strong> A task's root activity value is applied to all additional
2908         activities launched in the task. That is if the root activity of a task set minimal width,
2909         then the system will set the same minimal width on all other activities in the task. It
2910         will also ignore any other minimal width attributes of non-root activities. -->
2911        <attr name="minWidth" />
2912        <!-- Minimal height of the activity.
2913
2914         <p><strong>NOTE:</strong> A task's root activity value is applied to all additional
2915         activities launched in the task. That is if the root activity of a task set minimal height,
2916         then the system will set the same minimal height on all other activities in the task. It
2917         will also ignore any other minimal height attributes of non-root activities. -->
2918        <attr name="minHeight" />
2919    </declare-styleable>
2920
2921    <!-- <code>restrict-update</code> tag restricts system apps from being updated unless the
2922        SHA-512 hash equals the specified value.
2923        @hide -->
2924    <declare-styleable name="AndroidManifestRestrictUpdate" parent="AndroidManifest">
2925        <!-- The SHA-512 hash of the only APK that can be used to update a package.
2926             <p>NOTE: This is only applicable to system packages.
2927             @hide -->
2928        <attr name="hash" format="string" />
2929    </declare-styleable>
2930
2931    <declare-styleable name="AndroidManifestUsesSplit" parent="AndroidManifest">
2932        <attr name="name" format="string" />
2933    </declare-styleable>
2934
2935
2936    <declare-styleable name="AndroidManifestProfileable" parent="AndroidManifestApplication">
2937        <!-- Flag indicating whether the application can be profiled by the shell user,
2938             even when running on a device that is running in user mode. -->
2939        <attr name="shell" format="boolean" />
2940    </declare-styleable>
2941</resources>
2942