attrs_manifest.xml revision 3fc982f41fda1f254bfbc35490d81cd82a0ed90a
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 an extended graphical logo for its
66         associated item. Use with the application tag (to supply a default
67         logo for all application components), or with the activity, receiver,
68         service, or instrumentation tag (to supply a specific logo for that
69         component). It may also be used with the intent-filter tag to supply
70         a logo to show to the user when an activity is being selected based
71         on a particular Intent.
72
73         <p>The given logo will be used to display to the user a graphical
74         representation of its associated component; for example as the
75         header in the Action Bar. The primary differences between an icon
76         and a logo are that logos are often wider and more detailed, and are
77         used without an accompanying text caption. This must be a reference
78         to a Drawable resource containing the image definition. -->
79    <attr name="logo" format="reference" />
80
81    <!-- Name of the activity to be launched to manage application's space on
82         device. The specified activity gets automatically launched when the
83         application's space needs to be managed and is usually invoked 
84         through user actions. Applications can thus provide their own custom
85         behavior for managing space for various scenarios like out of memory
86         conditions. This is an optional attribute and
87         applications can choose not to specify a default activity to 
88         manage space. -->
89    <attr name="manageSpaceActivity" format="string" />
90
91    <!-- Option to let applications specify that user data can/cannot be 
92         cleared. This flag is turned on by default.
93         <em>This attribute is usable only by applications
94         included in the system image. Third-party apps cannot use it.</em> -->
95    <attr name="allowClearUserData" format="boolean" />
96
97    <!-- Option to let applications specify that user data should
98         never be encrypted if an Encrypted File System solution
99         is enabled. Specifically, this is an "opt-out" feature, meaning
100         that, by default, user data will be encrypted if the EFS feature
101         is enabled. -->
102    <attr name="neverEncrypt" format="boolean" />
103
104    <!-- Option to indicate this application is only for testing purposes.
105         For example, it may expose functionality or data outside of itself
106         that would cause a security hole, but is useful for testing.  This
107         kind of application can not be installed without the
108         INSTALL_ALLOW_TEST flag, which means only through adb install.  -->
109    <attr name="testOnly" format="boolean" />
110    
111    <!-- A unique name for the given item.  This must use a Java-style naming
112         convention to ensure the name is unique, for example
113         "com.mycompany.MyName". -->  
114    <attr name="name" format="string" />
115    
116    <!-- Specify a permission that a client is required to have in order to
117    	 use the associated object.  If the client does not hold the named
118    	 permission, its request will fail.  See the
119         <a href="{@docRoot}guide/topics/security/security.html">Security and Permissions</a>
120         document for more information on permissions. -->
121    <attr name="permission" format="string" />
122    
123    <!-- A specific {@link android.R.attr#permission} name for read-only
124         access to a {@link android.content.ContentProvider}.  See the
125         <a href="{@docRoot}guide/topics/security/security.html">Security and Permissions</a>
126         document for more information on permissions. -->
127    <attr name="readPermission" format="string" />
128    
129    <!-- A specific {@link android.R.attr#permission} name for write
130         access to a {@link android.content.ContentProvider}.  See the
131         <a href="{@docRoot}guide/topics/security/security.html">Security and Permissions</a>
132         document for more information on permissions. -->
133    <attr name="writePermission" format="string" />
134    
135    <!-- If true, the {@link android.content.Context#grantUriPermission
136         Context.grantUriPermission} or corresponding Intent flags can
137         be used to allow others to access specific URIs in the content
138         provider, even if they do not have an explicit read or write
139         permission.  If you are supporting this feature, you must be
140         sure to call {@link android.content.Context#revokeUriPermission
141         Context.revokeUriPermission} when URIs are deleted from your
142         provider.-->
143    <attr name="grantUriPermissions" format="boolean" />
144    
145    <!-- Characterizes the potential risk implied in a permission and
146         indicates the procedure the system should follow when determining
147         whether to grant the permission to an application requesting it. {@link
148         android.Manifest.permission Standard permissions} have a predefined and
149         permanent protectionLevel. If you are creating a custom permission in an
150         application, you can define a protectionLevel attribute with one of the
151         values listed below. If no protectionLevel is defined for a custom
152         permission, the system assigns the default ("normal"). -->
153    <attr name="protectionLevel">
154        <!-- A lower-risk permission that gives an application access to isolated
155             application-level features, with minimal risk to other applications,
156             the system, or the user. The system automatically grants this type
157             of permission to a requesting application at installation, without
158             asking for the user's explicit approval (though the user always
159             has the option to review these permissions before installing). -->
160        <enum name="normal" value="0" />
161        <!-- A higher-risk permission that would give a requesting application
162             access to private user data or control over the device that can
163             negatively impact the user.  Because this type of permission
164             introduces potential risk, the system may not automatically
165             grant it to the requesting application.  For example, any dangerous
166             permissions requested by an application may be displayed to the
167             user and require confirmation before proceeding, or some other
168             approach may be taken to avoid the user automatically allowing
169             the use of such facilities.  -->
170        <enum name="dangerous" value="1" />
171        <!-- A permission that the system is to grant only if the requesting
172             application is signed with the same certificate as the application
173             that declared the permission. If the certificates match, the system
174             automatically grants the permission without notifying the user or
175             asking for the user's explicit approval. -->
176        <enum name="signature" value="2" />
177        <!-- A permission that the system is to grant only to packages in the
178             Android system image <em>or</em> that are signed with the same
179             certificates. Please avoid using this option, as the
180             signature protection level should be sufficient for most needs and
181             works regardless of exactly where applications are installed.  This
182             permission is used for certain special situations where multiple
183             vendors have applications built in to a system image which need
184             to share specific features explicitly because they are being built
185             together. -->
186        <enum name="signatureOrSystem" value="3" />
187    </attr>
188    
189    <!-- Specified the name of a group that this permission is associated
190         with.  The group must have been defined with the
191         {@link android.R.styleable#AndroidManifestPermissionGroup permission-group} tag. -->
192    <attr name="permissionGroup" format="string" />
193    
194    <!-- Specify the name of a user ID that will be shared between multiple
195         packages.  By default, each package gets its own unique user-id.
196         By setting this value on two or more packages, each of these packages
197         will be given a single shared user ID, so they can for example run
198         in the same process.  Note that for them to actually get the same
199         user ID, they must also be signed with the same signature. -->
200    <attr name="sharedUserId" format="string" />
201    
202    <!-- Specify a label for the shared user UID of this package.  This is
203         only used if you have also used android:sharedUserId.  This must
204         be a reference to a string resource; it can not be an explicit
205         string. -->
206    <attr name="sharedUserLabel" format="reference" />
207    
208    <!-- Internal version code.  This is the number used to determine whether
209         one version is more recent than another: it has no other meaning than
210         that higher numbers are more recent.  You could use this number to
211         encode a "x.y" in the lower and upper 16 bits, make it a build
212         number, simply increase it by one each time a new version is
213         released, or define it however else you want, as long as each
214         successive version has a higher number.  This is not a version
215         number generally shown to the user, that is usually supplied 
216         with {@link android.R.attr#versionName}. -->
217    <attr name="versionCode" format="integer" />
218    
219    <!-- The text shown to the user to indicate the version they have.  This
220         is used for no other purpose than display to the user; the actual
221         significant version number is given by {@link android.R.attr#versionCode}. -->
222    <attr name="versionName" format="string" />
223    
224    <!-- Flag to control special persistent mode of an application.  This should
225         not normally be used by applications; it requires that the system keep
226         your application running at all times. -->
227    <attr name="persistent" format="boolean" />
228    
229    <!-- Flag indicating whether the application can be debugged, even when
230         running on a device that is running in user mode. -->
231    <attr name="debuggable" format="boolean" />
232    
233    <!-- Flag indicating whether the application requests the VM to operate in
234         the safe mode.  -->
235    <attr name="vmSafeMode" format="boolean" />
236
237    <!-- <p>Flag indicating whether the application's rendering should be hardware
238         accelerated if possible. This flag is turned off by default, both for
239         applications and activities.</p>
240         <p>This flag can be set on the application and any activity declared
241         in the manifest. When enabled for the application, each activity is
242         automatically assumed to be hardware accelerated. This flag can be
243         overriden in the activity tags, either turning it off (if on for the
244         application) or on (if off for the application.)</p>
245         <p>When this flag is turned on for an activity (either directly or via
246         the application tag), every window created from the activity, including
247         the activity's own window, will be hardware accelerated, if possible.</p>
248         <p>Please refer to the documentation of
249         {@link android.view.WindowManager.LayoutParams#FLAG_HARDWARE_ACCELERATED}
250         for more information on how to control this flag programmatically.</p> -->
251    <attr name="hardwareAccelerated" format="boolean" />
252
253    <!-- Flag indicating whether the given application component is available
254         to other applications.  If false, it can only be accessed by
255         applications with its same user id (which usually means only by
256         code in its own package).  If true, it can be invoked by external
257         entities, though which ones can do so may be controlled through
258         permissions.  The default value is false for activity, receiver,
259         and service components that do not specify any intent filters; it
260         is true for activity, receiver, and service components that do
261         have intent filters (implying they expect to be invoked by others
262         who do not know their particular component name) and for all
263         content providers. -->
264    <attr name="exported" format="boolean" />
265    
266    <!-- Specify a specific process that the associated code is to run in.
267         Use with the application tag (to supply a default process for all
268         application components), or with the activity, receiver, service,
269         or provider tag (to supply a specific icon for that component).
270    
271         <p>Application components are normally run in a single process that
272         is created for the entire application.  You can use this tag to modify
273         where they run.  If the process name begins with a ':' character,
274         a new process private to that application will be created when needed
275         to run that component (allowing you to spread your application across
276         multiple processes).  If the process name begins with a lower-case
277         character, the component will be run in a global process of that name,
278         provided that you have permission to do so, allowing multiple
279         applications to share one process to reduce resource usage. -->
280    <attr name="process" format="string" />
281    
282    <!-- Specify a task name that activities have an "affinity" to.
283         Use with the application tag (to supply a default affinity for all
284         activities in the application), or with the activity tag (to supply
285         a specific affinity for that component).
286    
287         <p>The default value for this attribute is the same as the package
288         name, indicating that all activities in the manifest should generally
289         be considered a single "application" to the user.  You can use this
290         attribute to modify that behavior: either giving them an affinity
291         for another task, if the activities are intended to be part of that
292         task from the user's perspective, or using an empty string for
293         activities that have no affinity to a task. -->
294    <attr name="taskAffinity" format="string" />
295    
296    <!-- Specify that an activity can be moved out of a task it is in to
297         the task it has an affinity for when appropriate.  Use with the
298         application tag (to supply a default for all activities in the
299         application), or with an activity tag (to supply a specific
300         setting for that component).
301    
302         <p>Normally when an application is started, it is associated with
303         the task of the activity that started it and stays there for its
304         entire lifetime.  You can use the allowTaskReparenting feature to force an
305         activity to be re-parented to a different task when the task it is
306         in goes to the background.  Typically this is used to cause the
307         activities of an application to move back to the main task associated
308         with that application.  The activity is re-parented to the task
309         with the same {@link android.R.attr#taskAffinity} as it has. -->
310    <attr name="allowTaskReparenting" format="boolean" />
311    
312    <!-- Specify whether a component is allowed to have multiple instances
313         of itself running in different processes.  Use with the activity
314         and provider tags.
315    
316         <p>Normally the system will ensure that all instances of a particular
317         component are only running in a single process.  You can use this
318         attribute to disable that behavior, allowing the system to create
319         instances wherever they are used (provided permissions allow it).
320         This is most often used with content providers, so that instances
321         of a provider can be created in each client process, allowing them
322         to be used without performing IPC.  -->
323    <attr name="multiprocess" format="boolean" />
324    
325    <!-- Specify whether an activity should be finished when its task is
326         brought to the foreground by relaunching from the home screen.
327         
328         <p>If both this option and {@link android.R.attr#allowTaskReparenting} are
329         specified, the finish trumps the affinity: the affinity will be
330         ignored and the activity simply finished. -->
331    <attr name="finishOnTaskLaunch" format="boolean" />
332    
333    <!-- Specify whether an activity should be finished when a "close system
334         windows" request has been made.  This happens, for example, when
335         the home key is pressed, when the device is locked, when a system
336         dialog showing recent applications is displayed, etc. -->
337    <attr name="finishOnCloseSystemDialogs" format="boolean" />
338    
339    <!-- Specify whether an activity's task should be cleared when it
340         is re-launched from the home screen.  As a result, every time the
341         user starts the task, they will be brought to its root activity,
342         regardless of whether they used BACK or HOME to last leave it.
343         This flag only applies to activities that
344         are used to start the root of a new task.
345         
346         <p>An example of the use of this flag would be for the case where
347         a user launches activity A from home, and from there goes to
348         activity B.  They now press home, and then return to activity A.
349         Normally they would see activity B, since that is what they were
350         last doing in A's task.  However, if A has set this flag to true,
351         then upon going to the background all of the tasks on top of it (B
352         in this case) are removed, so when the user next returns to A they
353         will restart at its original activity.
354         
355         <p>When this option is used in conjunction with
356         {@link android.R.attr#allowTaskReparenting}, the allowTaskReparenting trumps the
357         clear.  That is, all activities above the root activity of the
358         task will be removed: those that have an affinity will be moved
359         to the task they are associated with, otherwise they will simply
360         be dropped as described here. -->
361    <attr name="clearTaskOnLaunch" format="boolean" />
362    
363    <!-- Specify whether an activity should be kept in its history stack.
364         If this attribute is set, then as soon as the user navigates away
365         from the activity it will be finished and they will no longer be
366         able to return to it. -->
367    <attr name="noHistory" format="boolean" />
368    
369    <!-- Specify whether an acitivty's task state should always be maintained
370         by the system, or if it is allowed to reset the task to its initial
371         state in certain situations.
372         
373         <p>Normally the system will reset a task (remove all activities from
374         the stack and reset the root activity) in certain situations when
375         the user re-selects that task from the home screen.  Typically this
376         will be done if the user hasn't visited that task for a certain
377         amount of time, such as 30 minutes.
378         
379         <p>By setting this attribute, the user will always return to your
380         task in its last state, regardless of how they get there.  This is
381         useful, for example, in an application like the web browser where there
382         is a lot of state (such as multiple open tabs) that the application
383         would not like to lose. -->
384    <attr name="alwaysRetainTaskState" format="boolean" />
385    
386    <!-- Indicates that an Activity does not need to have its freeze state
387         (as returned by {@link android.app.Activity#onSaveInstanceState}
388         retained in order to be restarted.  Generally you use this for activities
389         that do not store any state.  When this flag is set, if for some reason
390         the activity is killed before it has a chance to save its state,
391         then the system will not remove it from the activity stack like
392         it normally would.  Instead, the next time the user navigates to
393         it its {@link android.app.Activity#onCreate} method will be called
394         with a null icicle, just like it was starting for the first time.
395         
396         <p>This is used by the Home activity to make sure it does not get
397         removed if it crashes for some reason. -->
398    <attr name="stateNotNeeded" format="boolean" />
399
400    <!-- Indicates that an Activity should be excluded from the list of
401         recently launched activities. -->
402    <attr name="excludeFromRecents" format="boolean" />
403
404    <!-- Specify the authorities under which this content provider can be
405         found.  Multiple authorities may be supplied by separating them
406         with a semicolon.  Authority names should use a Java-style naming
407         convention (such as <code>com.google.provider.MyProvider</code>)
408         in order to avoid conflicts.  Typically this name is the same
409         as the class implementation describing the provider's data structure. -->
410    <attr name="authorities" format="string" />
411    
412    <!-- Flag indicating whether this content provider would like to
413         participate in data synchronization. -->
414    <attr name="syncable" format="boolean" />
415    
416    <!-- Flag declaring this activity to be 'immersive'; immersive activities
417         should not be interrupted with other activities or notifications. -->
418    <attr name="immersive" format="boolean" />
419
420    <!-- Specify the order in which content providers hosted by a process
421         are instantiated when that process is created.  Not needed unless
422         you have providers with dependencies between each other, to make
423         sure that they are created in the order needed by those dependencies.
424         The value is a simple integer, with higher numbers being
425         initialized first. -->
426    <attr name="initOrder" format="integer" />
427    
428    <!-- Specify the relative importance or ability in handling a particular
429         Intent.  For receivers, this controls the order in which they are
430         executed to receive a broadcast (note that for
431         asynchronous broadcasts, this order is ignored).  For activities,
432         this provides information about how good an activity is handling an
433         Intent; when multiple activities match an intent and have different
434         priorities, only those with the higher priority value will be
435         considered a match.
436         
437         <p>Only use if you really need to impose some specific
438         order in which the broadcasts are received, or want to forcibly
439         place an activity to always be preferred over others.  The value is a
440         single integer, with higher numbers considered to be better. -->
441    <attr name="priority" format="integer" />
442    
443    <!-- Specify how an activity should be launched.  See the
444         <a href="{@docRoot}guide/topics/fundamentals/tasks-and-back-stack.html">Tasks and Back
445         Stack</a> document for important information on how these options impact
446         the behavior of your application.
447         
448         <p>If this attribute is not specified, <code>standard</code> launch
449         mode will be used.  Note that the particular launch behavior can
450         be changed in some ways at runtime through the
451         {@link android.content.Intent} flags
452         {@link android.content.Intent#FLAG_ACTIVITY_SINGLE_TOP},
453         {@link android.content.Intent#FLAG_ACTIVITY_NEW_TASK}, and
454         {@link android.content.Intent#FLAG_ACTIVITY_MULTIPLE_TASK}. -->
455    <attr name="launchMode">
456        <!-- The default mode, which will usually create a new instance of
457             the activity when it is started, though this behavior may change
458             with the introduction of other options such as
459             {@link android.content.Intent#FLAG_ACTIVITY_NEW_TASK
460             Intent.FLAG_ACTIVITY_NEW_TASK}. -->
461        <enum name="standard" value="0" />
462        <!-- If, when starting the activity, there is already an
463            instance of the same activity class in the foreground that is
464            interacting with the user, then
465            re-use that instance.  This existing instance will receive a call to
466            {@link android.app.Activity#onNewIntent Activity.onNewIntent()} with
467            the new Intent that is being started. -->
468        <enum name="singleTop" value="1" />
469        <!-- If, when starting the activity, there is already a task running
470            that starts with this activity, then instead of starting a new
471            instance the current task is brought to the front.  The existing
472            instance will receive a call to {@link android.app.Activity#onNewIntent
473            Activity.onNewIntent()}
474            with the new Intent that is being started, and with the
475            {@link android.content.Intent#FLAG_ACTIVITY_BROUGHT_TO_FRONT
476            Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT} flag set.  This is a superset
477            of the singleTop mode, where if there is already an instance
478            of the activity being started at the top of the stack, it will
479            receive the Intent as described there (without the
480            FLAG_ACTIVITY_BROUGHT_TO_FRONT flag set).  See the
481            <a href="{@docRoot}guide/topics/fundamentals/tasks-and-back-stack.html">Tasks and Back
482            Stack</a> document for more details about tasks.-->
483        <enum name="singleTask" value="2" />
484        <!-- Only allow one instance of this activity to ever be 
485            running.  This activity gets a unique task with only itself running 
486            in it; if it is ever launched again with the same Intent, then that 
487            task will be brought forward and its 
488            {@link android.app.Activity#onNewIntent Activity.onNewIntent()}
489            method called.  If this 
490            activity tries to start a new activity, that new activity will be 
491            launched in a separate task.  See the
492            <a href="{@docRoot}guide/topics/fundamentals/tasks-and-back-stack.html">Tasks and Back
493            Stack</a> document for more details about tasks.-->
494        <enum name="singleInstance" value="3" />
495    </attr>
496    
497    <!-- Specify the orientation an activity should be run in.  If not
498         specified, it will run in the current preferred orientation
499         of the screen. -->
500    <attr name="screenOrientation">
501        <!-- No preference specified: let the system decide the best
502             orientation.  This will either be the orientation selected
503             by the activity below, or the user's preferred orientation
504             if this activity is the bottom of a task. If the user
505             explicitly turned off sensor based orientation through settings
506             sensor based device rotation will be ignored. If not by default
507             sensor based orientation will be taken into account and the 
508             orientation will changed based on how the user rotates the device -->
509        <enum name="unspecified" value="-1" />
510        <!-- Would like to have the screen in a landscape orientation: that
511             is, with the display wider than it is tall, ignoring sensor data. -->
512        <enum name="landscape" value="0" />
513        <!-- Would like to have the screen in a portrait orientation: that
514             is, with the display taller than it is wide, ignoring sensor data. -->
515        <enum name="portrait" value="1" />
516        <!-- Use the user's current preferred orientation of the handset. -->
517        <enum name="user" value="2" />
518        <!-- Keep the screen in the same orientation as whatever is behind
519             this activity. -->
520        <enum name="behind" value="3" />
521        <!-- Orientation is determined by a physical orientation sensor:
522             the display will rotate based on how the user moves the device. -->
523        <enum name="sensor" value="4" />
524        <!-- Always ignore orientation determined by orientation sensor:
525             the display will not rotate when the user moves the device. -->
526        <enum name="nosensor" value="5" />
527        <!-- Would like to have the screen in landscape orientation, but can
528             use the sensor to change which direction the screen is facing. -->
529        <enum name="sensorLandscape" value="6" />
530        <!-- Would like to have the screen in portrait orientation, but can
531             use the sensor to change which direction the screen is facing. -->
532        <enum name="sensorPortait" value="7" />
533        <!-- Would like to have the screen in landscape orientation, turned in
534             the opposite direction from normal landscape. -->
535        <enum name="reverseLandscape" value="8" />
536        <!-- Would like to have the screen in portrait orientation, turned in
537             the opposite direction from normal portrait. -->
538        <enum name="reversePortait" value="9" />
539        <!-- Orientation is determined by a physical orientation sensor:
540             the display will rotate based on how the user moves the device.
541             This allows any of the 4 possible rotations, regardless of what
542             the device will normally do (for example some devices won't
543             normally use 180 degree rotation). -->
544        <enum name="fullSensor" value="10" />
545    </attr>
546    
547    <!-- Specify one or more configuration changes that the activity will
548         handle itself.  If not specified, the activity will be restarted
549         if any of these configuration changes happen in the system.  Otherwise,
550         the activity will remain running and its
551         {@link android.app.Activity#onConfigurationChanged Activity.onConfigurationChanged}
552         method called with the new configuration.
553         
554         <p>Note that all of these configuration changes can impact the
555         resource values seen by the application, so you will generally need
556         to re-retrieve all resources (including view layouts, drawables, etc)
557         to correctly handle any configuration change.
558         
559         <p>These values must be kept in sync with those in
560         {@link android.content.pm.ActivityInfo} and
561         include/utils/ResourceTypes.h. -->
562    <attr name="configChanges">
563        <!-- The IMSI MCC has changed, that is a SIM has been detected and
564             updated the Mobile Country Code. -->
565        <flag name="mcc" value="0x0001" />
566        <!-- The IMSI MNC has changed, that is a SIM has been detected and
567             updated the Mobile Network Code. -->
568        <flag name="mnc" value="0x0002" />
569        <!-- The locale has changed, that is the user has selected a new
570             language that text should be displayed in. -->
571        <flag name="locale" value="0x0004" />
572        <!-- The touchscreen has changed.  Should never normally happen. -->
573        <flag name="touchscreen" value="0x0008" />
574        <!-- The keyboard type has changed, for example the user has plugged
575             in an external keyboard. -->
576        <flag name="keyboard" value="0x0010" />
577        <!-- The keyboard or navigation accessibility has changed, for example
578             the user has slid the keyboard out to expose it.  Note that
579             despite its name, this applied to any accessibility: keyboard
580             or navigation. -->
581        <flag name="keyboardHidden" value="0x0020" />
582        <!-- The navigation type has changed.  Should never normally happen. -->
583        <flag name="navigation" value="0x0040" />
584        <!-- The screen orientation has changed, that is the user has
585             rotated the device. -->
586        <flag name="orientation" value="0x0080" />
587        <!-- The screen layout has changed.  This might be caused by a
588             different display being activated. -->
589        <flag name="screenLayout" value="0x0100" />
590        <!-- The global user interface mode has changed.  For example,
591             going in or out of car mode, night mode changing, etc. -->
592        <flag name="uiMode" value="0x0200" />
593        <!-- The physical screen size has changed.  If applications don't
594             target at least {@link android.os.Build.VERSION_CODES#ICE_CREAM_SANDWICH}
595             then the activity will always handle this itself (the change
596             will not result in a restart). -->
597        <flag name="screenSize" value="0x0400" />
598        <!-- The font scaling factor has changed, that is the user has
599             selected a new global font size. -->
600        <flag name="fontScale" value="0x40000000" />
601    </attr>
602    
603    <!-- Descriptive text for the associated data. -->
604    <attr name="description" format="reference" />
605    
606    <!-- The name of the application package that an Instrumentation object
607         will run against. -->
608    <attr name="targetPackage" format="string" />
609    
610    <!-- Flag indicating that an Instrumentation class wants to take care
611         of starting/stopping profiling itself, rather than relying on
612         the default behavior of profiling the complete time it is running.
613         This allows it to target profiling data at a specific set of
614         operations. -->
615    <attr name="handleProfiling" format="boolean" />
616    
617    <!-- Flag indicating that an Instrumentation class should be run as a
618         functional test. -->
619    <attr name="functionalTest" format="boolean" />
620
621    <!-- The touch screen type used by an application. -->
622    <attr name="reqTouchScreen">
623        <enum name="undefined" value="0" />
624        <enum name="notouch" value="1" />
625        <enum name="stylus" value="2" />
626        <enum name="finger" value="3" />
627    </attr>
628
629    <!-- The input method preferred by an application. -->
630    <attr name="reqKeyboardType">
631        <enum name="undefined" value="0" />
632        <enum name="nokeys" value="1" />
633        <enum name="qwerty" value="2" />
634        <enum name="twelvekey" value="3" />
635    </attr>
636
637    <!-- Application's requirement for a hard keyboard -->
638    <attr name="reqHardKeyboard" format="boolean" />
639
640    <!-- The navigation device preferred by an application. -->
641    <attr name="reqNavigation">
642        <enum name="undefined" value="0" />
643        <enum name="nonav" value="1" />
644        <enum name="dpad" value="2" />
645        <enum name="trackball" value="3" />
646        <enum name="wheel" value="4" />
647    </attr>
648
649    <!-- Application's requirement for five way navigation -->
650    <attr name="reqFiveWayNav" format="boolean" />
651
652    <!-- The name of the class subclassing <code>BackupAgent</code> to manage
653         backup and restore of the application's data on external storage. -->
654    <attr name="backupAgent" format="string" />
655
656    <!-- Whether to allow the application to participate in backup
657         infrastructure.  If this attribute is set to <code>false</code>, no backup
658         of the application will ever be performed, even by a full-system backup that
659         would otherwise cause all application data to be saved via adb.  The
660         default value of this attribute is <code>true</code>. -->
661    <attr name="allowBackup" format="boolean" />
662
663    <!-- Whether the application in question should be terminated after its
664         settings have been restored during a full-system restore operation.
665         Single-package restore operations will never cause the application to
666         be shut down.  Full-system restore operations typically only occur once,
667         when the phone is first set up.  Third-party applications will not usually
668         need to use this attribute.
669
670         <p>The default is <code>true</code>, which means that after the application
671         has finished processing its data during a full-system restore, it will be
672         terminated. -->
673    <attr name="killAfterRestore" format="boolean" />
674
675    <!-- @deprecated This attribute is not used by the Android operating system. -->
676    <attr name="restoreNeedsApplication" format="boolean" />
677
678    <!-- Indicate that the application is prepared to attempt a restore of any
679         backed-up dataset, even if the backup is apparently from a newer version
680         of the application than is currently installed on the device.  Setting
681         this attribute to <code>true</code> will permit the Backup Manager to
682         attempt restore even when a version mismatch suggests that the data are
683         incompatible.  <em>Use with caution!</em>
684
685         <p>The default value of this attribute is <code>false</code>. -->
686    <attr name="restoreAnyVersion" format="boolean" />
687
688    <!-- The default install location defined by an application. -->
689    <attr name="installLocation">
690        <!-- Let the system decide ideal install location -->
691        <enum name="auto" value="0" />
692        <!-- Explicitly request to be installed on internal phone storage
693             only. -->
694        <enum name="internalOnly" value="1" />
695        <!-- Prefer to be installed on SD card. There is no guarantee that
696             the system will honor this request. The application might end
697             up being installed on internal storage if external media
698             is unavailable or too full. -->
699        <enum name="preferExternal" value="2" />
700    </attr>
701
702    <!-- The <code>manifest</code> tag is the root of an
703         <code>AndroidManifest.xml</code> file,
704         describing the contents of an Android package (.apk) file.  One
705         attribute must always be supplied: <code>package</code> gives a
706         unique name for the package, using a Java-style naming convention
707         to avoid name collisions.  For example, applications published
708         by Google could have names of the form
709         <code>com.google.app.<em>appname</em></code>
710         
711         <p>Inside of the manifest tag, may appear the following tags
712         in any order: {@link #AndroidManifestPermission permission},
713         {@link #AndroidManifestPermissionGroup permission-group},
714         {@link #AndroidManifestPermissionTree permission-tree},
715         {@link #AndroidManifestUsesSdk uses-sdk},
716         {@link #AndroidManifestUsesPermission uses-permission},
717         {@link #AndroidManifestUsesConfiguration uses-configuration},
718         {@link #AndroidManifestApplication application},
719         {@link #AndroidManifestInstrumentation instrumentation},
720         {@link #AndroidManifestUsesFeature uses-feature}.  -->
721    <declare-styleable name="AndroidManifest">
722        <attr name="versionCode" />
723        <attr name="versionName" />
724        <attr name="sharedUserId" />
725        <attr name="sharedUserLabel" />
726        <attr name="installLocation" />
727    </declare-styleable>
728    
729    <!-- The <code>application</code> tag describes application-level components
730         contained in the package, as well as general application
731         attributes.  Many of the attributes you can supply here (such
732         as theme, label, icon, permission, process, taskAffinity,
733         and allowTaskReparenting) serve
734         as default values for the corresponding attributes of components
735         declared inside of the application.
736         
737         <p>Inside of this element you specify what the application contains,
738         using the elements {@link #AndroidManifestProvider provider},
739         {@link #AndroidManifestService service},
740         {@link #AndroidManifestReceiver receiver},
741         {@link #AndroidManifestActivity activity},
742         {@link #AndroidManifestActivityAlias activity-alias}, and
743         {@link #AndroidManifestUsesLibrary uses-library}.  The application tag
744         appears as a child of the root {@link #AndroidManifest manifest} tag. -->
745    <declare-styleable name="AndroidManifestApplication" parent="AndroidManifest">
746        <!-- An optional name of a class implementing the overall
747             {@link android.app.Application} for this package.  When the
748             process for your package is started, this class is instantiated
749             before any of the other application components.  Note that this
750             is not required, and in fact most applications will probably
751             not need it. -->
752        <attr name="name" />
753        <attr name="theme" />
754        <attr name="label" />
755        <attr name="icon" />
756        <attr name="logo" />
757        <attr name="description" />
758        <attr name="permission" />
759        <attr name="process" />
760        <attr name="taskAffinity" />
761        <attr name="allowTaskReparenting" />
762        <!-- Indicate whether this application contains code.  If set to false,
763             there is no code associated with it and thus the system will not
764             try to load its code when launching components.  The default is true
765             for normal behavior. -->
766        <attr name="hasCode" format="boolean" />
767        <attr name="persistent" />
768        <!-- Specify whether the components in this application are enabled or not (that is, can be
769             instantiated by the system).
770             If "false", it overrides any component specific values (a value of "true" will not
771             override the component specific values). -->
772        <attr name="enabled" />
773        <attr name="debuggable" />
774        <attr name="vmSafeMode" />
775        <attr name="hardwareAccelerated" />
776        <!-- Name of activity to be launched for managing the application's space on the device. -->
777        <attr name="manageSpaceActivity" />
778        <attr name="allowClearUserData" />
779        <attr name="testOnly" />
780        <attr name="backupAgent" />
781        <attr name="allowBackup" />
782        <attr name="killAfterRestore" />
783        <attr name="restoreNeedsApplication" />
784        <attr name="restoreAnyVersion" />
785        <attr name="neverEncrypt" />
786        <!-- Request that your application's processes be created with
787             a large Dalvik heap.  This applies to <em>all</em> processes
788             created for the application.  It only applies to the first
789             application loaded into a process; if using a sharedUserId
790             to allow multiple applications to use a process, they all must
791             use this option consistently or will get unpredictable results. -->
792        <attr name="largeHeap" format="boolean" />
793        <!-- Declare that this applicationn can't participate in the normal
794             state save/restore mechanism.  Since it is not able to save and
795             restore its state on demand,
796             it can not participate in the normal activity lifecycle.  It will
797             not be killed while in the background; the user must explicitly
798             quit it.  Only one such app can be running at a time; if the user
799             tries to launch a second such app, they will be prompted
800             to quit the first before doing so.  While the
801             application is running, the user will be informed of this.
802             @hide -->
803        <attr name="cantSaveState" format="boolean" />
804    </declare-styleable>
805    
806    <!-- The <code>permission</code> tag declares a security permission that can be
807         used to control access from other packages to specific components or
808         features in your package (or other packages).  See the
809         <a href="{@docRoot}guide/topics/security/security.html">Security and Permissions</a>
810         document for more information on permissions.
811         
812         <p>This appears as a child tag of the root
813         {@link #AndroidManifest manifest} tag. -->
814    <declare-styleable name="AndroidManifestPermission" parent="AndroidManifest">
815        <!-- Required public name of the permission, which other components and
816        packages will use when referring to this permission.  This is a string using
817        Java-style scoping to ensure it is unique.  The prefix will often
818        be the same as our overall package name, for example
819        "com.mycompany.android.myapp.SomePermission". -->
820        <attr name="name" />
821        <attr name="label" />
822        <attr name="icon" />
823        <attr name="logo" />
824        <attr name="permissionGroup" />
825        <attr name="description" />
826        <attr name="protectionLevel" />
827    </declare-styleable>
828    
829    <!-- The <code>permission-group</code> tag declares a logical grouping of
830         related permissions.
831         
832         <p>Note that this tag does not declare a permission itself, only
833         a namespace in which further permissions can be placed.  See
834         the {@link #AndroidManifestPermission &lt;permission&gt;} tag for
835         more information.
836         
837         <p>This appears as a child tag of the root
838         {@link #AndroidManifest manifest} tag. -->
839    <declare-styleable name="AndroidManifestPermissionGroup" parent="AndroidManifest">
840        <!-- Required public name of the permission group, permissions will use
841        to specify the group they are in.  This is a string using
842        Java-style scoping to ensure it is unique.  The prefix will often
843        be the same as our overall package name, for example
844        "com.mycompany.android.myapp.SomePermission". -->
845        <attr name="name" />
846        <attr name="label" />
847        <attr name="icon" />
848        <attr name="logo" />
849        <attr name="description" />
850    </declare-styleable>
851    
852    <!-- The <code>permission-tree</code> tag declares the base of a tree of
853         permission values: it declares that this package has ownership of
854         the given permission name, as well as all names underneath it
855         (separated by '.').  This allows you to use the
856         {@link android.content.pm.PackageManager#addPermission
857         PackageManager.addPermission()} method to dynamically add new
858         permissions under this tree.
859         
860         <p>Note that this tag does not declare a permission itself, only
861         a namespace in which further permissions can be placed.  See
862         the {@link #AndroidManifestPermission &lt;permission&gt;} tag for
863         more information.
864         
865         <p>This appears as a child tag of the root
866         {@link #AndroidManifest manifest} tag. -->
867    <declare-styleable name="AndroidManifestPermissionTree" parent="AndroidManifest">
868        <!-- Required public name of the permission tree, which is the base name
869        of all permissions under it.  This is a string using
870        Java-style scoping to ensure it is unique.  The prefix will often
871        be the same as our overall package name, for example
872        "com.mycompany.android.myapp.SomePermission".  A permission tree name
873        must have more than two segments in its path; that is,
874        "com.me.foo" is okay, but not "com.me" or "com". -->
875        <attr name="name" />
876        <attr name="label" />
877        <attr name="icon" />
878        <attr name="logo" />
879    </declare-styleable>
880    
881    <!-- The <code>uses-permission</code> tag requests a
882         {@link #AndroidManifestPermission &lt;permission&gt;} that the containing
883         package must be granted in order for it to operate correctly.
884         See the <a href="{@docRoot}guide/topics/security/security.html">Security and Permissions</a>
885         document for more information on permissions.  Also available is a
886         {@link android.Manifest.permission list of permissions} included
887         with the base platform.
888         
889         <p>This appears as a child tag of the root
890         {@link #AndroidManifest manifest} tag. -->
891    <declare-styleable name="AndroidManifestUsesPermission" parent="AndroidManifest">
892        <!-- Required name of the permission you use, as published with the
893        corresponding name attribute of a
894        {@link android.R.styleable#AndroidManifestPermission &lt;permission&gt;}
895        tag; often this is one of the {@link android.Manifest.permission standard
896        system permissions}. -->
897        <attr name="name" />
898    </declare-styleable>
899
900    <!-- The <code>uses-configuration</code> tag specifies
901         a specific hardware configuration value used by the application.
902         For example an application might specify that it requires
903         a physical keyboard or a particular navigation method like
904         trackball. Multiple such attribute values can be specified by the
905         application.
906
907         <p>This appears as a child tag of the root
908         {@link #AndroidManifest manifest} tag. -->
909    <declare-styleable name="AndroidManifestUsesConfiguration" parent="AndroidManifest">
910        <!-- The type of touch screen used by an application. -->
911        <attr name="reqTouchScreen" />
912        <attr name="reqKeyboardType" />
913        <attr name="reqHardKeyboard" />
914        <attr name="reqNavigation" />
915        <attr name="reqFiveWayNav" />
916    </declare-styleable>
917
918    <!-- The <code>uses-feature</code> tag specifies
919         a specific feature used by the application.
920         For example an application might specify that it requires
921         specific version of OpenGL. Multiple such attribute
922         values can be specified by the application.
923
924         <p>This appears as a child tag of the root
925         {@link #AndroidManifest manifest} tag. -->
926    <declare-styleable name="AndroidManifestUsesFeature" parent="AndroidManifest">
927        <!-- The GLES driver version number needed by an application.
928             The higher 16 bits represent the major number and the lower 16 bits
929             represent the minor number. For example for GL 1.2 referring to
930             0x00000102, the actual value should be set as 0x00010002. -->
931        <attr name="glEsVersion" format="integer"/>
932        <!--  The name of the feature that is being used. -->
933        <attr name="name" />
934        <!--  Specify whether this feature is required for the application.
935              The default is true, meaning the application requires the
936              feature, and does not want to be installed on devices that
937              don't support it.  If you set this to false, then this will
938              not impose a restriction on where the application can be
939              installed. -->
940        <attr name="required" format="boolean" />
941    </declare-styleable>
942
943    <!-- The <code>uses-sdk</code> tag describes the SDK features that the
944         containing package must be running on to operate correctly.
945         
946         <p>This appears as a child tag of the root
947         {@link #AndroidManifest manifest} tag. -->
948    <declare-styleable name="AndroidManifestUsesSdk" parent="AndroidManifest">
949        <!-- This is the minimum SDK version number that the application
950             requires.  This number is an abstract integer, from the list
951             in {@link android.os.Build.VERSION_CODES}  If
952             not supplied, the application will work on any SDK.  This
953             may also be string (such as "Donut") if the application was built
954             against a development branch, in which case it will only work against
955             the development builds. -->
956        <attr name="minSdkVersion" format="integer|string" />
957        <!-- This is the SDK version number that the application is targeting.
958             It is able to run on older versions (down to minSdkVersion), but
959             was explicitly tested to work with the version specified here.
960             Specifying this version allows the platform to disable compatibility
961             code that are not required or enable newer features that are not
962             available to older applications.  This may also be a string
963             (such as "Donut") if this is built against a development
964             branch, in which case minSdkVersion is also forced to be that
965             string. -->
966        <attr name="targetSdkVersion" format="integer|string" />
967        <!-- This is the maximum SDK version number that an application works
968             on.  You can use this to ensure your application is filtered out
969             of later versions of the platform when you know you have
970             incompatibility with them. -->
971        <attr name="maxSdkVersion" format="integer" />
972    </declare-styleable>
973    
974    <!-- The <code>uses-libraries</code> specifies a shared library that this
975         package requires to be linked against.  Specifying this flag tells the
976         system to include this library's code in your class loader.
977         
978         <p>This appears as a child tag of the
979         {@link #AndroidManifestApplication application} tag. -->
980    <declare-styleable name="AndroidManifestUsesLibrary" parent="AndroidManifestApplication">
981        <!-- Required name of the library you use. -->
982        <attr name="name" />
983        <!--  Specify whether this library is required for the application.
984              The default is true, meaning the application requires the
985              library, and does not want to be installed on devices that
986              don't support it.  If you set this to false, then this will
987              allow the application to be installed even if the library
988              doesn't exist, and you will need to check for its presence
989              dynamically at runtime. -->
990        <attr name="required" />
991    </declare-styleable>
992    
993    <!-- The <code>supports-screens</code> specifies the screen dimensions an
994         application supports.  By default a modern application supports all
995         screen sizes and must explicitly disable certain screen sizes here;
996         older applications are assumed to only support the traditional normal
997         (HVGA) screen size.  Note that screen size is a separate axis from
998         density, and is determined as the available pixels to an application
999         after density scaling has been applied.
1000         
1001         <p>This appears as a child tag of the
1002         {@link #AndroidManifest manifest} tag. -->
1003    <declare-styleable name="AndroidManifestSupportsScreens" parent="AndroidManifest">
1004        <!-- Indicates whether the application supports smaller screen form-factors.
1005             A small screen is defined as one with a smaller aspect ratio than
1006             the traditional HVGA screen; that is, for a portrait screen, less
1007             tall than an HVGA screen.  In practice, this means a QVGA low
1008             density or VGA high density screen.  An application that does
1009             not support small screens <em>will not be available</em> for
1010             small screen devices, since there is little the platform can do
1011             to make such an application work on a smaller screen. -->
1012        <attr name="smallScreens" format="boolean" />
1013        <!-- Indicates whether an application supports the normal screen
1014             form-factors.  Traditionally this is an HVGA normal density
1015             screen, but WQVGA low density and WVGA high density are also
1016             considered to be normal.  This attribute is true by default,
1017             and applications currently should leave it that way. -->
1018        <attr name="normalScreens" format="boolean" />
1019        <!-- Indicates whether the application supports larger screen form-factors.
1020             A large screen is defined as a screen that is significantly larger
1021             than a normal phone screen, and thus may require some special care
1022             on the application's part to make good use of it.  An example would
1023             be a VGA <em>normal density</em> screen, though even larger screens
1024             are certainly possible.  An application that does not support
1025             large screens will be placed as a postage stamp on such a
1026             screen, so that it retains the dimensions it was originally
1027             designed for. -->
1028        <attr name="largeScreens" format="boolean" />
1029        <!-- Indicates whether the application supports extra large screen form-factors. -->
1030        <attr name="xlargeScreens" format="boolean" />
1031        <!-- Indicates whether the application can resize itself to newer
1032             screen sizes.  This is mostly used to distinguish between old
1033             applications that may not be compatible with newly introduced
1034             screen sizes and newer applications that should be; it will be
1035             set for you automatically based on whether you are targeting
1036             a newer platform that supports more screens. -->
1037        <attr name="resizeable" format="boolean" />
1038        <!-- Indicates whether the application can accommodate any screen
1039             density.  Older applications are assumed to not be able to,
1040             new ones able to.  You can explicitly supply your abilities
1041             here. -->
1042        <attr name="anyDensity" format="boolean" />
1043    </declare-styleable>
1044
1045    <!-- Private tag to declare system protected broadcast actions.
1046
1047         <p>This appears as a child tag of the root
1048         {@link #AndroidManifest manifest} tag. -->
1049    <declare-styleable name="AndroidManifestProtectedBroadcast" parent="AndroidManifest">
1050        <attr name="name" />
1051    </declare-styleable>
1052
1053    <!-- Private tag to declare the original package name that this package is
1054         based on.  Only used for packages installed in the system image.  If
1055         given, and different than the actual package name, and the given
1056         original package was previously installed on the device but the new
1057         one was not, then the data for the old one will be renamed to be
1058         for the new package.
1059
1060         <p>This appears as a child tag of the root
1061         {@link #AndroidManifest manifest} tag. -->
1062    <declare-styleable name="AndroidManifestOriginalPackage" parent="AndroidManifest">
1063        <attr name="name" />
1064    </declare-styleable>
1065
1066    <!-- The <code>provider</code> tag declares a
1067         {@link android.content.ContentProvider} class that is available
1068         as part of the package's application components, supplying structured
1069         access to data managed by the application.
1070         
1071         <p>This appears as a child tag of the
1072         {@link #AndroidManifestApplication application} tag. -->
1073    <declare-styleable name="AndroidManifestProvider" parent="AndroidManifestApplication">
1074        <!-- Required name of the class implementing the provider, deriving from
1075            {@link android.content.ContentProvider}.  This is a fully
1076            qualified class name (for example, com.mycompany.myapp.MyProvider); as a
1077            short-hand if the first character of the class
1078            is a period then it is appended to your package name. -->
1079        <attr name="name" />
1080        <attr name="label" />
1081        <attr name="description" />
1082        <attr name="icon" />
1083        <attr name="logo" />
1084        <attr name="process" />
1085        <attr name="authorities" />
1086        <attr name="syncable" />
1087        <attr name="readPermission" />
1088        <attr name="writePermission" />
1089        <attr name="grantUriPermissions" />
1090        <attr name="permission" />
1091        <attr name="multiprocess" />
1092        <attr name="initOrder" />
1093        <!-- Specify whether this provider is enabled or not (that is, can be instantiated by the system).
1094             It can also be specified for an application as a whole, in which case a value of "false"
1095             will override any component specific values (a value of "true" will not override the
1096             component specific values). -->
1097        <attr name="enabled" />
1098        <attr name="exported" />
1099    </declare-styleable>
1100    
1101    <!-- Attributes that can be supplied in an AndroidManifest.xml
1102         <code>grant-uri-permission</code> tag, a child of the
1103         {@link #AndroidManifestProvider provider} tag, describing a specific
1104         URI path that can be granted as a permission.  This tag can be
1105         specified multiple time to supply multiple paths. -->
1106    <declare-styleable name="AndroidManifestGrantUriPermission"  parent="AndroidManifestProvider">
1107        <!-- Specify a URI path that must exactly match, as per
1108             {@link android.os.PatternMatcher} with
1109             {@link android.os.PatternMatcher#PATTERN_LITERAL}. -->
1110        <attr name="path" format="string" />
1111        <!-- Specify a URI path that must be a prefix to match, as per
1112             {@link android.os.PatternMatcher} with
1113             {@link android.os.PatternMatcher#PATTERN_PREFIX}. -->
1114        <attr name="pathPrefix" format="string" />
1115        <!-- Specify a URI path that matches a simple pattern, as per
1116             {@link android.os.PatternMatcher} with
1117             {@link android.os.PatternMatcher#PATTERN_SIMPLE_GLOB}. 
1118             Note that because '\' is used as an escape character when
1119             reading the string from XML (before it is parsed as a pattern),
1120             you will need to double-escape: for example a literal "*" would
1121             be written as "\\*" and a literal "\" would be written as
1122             "\\\\".  This is basically the same as what you would need to
1123             write if constructing the string in Java code. -->
1124        <attr name="pathPattern" format="string" />
1125    </declare-styleable>
1126    
1127    <!-- Attributes that can be supplied in an AndroidManifest.xml
1128         <code>path-permission</code> tag, a child of the
1129         {@link #AndroidManifestProvider provider} tag, describing a permission
1130         that allows access to a specific path in the provider.  This tag can be
1131         specified multiple time to supply multiple paths. -->
1132    <declare-styleable name="AndroidManifestPathPermission"  parent="AndroidManifestProvider">
1133        <attr name="path" />
1134        <attr name="pathPrefix" />
1135        <attr name="pathPattern" />
1136        <attr name="permission" />
1137        <attr name="readPermission" />
1138        <attr name="writePermission" />
1139    </declare-styleable>
1140    
1141    <!-- The <code>service</code> tag declares a
1142         {@link android.app.Service} class that is available
1143         as part of the package's application components, implementing
1144         long-running background operations or a rich communication API
1145         that can be called by other packages.
1146         
1147         <p>Zero or more {@link #AndroidManifestIntentFilter intent-filter}
1148         tags can be included inside of a service, to specify the Intents
1149         that can connect with it.  If none are specified, the service can
1150         only be accessed by direct specification of its class name.
1151         The service tag appears as a child tag of the
1152         {@link #AndroidManifestApplication application} tag. -->
1153    <declare-styleable name="AndroidManifestService" parent="AndroidManifestApplication">
1154        <!-- Required name of the class implementing the service, deriving from
1155            {@link android.app.Service}.  This is a fully
1156            qualified class name (for example, com.mycompany.myapp.MyService); as a
1157            short-hand if the first character of the class
1158            is a period then it is appended to your package name. -->
1159        <attr name="name" />
1160        <attr name="label" />
1161        <attr name="description" />
1162        <attr name="icon" />
1163        <attr name="logo" />
1164        <attr name="permission" />
1165        <attr name="process" />
1166        <!-- Specify whether the service is enabled or not (that is, can be instantiated by the system).
1167             It can also be specified for an application as a whole, in which case a value of "false"
1168             will override any component specific values (a value of "true" will not override the
1169             component specific values). -->
1170        <attr name="enabled" />
1171        <attr name="exported" />
1172    </declare-styleable>
1173    
1174    <!-- The <code>receiver</code> tag declares an
1175         {@link android.content.BroadcastReceiver} class that is available
1176         as part of the package's application components, allowing the
1177         application to receive actions or data broadcast by other
1178         applications even if it is not currently running.
1179         
1180         <p>Zero or more {@link #AndroidManifestIntentFilter intent-filter}
1181         tags can be included inside of a receiver, to specify the Intents
1182         it will receive.  If none are specified, the receiver will only
1183         be run when an Intent is broadcast that is directed at its specific
1184         class name.  The receiver tag appears as a child tag of the
1185         {@link #AndroidManifestApplication application} tag. -->
1186    <declare-styleable name="AndroidManifestReceiver" parent="AndroidManifestApplication">
1187        <!-- Required name of the class implementing the receiver, deriving from
1188            {@link android.content.BroadcastReceiver}.  This is a fully
1189            qualified class name (for example, com.mycompany.myapp.MyReceiver); as a
1190            short-hand if the first character of the class
1191            is a period then it is appended to your package name. -->
1192        <attr name="name" />
1193        <attr name="label" />
1194        <attr name="description" />
1195        <attr name="icon" />
1196        <attr name="logo" />
1197        <attr name="permission" />
1198        <attr name="process" />
1199        <!-- Specify whether the receiver is enabled or not (that is, can be instantiated by the system).
1200             It can also be specified for an application as a whole, in which case a value of "false"
1201             will override any component specific values (a value of "true" will not override the
1202             component specific values). -->
1203        <attr name="enabled" />
1204        <attr name="exported" />
1205    </declare-styleable>
1206    
1207    <!-- The <code>activity</code> tag declares an
1208         {@link android.app.Activity} class that is available
1209         as part of the package's application components, implementing
1210         a part of the application's user interface.
1211         
1212         <p>Zero or more {@link #AndroidManifestIntentFilter intent-filter}
1213         tags can be included inside of an activity, to specify the Intents
1214         that it can handle.  If none are specified, the activity can
1215         only be started through direct specification of its class name.
1216         The activity tag appears as a child tag of the
1217         {@link #AndroidManifestApplication application} tag. -->
1218    <declare-styleable name="AndroidManifestActivity" parent="AndroidManifestApplication">
1219        <!-- Required name of the class implementing the activity, deriving from
1220            {@link android.app.Activity}.  This is a fully
1221            qualified class name (for example, com.mycompany.myapp.MyActivity); as a
1222            short-hand if the first character of the class
1223            is a period then it is appended to your package name. -->
1224        <attr name="name" />
1225        <attr name="theme" />
1226        <attr name="label" />
1227        <attr name="description" />
1228        <attr name="icon" />
1229        <attr name="logo" />
1230        <attr name="launchMode" />
1231        <attr name="screenOrientation" />
1232        <attr name="configChanges" />
1233        <attr name="permission" />
1234        <attr name="multiprocess" />
1235        <attr name="process" />
1236        <attr name="taskAffinity" />
1237        <attr name="allowTaskReparenting" />
1238        <attr name="finishOnTaskLaunch" />
1239        <attr name="finishOnCloseSystemDialogs" />
1240        <attr name="clearTaskOnLaunch" />
1241        <attr name="noHistory" />
1242        <attr name="alwaysRetainTaskState" />
1243        <attr name="stateNotNeeded" />
1244        <attr name="excludeFromRecents" />
1245        <!-- Specify whether the activity is enabled or not (that is, can be instantiated by the system).
1246             It can also be specified for an application as a whole, in which case a value of "false"
1247             will override any component specific values (a value of "true" will not override the
1248             component specific values). -->
1249        <attr name="enabled" />
1250        <attr name="exported" />
1251        <!-- Specify the default soft-input mode for the main window of
1252             this activity.  A value besides "unspecified" here overrides
1253             any value in the theme. -->
1254        <attr name="windowSoftInputMode" />
1255        <attr name="immersive" />
1256        <attr name="hardwareAccelerated" />
1257    </declare-styleable>
1258    
1259    <!-- The <code>activity-alias</code> tag declares a new
1260         name for an existing {@link #AndroidManifestActivity activity}
1261         tag.
1262         
1263         <p>Zero or more {@link #AndroidManifestIntentFilter intent-filter}
1264         tags can be included inside of an activity-alias, to specify the Intents
1265         that it can handle.  If none are specified, the activity can
1266         only be started through direct specification of its class name.
1267         The activity-alias tag appears as a child tag of the
1268         {@link #AndroidManifestApplication application} tag. -->
1269    <declare-styleable name="AndroidManifestActivityAlias" parent="AndroidManifestApplication">
1270        <!-- Required name of the class implementing the activity, deriving from
1271            {@link android.app.Activity}.  This is a fully
1272            qualified class name (for example, com.mycompany.myapp.MyActivity); as a
1273            short-hand if the first character of the class
1274            is a period then it is appended to your package name. -->
1275        <attr name="name" />
1276        <!-- The name of the activity this alias should launch.  The activity
1277             must be in the same manifest as the alias, and have been defined
1278             in that manifest before the alias here.  This must use a Java-style
1279             naming convention to ensure the name is unique, for example
1280             "com.mycompany.MyName". -->  
1281        <attr name="targetActivity" format="string" />
1282        <attr name="label" />
1283        <attr name="description" />
1284        <attr name="icon" />
1285        <attr name="logo" />
1286        <attr name="permission" />
1287        <!-- Specify whether the activity-alias is enabled or not (that is, can be instantiated by the system).
1288             It can also be specified for an application as a whole, in which case a value of "false"
1289             will override any component specific values (a value of "true" will not override the
1290             component specific values). -->
1291        <attr name="enabled" />
1292        <attr name="exported" />
1293    </declare-styleable>
1294    
1295    <!-- The <code>meta-data</code> tag is used to attach additional
1296         arbitrary data to an application component.  The data can later
1297         be retrieved programmatically from the
1298         {@link android.content.pm.ComponentInfo#metaData
1299         ComponentInfo.metaData} field.  There is no meaning given to this
1300         data by the system.  You may supply the data through either the
1301         <code>value</code> or <code>resource</code> attribute; if both
1302         are given, then <code>resource</code> will be used.
1303         
1304         <p>It is highly recommended that you avoid supplying related data as
1305         multiple separate meta-data entries.  Instead, if you have complex
1306         data to associate with a component, then use the <code>resource</code>
1307         attribute to assign an XML resource that the client can parse to
1308         retrieve the complete data. -->
1309    <declare-styleable name="AndroidManifestMetaData"
1310         parent="AndroidManifestApplication
1311                 AndroidManifestActivity
1312                 AndroidManifestReceiver
1313                 AndroidManifestProvider
1314                 AndroidManifestService
1315                 AndroidManifestPermission
1316                 AndroidManifestPermissionGroup
1317                 AndroidManifestInstrumentation">
1318        <attr name="name" />
1319        <!-- Concrete value to assign to this piece of named meta-data.
1320             The data can later be retrieved from the meta data Bundle
1321             through {@link android.os.Bundle#getString Bundle.getString},
1322             {@link android.os.Bundle#getInt Bundle.getInt},
1323             {@link android.os.Bundle#getBoolean Bundle.getBoolean},
1324             or {@link android.os.Bundle#getFloat Bundle.getFloat} depending
1325             on the type used here. -->
1326        <attr name="value" format="string|integer|color|float|boolean" />
1327        <!-- Resource identifier to assign to this piece of named meta-data.
1328             The resource identifier can later be retrieved from the meta data
1329             Bundle through {@link android.os.Bundle#getInt Bundle.getInt}. -->
1330        <attr name="resource" format="reference" />
1331    </declare-styleable>
1332    
1333    <!-- The <code>intent-filter</code> tag is used to construct an
1334         {@link android.content.IntentFilter} object that will be used
1335         to determine which component can handle a particular
1336         {@link android.content.Intent} that has been given to the system.
1337         It can be used as a child of the
1338         {@link #AndroidManifestActivity activity},
1339         {@link #AndroidManifestReceiver receiver} and 
1340         {@link #AndroidManifestService service}
1341         tags.
1342         
1343         <p> Zero or more {@link #AndroidManifestAction action},
1344         {@link #AndroidManifestCategory category}, and/or
1345         {@link #AndroidManifestData data} tags should be
1346         included inside to describe the contents of the filter.
1347         
1348         <p> The optional label and icon attributes here are used with
1349         an activity to supply an alternative description of that activity
1350         when it is being started through an Intent matching this filter. -->
1351    <declare-styleable name="AndroidManifestIntentFilter"
1352         parent="AndroidManifestActivity AndroidManifestReceiver AndroidManifestService">
1353        <attr name="label" />
1354        <attr name="icon" />
1355        <attr name="logo" />
1356        <attr name="priority" />
1357    </declare-styleable>
1358    
1359    <!-- Attributes that can be supplied in an AndroidManifest.xml
1360         <code>action</code> tag, a child of the
1361         {@link #AndroidManifestIntentFilter intent-filter} tag.
1362         See {@link android.content.IntentFilter#addAction} for
1363         more information. -->
1364    <declare-styleable name="AndroidManifestAction" parent="AndroidManifestIntentFilter">
1365        <!-- The name of an action that is handled, using the Java-style
1366             naming convention.  For example, to support
1367             {@link android.content.Intent#ACTION_VIEW Intent.ACTION_VIEW}
1368             you would put <code>android.intent.action.VIEW</code> here.
1369             Custom actions should generally use a prefix matching the
1370             package name. -->
1371        <attr name="name" />
1372    </declare-styleable>
1373    
1374    <!-- Attributes that can be supplied in an AndroidManifest.xml
1375         <code>data</code> tag, a child of the
1376         {@link #AndroidManifestIntentFilter intent-filter} tag, describing
1377         the types of data that match.  This tag can be specified multiple
1378         times to supply multiple data options, as described in the
1379         {@link android.content.IntentFilter} class.  Note that all such
1380         tags are adding options to the same IntentFilter so that, for example,
1381         <code>&lt;data android:scheme="myscheme" android:host="me.com" /&gt;</code>
1382         is equivalent to <code>&lt;data android:scheme="myscheme" /&gt;
1383         &lt;data android:host="me.com" /&gt;</code>. -->
1384    <declare-styleable name="AndroidManifestData" parent="AndroidManifestIntentFilter">
1385        <!-- Specify a MIME type that is handled, as per
1386             {@link android.content.IntentFilter#addDataType
1387             IntentFilter.addDataType()}.
1388             <p><em>Note: MIME type matching in the Android framework is
1389             case-sensitive, unlike formal RFC MIME types.  As a result,
1390             MIME types here should always use lower case letters.</em></p> -->
1391        <attr name="mimeType" format="string" />
1392        <!-- Specify a URI scheme that is handled, as per
1393             {@link android.content.IntentFilter#addDataScheme
1394             IntentFilter.addDataScheme()}.
1395             <p><em>Note: scheme matching in the Android framework is
1396             case-sensitive, unlike the formal RFC.  As a result,
1397             schemes here should always use lower case letters.</em></p> -->
1398        <attr name="scheme" format="string" />
1399        <!-- Specify a URI authority host that is handled, as per
1400             {@link android.content.IntentFilter#addDataAuthority
1401             IntentFilter.addDataAuthority()}.
1402             <p><em>Note: host name matching in the Android framework is
1403             case-sensitive, unlike the formal RFC.  As a result,
1404             host names here should always use lower case letters.</em></p> -->
1405        <attr name="host" format="string" />
1406        <!-- Specify a URI authority port that is handled, as per
1407             {@link android.content.IntentFilter#addDataAuthority
1408             IntentFilter.addDataAuthority()}.  If a host is supplied
1409             but not a port, any port is matched. -->
1410        <attr name="port" format="string" />
1411        <!-- Specify a URI path that must exactly match, as per
1412             {@link android.content.IntentFilter#addDataPath
1413             IntentFilter.addDataAuthority()} with
1414             {@link android.os.PatternMatcher#PATTERN_LITERAL}. -->
1415        <attr name="path" />
1416        <!-- Specify a URI path that must be a prefix to match, as per
1417             {@link android.content.IntentFilter#addDataPath
1418             IntentFilter.addDataAuthority()} with
1419             {@link android.os.PatternMatcher#PATTERN_PREFIX}. -->
1420        <attr name="pathPrefix" />
1421        <!-- Specify a URI path that matches a simple pattern, as per
1422             {@link android.content.IntentFilter#addDataPath
1423             IntentFilter.addDataAuthority()} with
1424             {@link android.os.PatternMatcher#PATTERN_SIMPLE_GLOB}. 
1425             Note that because '\' is used as an escape character when
1426             reading the string from XML (before it is parsed as a pattern),
1427             you will need to double-escape: for example a literal "*" would
1428             be written as "\\*" and a literal "\" would be written as
1429             "\\\\".  This is basically the same as what you would need to
1430             write if constructing the string in Java code. -->
1431        <attr name="pathPattern" />
1432    </declare-styleable>
1433    
1434    <!-- Attributes that can be supplied in an AndroidManifest.xml
1435         <code>category</code> tag, a child of the
1436         {@link #AndroidManifestIntentFilter intent-filter} tag. 
1437         See {@link android.content.IntentFilter#addCategory} for
1438         more information. -->
1439    <declare-styleable name="AndroidManifestCategory" parent="AndroidManifestIntentFilter">
1440        <!-- The name of category that is handled, using the Java-style
1441             naming convention.  For example, to support
1442             {@link android.content.Intent#CATEGORY_LAUNCHER Intent.CATEGORY_LAUNCHER}
1443             you would put <code>android.intent.category.LAUNCHER</code> here.
1444             Custom actions should generally use a prefix matching the
1445             package name. -->
1446        <attr name="name" />
1447    </declare-styleable>
1448    
1449    <!-- Attributes that can be supplied in an AndroidManifest.xml
1450         <code>instrumentation</code> tag, a child of the root
1451         {@link #AndroidManifest manifest} tag. -->
1452    <declare-styleable name="AndroidManifestInstrumentation" parent="AndroidManifest">
1453        <!-- Required name of the class implementing the instrumentation, deriving from
1454            {@link android.app.Instrumentation}.  This is a fully
1455            qualified class name (for example, com.mycompany.myapp.MyActivity); as a
1456            short-hand if the first character of the class
1457            is a period then it is appended to your package name. -->
1458        <attr name="name" />
1459        <attr name="targetPackage" />
1460        <attr name="label" />
1461        <attr name="icon" />
1462        <attr name="logo" />
1463        <attr name="handleProfiling" />
1464        <attr name="functionalTest" />
1465    </declare-styleable>
1466    
1467    <!-- Attributes that can be supplied in an AndroidManifest.xml
1468         <code>screen</code> tag, a child of <code>compatible-screens</code>,
1469         which is itseld a child of the root
1470         {@link #AndroidManifest manifest} tag. -->
1471    <declare-styleable name="AndroidManifestCompatibleScreensScreen"
1472                       parent="AndroidManifest.AndroidManifestCompatibleScreens">
1473        <!-- Specifies a compatible screen size, as per the device
1474             configuration screen size bins. -->
1475        <attr name="screenSize">
1476            <!-- A small screen configuration, at least 240x320db. -->
1477            <enum name="small" value="200" />
1478            <!-- A normal screen configuration, at least 320x480db. -->
1479            <enum name="normal" value="300" />
1480            <!-- A large screen configuration, at least 400x530db. -->
1481            <enum name="large" value="400" />
1482            <!-- An extra large screen configuration, at least 600x800db. -->
1483            <enum name="xlarge" value="500" />
1484        </attr>
1485        <!-- Specifies a compatible screen density, as per the device
1486             configuration screen density bins. -->
1487        <attr name="screenDensity" format="integer">
1488            <!-- A low density screen, approximately 120dpi. -->
1489            <enum name="ldpi" value="120" />
1490            <!-- A medium density screen, approximately 160dpi. -->
1491            <enum name="mdpi" value="160" />
1492            <!-- A high density screen, approximately 240dpi. -->
1493            <enum name="hdpi" value="240" />
1494            <!-- An extra high density screen, approximately 320dpi. -->
1495            <enum name="xhdpi" value="320" />
1496        </attr>
1497    </declare-styleable>
1498    
1499    
1500    <!-- Declaration of an {@link android.content.Intent} object in XML.  May
1501         also include zero or more {@link #IntentCategory <category> and
1502         {@link #Extra <extra>} tags. -->
1503    <declare-styleable name="Intent">
1504        <!-- The action name to assign to the Intent, as per
1505            {@link android.content.Intent#setAction Intent.setAction()}. -->
1506        <attr name="action" format="string" />
1507        <!-- The data URI to assign to the Intent, as per
1508            {@link android.content.Intent#setData Intent.setData()}.
1509            <p><em>Note: scheme and host name matching in the Android framework is
1510            case-sensitive, unlike the formal RFC.  As a result,
1511            URIs here should always be normalized to use lower case letters
1512            for these elements (as well as other proper Uri normalization).</em></p> -->
1513        <attr name="data" format="string" />
1514        <!-- The MIME type name to assign to the Intent, as per
1515            {@link android.content.Intent#setType Intent.setType()}.
1516            <p><em>Note: MIME type matching in the Android framework is
1517            case-sensitive, unlike formal RFC MIME types.  As a result,
1518            MIME types here should always use lower case letters.</em></p> -->
1519        <attr name="mimeType" />
1520        <!-- The package part of the ComponentName to assign to the Intent, as per
1521            {@link android.content.Intent#setComponent Intent.setComponent()}. -->
1522        <attr name="targetPackage" />
1523        <!-- The class part of the ComponentName to assign to the Intent, as per
1524            {@link android.content.Intent#setComponent Intent.setComponent()}. -->
1525        <attr name="targetClass" format="string" />
1526    </declare-styleable>
1527    
1528    <!-- A category to add to an Intent, as per
1529            {@link android.content.Intent#addCategory Intent.addCategory()}. -->
1530    <declare-styleable name="IntentCategory" parent="Intent">
1531        <!-- Required name of the category. -->
1532        <attr name="name" />
1533    </declare-styleable>
1534    
1535    <!-- An extra data value to place into a an extra/name value pair held
1536            in a Bundle, as per {@link android.os.Bundle}. -->
1537    <declare-styleable name="Extra" parent="Intent">
1538        <!-- Required name of the extra data. -->
1539        <attr name="name" />
1540        <!-- Concrete value to put for this named extra data. -->
1541        <attr name="value" />
1542    </declare-styleable>
1543</resources>
1544