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