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 banner for its 66 associated item. Use with the application tag (to supply a default 67 banner for all application activities), or with the activity, tag to 68 supply a banner for a specific activity. 69 70 <p>The given banner will be used to display to the user a graphical 71 representation of an activity in the Leanback application launcher. 72 Since banners are displayed only in the Leanback launcher, they should 73 only be used with activities (and applications) that support Leanback 74 mode. These are activities that handle Intents of category 75 {@link android.content.Intent#CATEGORY_LEANBACK_LAUNCHER 76 Intent.CATEGORY_LEANBACK_LAUNCHER}. 77 <p>This must be a reference to a Drawable resource containing the image definition. --> 78 <attr name="banner" format="reference" /> 79 80 <!-- A Drawable resource providing an extended graphical logo for its 81 associated item. Use with the application tag (to supply a default 82 logo for all application components), or with the activity, receiver, 83 service, or instrumentation tag (to supply a specific logo for that 84 component). It may also be used with the intent-filter tag to supply 85 a logo to show to the user when an activity is being selected based 86 on a particular Intent. 87 88 <p>The given logo will be used to display to the user a graphical 89 representation of its associated component; for example as the 90 header in the Action Bar. The primary differences between an icon 91 and a logo are that logos are often wider and more detailed, and are 92 used without an accompanying text caption. This must be a reference 93 to a Drawable resource containing the image definition. --> 94 <attr name="logo" format="reference" /> 95 96 <!-- Name of the activity to be launched to manage application's space on 97 device. The specified activity gets automatically launched when the 98 application's space needs to be managed and is usually invoked 99 through user actions. Applications can thus provide their own custom 100 behavior for managing space for various scenarios like out of memory 101 conditions. This is an optional attribute and 102 applications can choose not to specify a default activity to 103 manage space. --> 104 <attr name="manageSpaceActivity" format="string" /> 105 106 <!-- Option to let applications specify that user data can/cannot be 107 cleared. This flag is turned on by default. 108 <em>This attribute is usable only by applications 109 included in the system image. Third-party apps cannot use it.</em> --> 110 <attr name="allowClearUserData" format="boolean" /> 111 112 <!-- Option to let applications specify that user data should 113 never be encrypted if an Encrypted File System solution 114 is enabled. Specifically, this is an "opt-out" feature, meaning 115 that, by default, user data will be encrypted if the EFS feature 116 is enabled. --> 117 <attr name="neverEncrypt" format="boolean" /> 118 119 <!-- Option to indicate this application is only for testing purposes. 120 For example, it may expose functionality or data outside of itself 121 that would cause a security hole, but is useful for testing. This 122 kind of application can not be installed without the 123 INSTALL_ALLOW_TEST flag, which means only through adb install. --> 124 <attr name="testOnly" format="boolean" /> 125 126 <!-- A unique name for the given item. This must use a Java-style naming 127 convention to ensure the name is unique, for example 128 "com.mycompany.MyName". --> 129 <attr name="name" format="string" /> 130 131 <!-- Specify a permission that a client is required to have in order to 132 use the associated object. If the client does not hold the named 133 permission, its request will fail. See the 134 <a href="{@docRoot}guide/topics/security/security.html">Security and Permissions</a> 135 document for more information on permissions. --> 136 <attr name="permission" format="string" /> 137 138 <!-- A specific {@link android.R.attr#permission} name for read-only 139 access to a {@link android.content.ContentProvider}. See the 140 <a href="{@docRoot}guide/topics/security/security.html">Security and Permissions</a> 141 document for more information on permissions. --> 142 <attr name="readPermission" format="string" /> 143 144 <!-- A specific {@link android.R.attr#permission} name for write 145 access to a {@link android.content.ContentProvider}. See the 146 <a href="{@docRoot}guide/topics/security/security.html">Security and Permissions</a> 147 document for more information on permissions. --> 148 <attr name="writePermission" format="string" /> 149 150 <!-- If true, the {@link android.content.Context#grantUriPermission 151 Context.grantUriPermission} or corresponding Intent flags can 152 be used to allow others to access specific URIs in the content 153 provider, even if they do not have an explicit read or write 154 permission. If you are supporting this feature, you must be 155 sure to call {@link android.content.Context#revokeUriPermission 156 Context.revokeUriPermission} when URIs are deleted from your 157 provider.--> 158 <attr name="grantUriPermissions" format="boolean" /> 159 160 <!-- Characterizes the potential risk implied in a permission and 161 indicates the procedure the system should follow when determining 162 whether to grant the permission to an application requesting it. {@link 163 android.Manifest.permission Standard permissions} have a predefined and 164 permanent protectionLevel. If you are creating a custom permission in an 165 application, you can define a protectionLevel attribute with one of the 166 values listed below. If no protectionLevel is defined for a custom 167 permission, the system assigns the default ("normal"). --> 168 <attr name="protectionLevel"> 169 <!-- A lower-risk permission that gives an application access to isolated 170 application-level features, with minimal risk to other applications, 171 the system, or the user. The system automatically grants this type 172 of permission to a requesting application at installation, without 173 asking for the user's explicit approval (though the user always 174 has the option to review these permissions before installing). --> 175 <flag name="normal" value="0" /> 176 <!-- A higher-risk permission that would give a requesting application 177 access to private user data or control over the device that can 178 negatively impact the user. Because this type of permission 179 introduces potential risk, the system may not automatically 180 grant it to the requesting application. For example, any dangerous 181 permissions requested by an application may be displayed to the 182 user and require confirmation before proceeding, or some other 183 approach may be taken to avoid the user automatically allowing 184 the use of such facilities. --> 185 <flag name="dangerous" value="1" /> 186 <!-- A permission that the system is to grant only if the requesting 187 application is signed with the same certificate as the application 188 that declared the permission. If the certificates match, the system 189 automatically grants the permission without notifying the user or 190 asking for the user's explicit approval. --> 191 <flag name="signature" value="2" /> 192 <!-- A permission that the system is to grant only to packages in the 193 Android system image <em>or</em> that are signed with the same 194 certificates. Please avoid using this option, as the 195 signature protection level should be sufficient for most needs and 196 works regardless of exactly where applications are installed. This 197 permission is used for certain special situations where multiple 198 vendors have applications built in to a system image which need 199 to share specific features explicitly because they are being built 200 together. --> 201 <flag name="signatureOrSystem" value="3" /> 202 <!-- Additional flag from base permission type: this permission can also 203 be granted to any applications installed on the system image. 204 Please avoid using this option, as the 205 signature protection level should be sufficient for most needs and 206 works regardless of exactly where applications are installed. This 207 permission flag is used for certain special situations where multiple 208 vendors have applications built in to a system image which need 209 to share specific features explicitly because they are being built 210 together. --> 211 <flag name="system" value="0x10" /> 212 <!-- Additional flag from base permission type: this permission can also 213 (optionally) be granted to development applications. --> 214 <flag name="development" value="0x20" /> 215 <!-- Additional flag from base permission type: this permission is closely 216 associated with an app op for controlling access. --> 217 <flag name="appop" value="0x40" /> 218 </attr> 219 220 <!-- Flags indicating more context for a permission group. --> 221 <attr name="permissionGroupFlags"> 222 <!-- Set to indicate that this permission group contains permissions 223 protecting access to some information that is considered 224 personal to the user (such as contacts, e-mails, etc). --> 225 <flag name="personalInfo" value="0x0001" /> 226 </attr> 227 228 <!-- Flags indicating more context for a permission. --> 229 <attr name="permissionFlags"> 230 <!-- Set to indicate that this permission allows an operation that 231 may cost the user money. Such permissions may be highlighted 232 when shown to the user with this additional information. --> 233 <flag name="costsMoney" value="0x0001" /> 234 </attr> 235 236 <!-- Specified the name of a group that this permission is associated 237 with. The group must have been defined with the 238 {@link android.R.styleable#AndroidManifestPermissionGroup permission-group} tag. --> 239 <attr name="permissionGroup" format="string" /> 240 241 <!-- Specify the name of a user ID that will be shared between multiple 242 packages. By default, each package gets its own unique user-id. 243 By setting this value on two or more packages, each of these packages 244 will be given a single shared user ID, so they can for example run 245 in the same process. Note that for them to actually get the same 246 user ID, they must also be signed with the same signature. --> 247 <attr name="sharedUserId" format="string" /> 248 249 <!-- Specify a label for the shared user UID of this package. This is 250 only used if you have also used android:sharedUserId. This must 251 be a reference to a string resource; it can not be an explicit 252 string. --> 253 <attr name="sharedUserLabel" format="reference" /> 254 255 <!-- Internal version code. This is the number used to determine whether 256 one version is more recent than another: it has no other meaning than 257 that higher numbers are more recent. You could use this number to 258 encode a "x.y" in the lower and upper 16 bits, make it a build 259 number, simply increase it by one each time a new version is 260 released, or define it however else you want, as long as each 261 successive version has a higher number. This is not a version 262 number generally shown to the user, that is usually supplied 263 with {@link android.R.attr#versionName}. When an app is delivered 264 as multiple split APKs, each APK must have the exact same versionCode. --> 265 <attr name="versionCode" format="integer" /> 266 267 <!-- Internal revision code. This number is the number used to determine 268 whether one APK is more recent than another: it has no other meaning 269 than that higher numbers are more recent. This value is only meaningful 270 when the two {@link android.R.attr#versionCode} values are already 271 identical. When an app is delivered as multiple split APKs, each 272 APK may have a different revisionCode value. --> 273 <attr name="revisionCode" format="integer" /> 274 275 <!-- The text shown to the user to indicate the version they have. This 276 is used for no other purpose than display to the user; the actual 277 significant version number is given by {@link android.R.attr#versionCode}. --> 278 <attr name="versionName" format="string" /> 279 280 <!-- Flag to control special persistent mode of an application. This should 281 not normally be used by applications; it requires that the system keep 282 your application running at all times. --> 283 <attr name="persistent" format="boolean" /> 284 285 <!-- Flag to specify if this application needs to be present for all users. Only pre-installed 286 applications can request this feature. Default value is false. --> 287 <attr name="requiredForAllUsers" format="boolean" /> 288 289 <!-- Flag indicating whether the application can be debugged, even when 290 running on a device that is running in user mode. --> 291 <attr name="debuggable" format="boolean" /> 292 293 <!-- Flag indicating whether the application requests the VM to operate in 294 the safe mode. --> 295 <attr name="vmSafeMode" format="boolean" /> 296 297 <!-- <p>Flag indicating whether the application's rendering should be hardware 298 accelerated if possible. This flag is turned on by default for applications 299 that are targeting {@link android.os.Build.VERSION_CODES#ICE_CREAM_SANDWICH} 300 or later.</p> 301 <p>This flag can be set on the application and any activity declared 302 in the manifest. When enabled for the application, each activity is 303 automatically assumed to be hardware accelerated. This flag can be 304 overridden in the activity tags, either turning it off (if on for the 305 application) or on (if off for the application.)</p> 306 <p>When this flag is turned on for an activity (either directly or via 307 the application tag), every window created from the activity, including 308 the activity's own window, will be hardware accelerated, if possible.</p> 309 <p>Please refer to the documentation of 310 {@link android.view.WindowManager.LayoutParams#FLAG_HARDWARE_ACCELERATED} 311 for more information on how to control this flag programmatically.</p> --> 312 <attr name="hardwareAccelerated" format="boolean" /> 313 314 <!-- Flag indicating whether the given application component is available 315 to other applications. If false, it can only be accessed by 316 applications with its same user id (which usually means only by 317 code in its own package). If true, it can be invoked by external 318 entities, though which ones can do so may be controlled through 319 permissions. The default value is false for activity, receiver, 320 and service components that do not specify any intent filters; it 321 is true for activity, receiver, and service components that do 322 have intent filters (implying they expect to be invoked by others 323 who do not know their particular component name) and for all 324 content providers. --> 325 <attr name="exported" format="boolean" /> 326 327 <!-- A boolean flag used to indicate if an application is a Game or not. 328 <p>This information can be used by the system to group together 329 applications that are classified as games, and display them separately 330 from the other applications. --> 331 <attr name="isGame" format="boolean" /> 332 333 <!-- If set to true, a single instance of this component will run for 334 all users. That instance will run as user 0, the default/primary 335 user. When the app running is in processes for other users and interacts 336 with this component (by binding to a service for example) those processes will 337 always interact with the instance running for user 0. Enabling 338 single user mode forces "exported" of the component to be false, to 339 help avoid introducing multi-user security bugs. This feature is only 340 available to applications built in to the system image; you must hold the 341 permission INTERACT_ACROSS_USERS in order 342 to use this feature. This flag can only be used with services, 343 receivers, and providers; it can not be used with activities. --> 344 <attr name="singleUser" format="boolean" /> 345 346 <!-- Specify a specific process that the associated code is to run in. 347 Use with the application tag (to supply a default process for all 348 application components), or with the activity, receiver, service, 349 or provider tag (to supply a specific icon for that component). 350 351 <p>Application components are normally run in a single process that 352 is created for the entire application. You can use this tag to modify 353 where they run. If the process name begins with a ':' character, 354 a new process private to that application will be created when needed 355 to run that component (allowing you to spread your application across 356 multiple processes). If the process name begins with a lower-case 357 character, the component will be run in a global process of that name, 358 provided that you have permission to do so, allowing multiple 359 applications to share one process to reduce resource usage. --> 360 <attr name="process" format="string" /> 361 362 <!-- Specify a task name that activities have an "affinity" to. 363 Use with the application tag (to supply a default affinity for all 364 activities in the application), or with the activity tag (to supply 365 a specific affinity for that component). 366 367 <p>The default value for this attribute is the same as the package 368 name, indicating that all activities in the manifest should generally 369 be considered a single "application" to the user. You can use this 370 attribute to modify that behavior: either giving them an affinity 371 for another task, if the activities are intended to be part of that 372 task from the user's perspective, or using an empty string for 373 activities that have no affinity to a task. --> 374 <attr name="taskAffinity" format="string" /> 375 376 <!-- Specify that an activity can be moved out of a task it is in to 377 the task it has an affinity for when appropriate. Use with the 378 application tag (to supply a default for all activities in the 379 application), or with an activity tag (to supply a specific 380 setting for that component). 381 382 <p>Normally when an application is started, it is associated with 383 the task of the activity that started it and stays there for its 384 entire lifetime. You can use the allowTaskReparenting feature to force an 385 activity to be re-parented to a different task when the task it is 386 in goes to the background. Typically this is used to cause the 387 activities of an application to move back to the main task associated 388 with that application. The activity is re-parented to the task 389 with the same {@link android.R.attr#taskAffinity} as it has. --> 390 <attr name="allowTaskReparenting" format="boolean" /> 391 392 <!-- Declare that code from this application will need to be loaded into other 393 applications' processes. On devices that support multiple instruction sets, 394 this implies the code might be loaded into a process that's using any of the devices 395 supported instruction sets. 396 397 <p> The system might treat such applications specially, for eg., by 398 extracting the application's native libraries for all supported instruction 399 sets or by compiling the application's dex code for all supported instruction 400 sets. --> 401 <attr name="multiArch" format ="boolean" /> 402 403 <!-- Specify whether a component is allowed to have multiple instances 404 of itself running in different processes. Use with the activity 405 and provider tags. 406 407 <p>Normally the system will ensure that all instances of a particular 408 component are only running in a single process. You can use this 409 attribute to disable that behavior, allowing the system to create 410 instances wherever they are used (provided permissions allow it). 411 This is most often used with content providers, so that instances 412 of a provider can be created in each client process, allowing them 413 to be used without performing IPC. --> 414 <attr name="multiprocess" format="boolean" /> 415 416 <!-- Specify whether an activity should be finished when its task is 417 brought to the foreground by relaunching from the home screen. 418 419 <p>If both this option and {@link android.R.attr#allowTaskReparenting} are 420 specified, the finish trumps the affinity: the affinity will be 421 ignored and the activity simply finished. --> 422 <attr name="finishOnTaskLaunch" format="boolean" /> 423 424 <!-- Specify whether an activity should be finished when a "close system 425 windows" request has been made. This happens, for example, when 426 the home key is pressed, when the device is locked, when a system 427 dialog showing recent applications is displayed, etc. --> 428 <attr name="finishOnCloseSystemDialogs" format="boolean" /> 429 430 <!-- Specify whether an activity's task should be cleared when it 431 is re-launched from the home screen. As a result, every time the 432 user starts the task, they will be brought to its root activity, 433 regardless of whether they used BACK or HOME to last leave it. 434 This flag only applies to activities that 435 are used to start the root of a new task. 436 437 <p>An example of the use of this flag would be for the case where 438 a user launches activity A from home, and from there goes to 439 activity B. They now press home, and then return to activity A. 440 Normally they would see activity B, since that is what they were 441 last doing in A's task. However, if A has set this flag to true, 442 then upon going to the background all of the tasks on top of it (B 443 in this case) are removed, so when the user next returns to A they 444 will restart at its original activity. 445 446 <p>When this option is used in conjunction with 447 {@link android.R.attr#allowTaskReparenting}, the allowTaskReparenting trumps the 448 clear. That is, all activities above the root activity of the 449 task will be removed: those that have an affinity will be moved 450 to the task they are associated with, otherwise they will simply 451 be dropped as described here. --> 452 <attr name="clearTaskOnLaunch" format="boolean" /> 453 454 <!-- Specify whether an activity should be kept in its history stack. 455 If this attribute is set, then as soon as the user navigates away 456 from the activity it will be finished and they will no longer be 457 able to return to it. --> 458 <attr name="noHistory" format="boolean" /> 459 460 <!-- Specify whether an acitivty's task state should always be maintained 461 by the system, or if it is allowed to reset the task to its initial 462 state in certain situations. 463 464 <p>Normally the system will reset a task (remove all activities from 465 the stack and reset the root activity) in certain situations when 466 the user re-selects that task from the home screen. Typically this 467 will be done if the user hasn't visited that task for a certain 468 amount of time, such as 30 minutes. 469 470 <p>By setting this attribute, the user will always return to your 471 task in its last state, regardless of how they get there. This is 472 useful, for example, in an application like the web browser where there 473 is a lot of state (such as multiple open tabs) that the application 474 would not like to lose. --> 475 <attr name="alwaysRetainTaskState" format="boolean" /> 476 477 <!-- Indicates that an Activity does not need to have its freeze state 478 (as returned by {@link android.app.Activity#onSaveInstanceState} 479 retained in order to be restarted. Generally you use this for activities 480 that do not store any state. When this flag is set, if for some reason 481 the activity is killed before it has a chance to save its state, 482 then the system will not remove it from the activity stack like 483 it normally would. Instead, the next time the user navigates to 484 it its {@link android.app.Activity#onCreate} method will be called 485 with a null icicle, just like it was starting for the first time. 486 487 <p>This is used by the Home activity to make sure it does not get 488 removed if it crashes for some reason. --> 489 <attr name="stateNotNeeded" format="boolean" /> 490 491 <!-- Indicates that an Activity should be excluded from the list of 492 recently launched activities. --> 493 <attr name="excludeFromRecents" format="boolean" /> 494 495 <!-- Specify that an Activity should be shown over the lock screen and, 496 in a multiuser environment, across all users' windows --> 497 <attr name="showOnLockScreen" format="boolean" /> 498 499 <!-- Specify the authorities under which this content provider can be 500 found. Multiple authorities may be supplied by separating them 501 with a semicolon. Authority names should use a Java-style naming 502 convention (such as <code>com.google.provider.MyProvider</code>) 503 in order to avoid conflicts. Typically this name is the same 504 as the class implementation describing the provider's data structure. --> 505 <attr name="authorities" format="string" /> 506 507 <!-- Flag indicating whether this content provider would like to 508 participate in data synchronization. --> 509 <attr name="syncable" format="boolean" /> 510 511 <!-- Flag declaring this activity to be 'immersive'; immersive activities 512 should not be interrupted with other activities or notifications. --> 513 <attr name="immersive" format="boolean" /> 514 515 <!-- Specify the order in which content providers hosted by a process 516 are instantiated when that process is created. Not needed unless 517 you have providers with dependencies between each other, to make 518 sure that they are created in the order needed by those dependencies. 519 The value is a simple integer, with higher numbers being 520 initialized first. --> 521 <attr name="initOrder" format="integer" /> 522 523 <!-- Specify the relative importance or ability in handling a particular 524 Intent. For receivers, this controls the order in which they are 525 executed to receive a broadcast (note that for 526 asynchronous broadcasts, this order is ignored). For activities, 527 this provides information about how good an activity is handling an 528 Intent; when multiple activities match an intent and have different 529 priorities, only those with the higher priority value will be 530 considered a match. 531 532 <p>Only use if you really need to impose some specific 533 order in which the broadcasts are received, or want to forcibly 534 place an activity to always be preferred over others. The value is a 535 single integer, with higher numbers considered to be better. --> 536 <attr name="priority" format="integer" /> 537 538 <!-- Specify how an activity should be launched. See the 539 <a href="{@docRoot}guide/topics/fundamentals/tasks-and-back-stack.html">Tasks and Back 540 Stack</a> document for important information on how these options impact 541 the behavior of your application. 542 543 <p>If this attribute is not specified, <code>standard</code> launch 544 mode will be used. Note that the particular launch behavior can 545 be changed in some ways at runtime through the 546 {@link android.content.Intent} flags 547 {@link android.content.Intent#FLAG_ACTIVITY_SINGLE_TOP}, 548 {@link android.content.Intent#FLAG_ACTIVITY_NEW_TASK}, and 549 {@link android.content.Intent#FLAG_ACTIVITY_MULTIPLE_TASK}. --> 550 <attr name="launchMode"> 551 <!-- The default mode, which will usually create a new instance of 552 the activity when it is started, though this behavior may change 553 with the introduction of other options such as 554 {@link android.content.Intent#FLAG_ACTIVITY_NEW_TASK 555 Intent.FLAG_ACTIVITY_NEW_TASK}. --> 556 <enum name="standard" value="0" /> 557 <!-- If, when starting the activity, there is already an 558 instance of the same activity class in the foreground that is 559 interacting with the user, then 560 re-use that instance. This existing instance will receive a call to 561 {@link android.app.Activity#onNewIntent Activity.onNewIntent()} with 562 the new Intent that is being started. --> 563 <enum name="singleTop" value="1" /> 564 <!-- If, when starting the activity, there is already a task running 565 that starts with this activity, then instead of starting a new 566 instance the current task is brought to the front. The existing 567 instance will receive a call to {@link android.app.Activity#onNewIntent 568 Activity.onNewIntent()} 569 with the new Intent that is being started, and with the 570 {@link android.content.Intent#FLAG_ACTIVITY_BROUGHT_TO_FRONT 571 Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT} flag set. This is a superset 572 of the singleTop mode, where if there is already an instance 573 of the activity being started at the top of the stack, it will 574 receive the Intent as described there (without the 575 FLAG_ACTIVITY_BROUGHT_TO_FRONT flag set). See the 576 <a href="{@docRoot}guide/topics/fundamentals/tasks-and-back-stack.html">Tasks and Back 577 Stack</a> document for more details about tasks.--> 578 <enum name="singleTask" value="2" /> 579 <!-- Only allow one instance of this activity to ever be 580 running. This activity gets a unique task with only itself running 581 in it; if it is ever launched again with the same Intent, then that 582 task will be brought forward and its 583 {@link android.app.Activity#onNewIntent Activity.onNewIntent()} 584 method called. If this 585 activity tries to start a new activity, that new activity will be 586 launched in a separate task. See the 587 <a href="{@docRoot}guide/topics/fundamentals/tasks-and-back-stack.html">Tasks and Back 588 Stack</a> document for more details about tasks.--> 589 <enum name="singleInstance" value="3" /> 590 </attr> 591 592 <!-- Specify the orientation an activity should be run in. If not 593 specified, it will run in the current preferred orientation 594 of the screen. 595 <p>This attribute is supported by the <a 596 href="{@docRoot}guide/topics/manifest/activity-element.html">{@code <activity>}</a> 597 element. --> 598 <attr name="screenOrientation"> 599 <!-- No preference specified: let the system decide the best 600 orientation. This will either be the orientation selected 601 by the activity below, or the user's preferred orientation 602 if this activity is the bottom of a task. If the user 603 explicitly turned off sensor based orientation through settings 604 sensor based device rotation will be ignored. If not by default 605 sensor based orientation will be taken into account and the 606 orientation will changed based on how the user rotates the device. 607 Corresponds to 608 {@link android.content.pm.ActivityInfo#SCREEN_ORIENTATION_UNSPECIFIED}. --> 609 <enum name="unspecified" value="-1" /> 610 <!-- Would like to have the screen in a landscape orientation: that 611 is, with the display wider than it is tall, ignoring sensor data. 612 Corresponds to 613 {@link android.content.pm.ActivityInfo#SCREEN_ORIENTATION_LANDSCAPE}. --> 614 <enum name="landscape" value="0" /> 615 <!-- Would like to have the screen in a portrait orientation: that 616 is, with the display taller than it is wide, ignoring sensor data. 617 Corresponds to 618 {@link android.content.pm.ActivityInfo#SCREEN_ORIENTATION_PORTRAIT}. --> 619 <enum name="portrait" value="1" /> 620 <!-- Use the user's current preferred orientation of the handset. 621 Corresponds to 622 {@link android.content.pm.ActivityInfo#SCREEN_ORIENTATION_USER}. --> 623 <enum name="user" value="2" /> 624 <!-- Keep the screen in the same orientation as whatever is behind 625 this activity. 626 Corresponds to 627 {@link android.content.pm.ActivityInfo#SCREEN_ORIENTATION_BEHIND}. --> 628 <enum name="behind" value="3" /> 629 <!-- Orientation is determined by a physical orientation sensor: 630 the display will rotate based on how the user moves the device. 631 Ignores user's setting to turn off sensor-based rotation. 632 Corresponds to 633 {@link android.content.pm.ActivityInfo#SCREEN_ORIENTATION_SENSOR}. --> 634 <enum name="sensor" value="4" /> 635 <!-- Always ignore orientation determined by orientation sensor: 636 the display will not rotate when the user moves the device. 637 Corresponds to 638 {@link android.content.pm.ActivityInfo#SCREEN_ORIENTATION_NOSENSOR}. --> 639 <enum name="nosensor" value="5" /> 640 <!-- Would like to have the screen in landscape orientation, but can 641 use the sensor to change which direction the screen is facing. 642 Corresponds to 643 {@link android.content.pm.ActivityInfo#SCREEN_ORIENTATION_SENSOR_LANDSCAPE}. --> 644 <enum name="sensorLandscape" value="6" /> 645 <!-- Would like to have the screen in portrait orientation, but can 646 use the sensor to change which direction the screen is facing. 647 Corresponds to 648 {@link android.content.pm.ActivityInfo#SCREEN_ORIENTATION_SENSOR_PORTRAIT}. --> 649 <enum name="sensorPortrait" value="7" /> 650 <!-- Would like to have the screen in landscape orientation, turned in 651 the opposite direction from normal landscape. 652 Corresponds to 653 {@link android.content.pm.ActivityInfo#SCREEN_ORIENTATION_REVERSE_LANDSCAPE}. --> 654 <enum name="reverseLandscape" value="8" /> 655 <!-- Would like to have the screen in portrait orientation, turned in 656 the opposite direction from normal portrait. 657 Corresponds to 658 {@link android.content.pm.ActivityInfo#SCREEN_ORIENTATION_REVERSE_PORTRAIT}. --> 659 <enum name="reversePortrait" value="9" /> 660 <!-- Orientation is determined by a physical orientation sensor: 661 the display will rotate based on how the user moves the device. 662 This allows any of the 4 possible rotations, regardless of what 663 the device will normally do (for example some devices won't 664 normally use 180 degree rotation). 665 Corresponds to 666 {@link android.content.pm.ActivityInfo#SCREEN_ORIENTATION_FULL_SENSOR}. --> 667 <enum name="fullSensor" value="10" /> 668 <!-- Would like to have the screen in landscape orientation, but if 669 the user has enabled sensor-based rotation then we can use the 670 sensor to change which direction the screen is facing. 671 Corresponds to 672 {@link android.content.pm.ActivityInfo#SCREEN_ORIENTATION_USER_LANDSCAPE}. --> 673 <enum name="userLandscape" value="11" /> 674 <!-- Would like to have the screen in portrait orientation, but if 675 the user has enabled sensor-based rotation then we can use the 676 sensor to change which direction the screen is facing. 677 Corresponds to 678 {@link android.content.pm.ActivityInfo#SCREEN_ORIENTATION_USER_PORTRAIT}. --> 679 <enum name="userPortrait" value="12" /> 680 <!-- Respect the user's sensor-based rotation preference, but if 681 sensor-based rotation is enabled then allow the screen to rotate 682 in all 4 possible directions regardless of what 683 the device will normally do (for example some devices won't 684 normally use 180 degree rotation). 685 Corresponds to 686 {@link android.content.pm.ActivityInfo#SCREEN_ORIENTATION_FULL_USER}. --> 687 <enum name="fullUser" value="13" /> 688 <!-- Screen is locked to its current rotation, whatever that is. 689 Corresponds to 690 {@link android.content.pm.ActivityInfo#SCREEN_ORIENTATION_LOCKED}. --> 691 <enum name="locked" value="14" /> 692 </attr> 693 694 <!-- Specify one or more configuration changes that the activity will 695 handle itself. If not specified, the activity will be restarted 696 if any of these configuration changes happen in the system. Otherwise, 697 the activity will remain running and its 698 {@link android.app.Activity#onConfigurationChanged Activity.onConfigurationChanged} 699 method called with the new configuration. 700 701 <p>Note that all of these configuration changes can impact the 702 resource values seen by the application, so you will generally need 703 to re-retrieve all resources (including view layouts, drawables, etc) 704 to correctly handle any configuration change. 705 706 <p>These values must be kept in sync with those in 707 {@link android.content.pm.ActivityInfo} and 708 include/utils/ResourceTypes.h. --> 709 <attr name="configChanges"> 710 <!-- The IMSI MCC has changed, that is a SIM has been detected and 711 updated the Mobile Country Code. --> 712 <flag name="mcc" value="0x0001" /> 713 <!-- The IMSI MNC has changed, that is a SIM has been detected and 714 updated the Mobile Network Code. --> 715 <flag name="mnc" value="0x0002" /> 716 <!-- The locale has changed, that is the user has selected a new 717 language that text should be displayed in. --> 718 <flag name="locale" value="0x0004" /> 719 <!-- The touchscreen has changed. Should never normally happen. --> 720 <flag name="touchscreen" value="0x0008" /> 721 <!-- The keyboard type has changed, for example the user has plugged 722 in an external keyboard. --> 723 <flag name="keyboard" value="0x0010" /> 724 <!-- The keyboard or navigation accessibility has changed, for example 725 the user has slid the keyboard out to expose it. Note that 726 despite its name, this applied to any accessibility: keyboard 727 or navigation. --> 728 <flag name="keyboardHidden" value="0x0020" /> 729 <!-- The navigation type has changed. Should never normally happen. --> 730 <flag name="navigation" value="0x0040" /> 731 <!-- The screen orientation has changed, that is the user has 732 rotated the device. --> 733 <flag name="orientation" value="0x0080" /> 734 <!-- The screen layout has changed. This might be caused by a 735 different display being activated. --> 736 <flag name="screenLayout" value="0x0100" /> 737 <!-- The global user interface mode has changed. For example, 738 going in or out of car mode, night mode changing, etc. --> 739 <flag name="uiMode" value="0x0200" /> 740 <!-- The current available screen size has changed. If applications don't 741 target at least {@link android.os.Build.VERSION_CODES#HONEYCOMB_MR2} 742 then the activity will always handle this itself (the change 743 will not result in a restart). This represents a change in the 744 currently available size, so will change when the user switches 745 between landscape and portrait. --> 746 <flag name="screenSize" value="0x0400" /> 747 <!-- The physical screen size has changed. If applications don't 748 target at least {@link android.os.Build.VERSION_CODES#HONEYCOMB_MR2} 749 then the activity will always handle this itself (the change 750 will not result in a restart). This represents a change in size 751 regardless of orientation, so will only change when the actual 752 physical screen size has changed such as switching to an external 753 display. --> 754 <flag name="smallestScreenSize" value="0x0800" /> 755 <!-- The layout direction has changed. For example going from LTR to RTL. --> 756 <flag name="layoutDirection" value="0x2000" /> 757 <!-- The font scaling factor has changed, that is the user has 758 selected a new global font size. --> 759 <flag name="fontScale" value="0x40000000" /> 760 </attr> 761 762 <!-- Indicate that the activity can be launched as the embedded child of another 763 activity. Particularly in the case where the child lives in a container 764 such as a Display owned by another activity. 765 766 <p>The default value of this attribute is <code>false</code>. --> 767 <attr name="allowEmbedded" format="boolean" /> 768 769 <!-- Descriptive text for the associated data. --> 770 <attr name="description" format="reference" /> 771 772 <!-- The name of the application package that an Instrumentation object 773 will run against. --> 774 <attr name="targetPackage" format="string" /> 775 776 <!-- Flag indicating that an Instrumentation class wants to take care 777 of starting/stopping profiling itself, rather than relying on 778 the default behavior of profiling the complete time it is running. 779 This allows it to target profiling data at a specific set of 780 operations. --> 781 <attr name="handleProfiling" format="boolean" /> 782 783 <!-- Flag indicating that an Instrumentation class should be run as a 784 functional test. --> 785 <attr name="functionalTest" format="boolean" /> 786 787 <!-- The touch screen type used by an application. --> 788 <attr name="reqTouchScreen"> 789 <enum name="undefined" value="0" /> 790 <enum name="notouch" value="1" /> 791 <enum name="stylus" value="2" /> 792 <enum name="finger" value="3" /> 793 </attr> 794 795 <!-- The input method preferred by an application. --> 796 <attr name="reqKeyboardType"> 797 <enum name="undefined" value="0" /> 798 <enum name="nokeys" value="1" /> 799 <enum name="qwerty" value="2" /> 800 <enum name="twelvekey" value="3" /> 801 </attr> 802 803 <!-- Application's requirement for a hard keyboard --> 804 <attr name="reqHardKeyboard" format="boolean" /> 805 806 <!-- The navigation device preferred by an application. --> 807 <attr name="reqNavigation"> 808 <enum name="undefined" value="0" /> 809 <enum name="nonav" value="1" /> 810 <enum name="dpad" value="2" /> 811 <enum name="trackball" value="3" /> 812 <enum name="wheel" value="4" /> 813 </attr> 814 815 <!-- Application's requirement for five way navigation --> 816 <attr name="reqFiveWayNav" format="boolean" /> 817 818 <!-- The name of the class subclassing <code>BackupAgent</code> to manage 819 backup and restore of the application's data on external storage. --> 820 <attr name="backupAgent" format="string" /> 821 822 <!-- Whether to allow the application to participate in the backup 823 and restore infrastructure. If this attribute is set to <code>false</code>, 824 no backup or restore of the application will ever be performed, even by a 825 full-system backup that would otherwise cause all application data to be saved 826 via adb. The default value of this attribute is <code>true</code>. --> 827 <attr name="allowBackup" format="boolean" /> 828 829 <!-- Indicates that even though the application provides a <code>BackupAgent</code>, 830 only full-data streaming backup operations are to be performed to save the app's 831 data. This lets the app rely on full-data backups while still participating in 832 the backup and restore process via the BackupAgent's full-data backup APIs. 833 When this attribute is <code>true</code> the app's BackupAgent overrides of 834 the onBackup() and onRestore() callbacks can be empty stubs. --> 835 <attr name="fullBackupOnly" format="boolean" /> 836 837 <!-- Whether the application in question should be terminated after its 838 settings have been restored during a full-system restore operation. 839 Single-package restore operations will never cause the application to 840 be shut down. Full-system restore operations typically only occur once, 841 when the phone is first set up. Third-party applications will not usually 842 need to use this attribute. 843 844 <p>The default is <code>true</code>, which means that after the application 845 has finished processing its data during a full-system restore, it will be 846 terminated. --> 847 <attr name="killAfterRestore" format="boolean" /> 848 849 <!-- @deprecated This attribute is not used by the Android operating system. --> 850 <attr name="restoreNeedsApplication" format="boolean" /> 851 852 <!-- Indicate that the application is prepared to attempt a restore of any 853 backed-up dataset, even if the backup is apparently from a newer version 854 of the application than is currently installed on the device. Setting 855 this attribute to <code>true</code> will permit the Backup Manager to 856 attempt restore even when a version mismatch suggests that the data are 857 incompatible. <em>Use with caution!</em> 858 859 <p>The default value of this attribute is <code>false</code>. --> 860 <attr name="restoreAnyVersion" format="boolean" /> 861 862 <!-- The default install location defined by an application. --> 863 <attr name="installLocation"> 864 <!-- Let the system decide ideal install location --> 865 <enum name="auto" value="0" /> 866 <!-- Explicitly request to be installed on internal phone storage 867 only. --> 868 <enum name="internalOnly" value="1" /> 869 <!-- Prefer to be installed on SD card. There is no guarantee that 870 the system will honor this request. The application might end 871 up being installed on internal storage if external media 872 is unavailable or too full. --> 873 <enum name="preferExternal" value="2" /> 874 </attr> 875 876 <!-- Extra options for an activity's UI. Applies to either the {@code <activity>} or 877 {@code <application>} tag. If specified on the {@code <application>} 878 tag these will be considered defaults for all activities in the 879 application. --> 880 <attr name="uiOptions"> 881 <!-- No extra UI options. This is the default. --> 882 <flag name="none" value="0" /> 883 <!-- Split the options menu into a separate bar at the bottom of 884 the screen when severely constrained for horizontal space. 885 (e.g. portrait mode on a phone.) Instead of a small number 886 of action buttons appearing in the action bar at the top 887 of the screen, the action bar will split into the top navigation 888 section and the bottom menu section. Menu items will not be 889 split across the two bars; they will always appear together. --> 890 <flag name="splitActionBarWhenNarrow" value="1" /> 891 </attr> 892 893 <!-- The name of the logical parent of the activity as it appears in the manifest. --> 894 <attr name="parentActivityName" format="string" /> 895 896 <!-- Define how an activity persist across reboots. Activities defined as "never" will not 897 be persisted. Those defined as "always" will be persisted. Those defined as "taskOnly" 898 will persist the root activity of the task only. See below for more detail as to 899 what gets persisted. --> 900 <attr name="persistableMode"> 901 <!-- The default. If this activity forms the root of a task then that task will be 902 persisted across reboots but only the launching intent will be used. All 903 activities above this activity in the task will not be persisted. In addition 904 this activity will not be passed a PersistableBundle into which it could have 905 stored its state. --> 906 <enum name="persistRootOnly" value="0" /> 907 <!-- If this activity forms the root of a task then that task will not be persisted 908 across reboots --> 909 <enum name="persistNever" value="1" /> 910 <!-- If this activity forms the root of a task then the task and this activity will 911 be persisted across reboots. If the activity above this activity is also 912 tagged with the attribute <code>"persist"</code> then it will be persisted as well. 913 And so on up the task stack until either an activity without the 914 <code>persistableMode="persistAcrossReboots"</code> attribute or one that was launched 915 with the flag Intent.FLAG_CLEAR_TASK_WHEN_RESET is encountered. 916 917 <p>Activities that are declared with the persistAcrossReboots attribute will be 918 provided with a PersistableBundle in onSavedInstanceState(), These activities may 919 use this PeristableBundle to save their state. Then, following a reboot, that 920 PersistableBundle will be provided back to the activity in its onCreate() method. --> 921 <enum name="persistAcrossReboots" value="2" /> 922 </attr> 923 924 <!-- This attribute specifies that an activity shall become the root activity of a 925 new task each time it is launched. Using this attribute permits the user to 926 have multiple documents from the same applications appear in the recent tasks list. 927 928 <p>Such a document is any kind of item for which an application may want to 929 maintain multiple simultaneous instances. Examples might be text files, web 930 pages, spreadsheets, or emails. Each such document will be in a separate 931 task in the recent taskss list. 932 933 <p>This attribute is equivalent to adding the flag {@link 934 android.content.Intent#FLAG_ACTIVITY_NEW_DOCUMENT} to every Intent used to launch 935 the activity. 936 937 <p>The documentLaunchMode attribute may be assigned one of four values, "none", 938 "intoExisting", "always" and "never", described in detail below. For values other than 939 <code>none</code> and <code>never</code> the activity must be defined with 940 {@link android.R.attr#launchMode} <code>standard</code>. 941 If this attribute is not specified, <code>none</code> will be used. 942 Note that <code>none</code> can be overridden at run time if the Intent used 943 to launch it contains the flag {@link android.content.Intent#FLAG_ACTIVITY_NEW_DOCUMENT 944 Intent.FLAG_ACTIVITY_NEW_DOCUMENT}. 945 Similarly <code>intoExisting</code> will be overridden by the flag 946 {@link android.content.Intent#FLAG_ACTIVITY_NEW_DOCUMENT 947 Intent.FLAG_ACTIVITY_NEW_DOCUMENT} combined with 948 {@link android.content.Intent#FLAG_ACTIVITY_MULTIPLE_TASK 949 Intent.FLAG_ACTIVITY_MULTIPLE_TASK}. If the value of 950 documentLaunchModes is <code>never</code> then any use of 951 {@link android.content.Intent#FLAG_ACTIVITY_NEW_DOCUMENT 952 Intent.FLAG_ACTIVITY_NEW_DOCUMENT} to launch this activity will be ignored. --> 953 <attr name="documentLaunchMode"> 954 <!-- The default mode, which will create a new task only when 955 {@link android.content.Intent#FLAG_ACTIVITY_NEW_TASK 956 Intent.FLAG_ACTIVITY_NEW_TASK} is set. --> 957 <enum name="none" value="0" /> 958 <!-- All tasks will be searched for one whose base Intent's ComponentName and 959 data URI match those of the launching Intent. If such a task is found 960 that task will be cleared and restarted with the root activity receiving a call 961 to {@link android.app.Activity#onNewIntent Activity.onNewIntent}. If no 962 such task is found a new task will be created. 963 <p>This is the equivalent of launching an activity with {@link 964 android.content.Intent#FLAG_ACTIVITY_NEW_DOCUMENT Intent.FLAG_ACTIVITY_NEW_DOCUMENT} 965 set and without {@link android.content.Intent#FLAG_ACTIVITY_MULTIPLE_TASK 966 Intent.FLAG_ACTIVITY_MULTIPLE_TASK} set. --> 967 <enum name="intoExisting" value="1" /> 968 <!-- A new task rooted at this activity will be created. This will happen whether or 969 not there is an existing task whose ComponentName and data URI match 970 that of the launcing intent This is the equivalent of launching an activity 971 with {@link 972 android.content.Intent#FLAG_ACTIVITY_NEW_DOCUMENT Intent.FLAG_ACTIVITY_NEW_DOCUMENT} 973 and {@link android.content.Intent#FLAG_ACTIVITY_MULTIPLE_TASK 974 Intent.FLAG_ACTIVITY_MULTIPLE_TASK} both set. --> 975 <enum name="always" value="2" /> 976 <!-- This activity will not be launched into a new document even if the Intent contains 977 {@link android.content.Intent#FLAG_ACTIVITY_NEW_DOCUMENT 978 Intent.FLAG_ACTIVITY_NEW_DOCUMENT}. This gives the activity writer ultimate 979 control over how their activity is used. Note that applications prior to api 980 21 will default to documentLaunchMode="none" so only activities that explicitly 981 opt out with <code>"never"</code> may do so. --> 982 <enum name="never" value="3" /> 983 </attr> 984 985 <!-- The maximum number of entries of tasks rooted at this activity in the recent task list. 986 When this number of entries is reached the least recently used instance of this activity 987 will be removed from recents. The value will be clamped between 1 and 100 inclusive. 988 The default value for this if it is not specified is 15. --> 989 <attr name="maxRecents" format="integer" /> 990 991 <!-- Tasks launched by activities with this attribute will remain in the recent tasks 992 list until the last activity in the task is completed. When that happens the task 993 will be automatically removed from the recent tasks list. This overrides the caller's 994 use of {@link android.content.Intent#FLAG_ACTIVITY_RETAIN_IN_RECENTS 995 Intent.FLAG_ACTIVITY_RETAIN_IN_RECENTS} --> 996 <attr name="autoRemoveFromRecents" format="boolean" /> 997 998 <!-- Tasks whose root has this attribute set to true will replace baseIntent with that of the 999 next activity in the task. If the next activity also has this attribute set to true then 1000 it will yield the baseIntent to any activity that it launches in the same task. This 1001 continues until an activity is encountered which has this attribute set to false. False 1002 is the default. This attribute set to true also permits activity's use of the 1003 TaskDescription to change labels, colors and icons in the recent task list. --> 1004 <attr name="relinquishTaskIdentity" format="boolean" /> 1005 1006 <!-- Indicate that it is okay for this activity be resumed while the previous 1007 activity is in the process of pausing, without waiting for the previous pause 1008 to complete. Use this with caution: your activity can not acquire any exclusive 1009 resources (such as opening the camera or recording audio) when it launches, or it 1010 may conflict with the previous activity and fail. 1011 1012 <p>The default value of this attribute is <code>false</code>. --> 1013 <attr name="resumeWhilePausing" format="boolean" /> 1014 1015 <!-- The <code>manifest</code> tag is the root of an 1016 <code>AndroidManifest.xml</code> file, 1017 describing the contents of an Android package (.apk) file. One 1018 attribute must always be supplied: <code>package</code> gives a 1019 unique name for the package, using a Java-style naming convention 1020 to avoid name collisions. For example, applications published 1021 by Google could have names of the form 1022 <code>com.google.app.<em>appname</em></code> 1023 1024 <p>Inside of the manifest tag, may appear the following tags 1025 in any order: {@link #AndroidManifestPermission permission}, 1026 {@link #AndroidManifestPermissionGroup permission-group}, 1027 {@link #AndroidManifestPermissionTree permission-tree}, 1028 {@link #AndroidManifestUsesSdk uses-sdk}, 1029 {@link #AndroidManifestUsesPermission uses-permission}, 1030 {@link #AndroidManifestUsesConfiguration uses-configuration}, 1031 {@link #AndroidManifestApplication application}, 1032 {@link #AndroidManifestInstrumentation instrumentation}, 1033 {@link #AndroidManifestUsesFeature uses-feature}. --> 1034 <declare-styleable name="AndroidManifest"> 1035 <attr name="versionCode" /> 1036 <attr name="versionName" /> 1037 <attr name="revisionCode" /> 1038 <attr name="sharedUserId" /> 1039 <attr name="sharedUserLabel" /> 1040 <attr name="installLocation" /> 1041 </declare-styleable> 1042 1043 <!-- The <code>application</code> tag describes application-level components 1044 contained in the package, as well as general application 1045 attributes. Many of the attributes you can supply here (such 1046 as theme, label, icon, permission, process, taskAffinity, 1047 and allowTaskReparenting) serve 1048 as default values for the corresponding attributes of components 1049 declared inside of the application. 1050 1051 <p>Inside of this element you specify what the application contains, 1052 using the elements {@link #AndroidManifestProvider provider}, 1053 {@link #AndroidManifestService service}, 1054 {@link #AndroidManifestReceiver receiver}, 1055 {@link #AndroidManifestActivity activity}, 1056 {@link #AndroidManifestActivityAlias activity-alias}, and 1057 {@link #AndroidManifestUsesLibrary uses-library}. The application tag 1058 appears as a child of the root {@link #AndroidManifest manifest} tag. --> 1059 <declare-styleable name="AndroidManifestApplication" parent="AndroidManifest"> 1060 <!-- An optional name of a class implementing the overall 1061 {@link android.app.Application} for this package. When the 1062 process for your package is started, this class is instantiated 1063 before any of the other application components. Note that this 1064 is not required, and in fact most applications will probably 1065 not need it. --> 1066 <attr name="name" /> 1067 <attr name="theme" /> 1068 <attr name="label" /> 1069 <attr name="icon" /> 1070 <attr name="banner" /> 1071 <attr name="logo" /> 1072 <attr name="description" /> 1073 <attr name="permission" /> 1074 <attr name="process" /> 1075 <attr name="taskAffinity" /> 1076 <attr name="allowTaskReparenting" /> 1077 <!-- Indicate whether this application contains code. If set to false, 1078 there is no code associated with it and thus the system will not 1079 try to load its code when launching components. The default is true 1080 for normal behavior. --> 1081 <attr name="hasCode" format="boolean" /> 1082 <attr name="persistent" /> 1083 <attr name="requiredForAllUsers" /> 1084 <!-- Specify whether the components in this application are enabled or not (that is, can be 1085 instantiated by the system). 1086 If "false", it overrides any component specific values (a value of "true" will not 1087 override the component specific values). --> 1088 <attr name="enabled" /> 1089 <attr name="debuggable" /> 1090 <attr name="vmSafeMode" /> 1091 <attr name="hardwareAccelerated" /> 1092 <!-- Name of activity to be launched for managing the application's space on the device. --> 1093 <attr name="manageSpaceActivity" /> 1094 <attr name="allowClearUserData" /> 1095 <attr name="testOnly" /> 1096 <attr name="backupAgent" /> 1097 <attr name="allowBackup" /> 1098 <attr name="fullBackupOnly" /> 1099 <attr name="killAfterRestore" /> 1100 <attr name="restoreNeedsApplication" /> 1101 <attr name="restoreAnyVersion" /> 1102 <attr name="neverEncrypt" /> 1103 <!-- Request that your application's processes be created with 1104 a large Dalvik heap. This applies to <em>all</em> processes 1105 created for the application. It only applies to the first 1106 application loaded into a process; if using a sharedUserId 1107 to allow multiple applications to use a process, they all must 1108 use this option consistently or will get unpredictable results. --> 1109 <attr name="largeHeap" format="boolean" /> 1110 <!-- Declare that this application can't participate in the normal 1111 state save/restore mechanism. Since it is not able to save and 1112 restore its state on demand, 1113 it can not participate in the normal activity lifecycle. It will 1114 not be killed while in the background; the user must explicitly 1115 quit it. Only one such app can be running at a time; if the user 1116 tries to launch a second such app, they will be prompted 1117 to quit the first before doing so. While the 1118 application is running, the user will be informed of this. 1119 @hide --> 1120 <attr name="cantSaveState" format="boolean" /> 1121 <attr name="uiOptions" /> 1122 <!-- Declare that your application will be able to deal with RTL (right to left) layouts. 1123 If set to false (default value), your application will not care about RTL layouts. --> 1124 <attr name="supportsRtl" format="boolean" /> 1125 <!-- Declare that this application requires access to restricted accounts of a certain 1126 type. The default value is null and restricted accounts won\'t be visible to this 1127 application. The type should correspond to the account authenticator type, such as 1128 "com.google". --> 1129 <attr name="restrictedAccountType" format="string"/> 1130 <!-- Declare that this application requires an account of a certain 1131 type. The default value is null and indicates that the application can work without 1132 any accounts. The type should correspond to the account authenticator type, such as 1133 "com.google". --> 1134 <attr name="requiredAccountType" format="string"/> 1135 <attr name="isGame" /> 1136 <attr name="multiArch" /> 1137 </declare-styleable> 1138 1139 <!-- The <code>permission</code> tag declares a security permission that can be 1140 used to control access from other packages to specific components or 1141 features in your package (or other packages). See the 1142 <a href="{@docRoot}guide/topics/security/security.html">Security and Permissions</a> 1143 document for more information on permissions. 1144 1145 <p>This appears as a child tag of the root 1146 {@link #AndroidManifest manifest} tag. --> 1147 <declare-styleable name="AndroidManifestPermission" parent="AndroidManifest"> 1148 <!-- Required public name of the permission, which other components and 1149 packages will use when referring to this permission. This is a string using 1150 Java-style scoping to ensure it is unique. The prefix will often 1151 be the same as our overall package name, for example 1152 "com.mycompany.android.myapp.SomePermission". --> 1153 <attr name="name" /> 1154 <attr name="label" /> 1155 <attr name="icon" /> 1156 <attr name="banner" /> 1157 <attr name="logo" /> 1158 <attr name="permissionGroup" /> 1159 <attr name="description" /> 1160 <attr name="protectionLevel" /> 1161 <attr name="permissionFlags" /> 1162 </declare-styleable> 1163 1164 <!-- The <code>permission-group</code> tag declares a logical grouping of 1165 related permissions. 1166 1167 <p>Note that this tag does not declare a permission itself, only 1168 a namespace in which further permissions can be placed. See 1169 the {@link #AndroidManifestPermission <permission>} tag for 1170 more information. 1171 1172 <p>This appears as a child tag of the root 1173 {@link #AndroidManifest manifest} tag. --> 1174 <declare-styleable name="AndroidManifestPermissionGroup" parent="AndroidManifest"> 1175 <!-- Required public name of the permission group, permissions will use 1176 to specify the group they are in. This is a string using 1177 Java-style scoping to ensure it is unique. The prefix will often 1178 be the same as our overall package name, for example 1179 "com.mycompany.android.myapp.SomePermission". --> 1180 <attr name="name" /> 1181 <attr name="label" /> 1182 <attr name="icon" /> 1183 <attr name="banner" /> 1184 <attr name="logo" /> 1185 <attr name="description" /> 1186 <attr name="permissionGroupFlags" /> 1187 <attr name="priority" /> 1188 </declare-styleable> 1189 1190 <!-- The <code>permission-tree</code> tag declares the base of a tree of 1191 permission values: it declares that this package has ownership of 1192 the given permission name, as well as all names underneath it 1193 (separated by '.'). This allows you to use the 1194 {@link android.content.pm.PackageManager#addPermission 1195 PackageManager.addPermission()} method to dynamically add new 1196 permissions under this tree. 1197 1198 <p>Note that this tag does not declare a permission itself, only 1199 a namespace in which further permissions can be placed. See 1200 the {@link #AndroidManifestPermission <permission>} tag for 1201 more information. 1202 1203 <p>This appears as a child tag of the root 1204 {@link #AndroidManifest manifest} tag. --> 1205 <declare-styleable name="AndroidManifestPermissionTree" parent="AndroidManifest"> 1206 <!-- Required public name of the permission tree, which is the base name 1207 of all permissions under it. This is a string using 1208 Java-style scoping to ensure it is unique. The prefix will often 1209 be the same as our overall package name, for example 1210 "com.mycompany.android.myapp.SomePermission". A permission tree name 1211 must have more than two segments in its path; that is, 1212 "com.me.foo" is okay, but not "com.me" or "com". --> 1213 <attr name="name" /> 1214 <attr name="label" /> 1215 <attr name="icon" /> 1216 <attr name="banner" /> 1217 <attr name="logo" /> 1218 </declare-styleable> 1219 1220 <!-- The <code>uses-permission</code> tag requests a 1221 {@link #AndroidManifestPermission <permission>} that the containing 1222 package must be granted in order for it to operate correctly. 1223 See the <a href="{@docRoot}guide/topics/security/security.html">Security and Permissions</a> 1224 document for more information on permissions. Also available is a 1225 {@link android.Manifest.permission list of permissions} included 1226 with the base platform. 1227 1228 <p>This appears as a child tag of the root 1229 {@link #AndroidManifest manifest} tag. --> 1230 <declare-styleable name="AndroidManifestUsesPermission" parent="AndroidManifest"> 1231 <!-- Required name of the permission you use, as published with the 1232 corresponding name attribute of a 1233 {@link android.R.styleable#AndroidManifestPermission <permission>} 1234 tag; often this is one of the {@link android.Manifest.permission standard 1235 system permissions}. --> 1236 <attr name="name" /> 1237 <!-- Optional: specify the maximum version of the Android OS for which the 1238 application wishes to request the permission. When running on a version 1239 of Android higher than the number given here, the permission will not 1240 be requested. --> 1241 <attr name="maxSdkVersion" format="integer" /> 1242 <!-- Specify whether this permission is required for the application. 1243 The default is true, meaning the application requires the 1244 permission, and it must always be granted when it is installed. 1245 If you set this to false, then in some cases the application may 1246 be installed with it being granted the permission, and it will 1247 need to request the permission later if it needs it. 1248 <attr name="required" format="boolean" /> 1249 --> 1250 </declare-styleable> 1251 1252 <!-- The <code>uses-configuration</code> tag specifies 1253 a specific hardware configuration value used by the application. 1254 For example an application might specify that it requires 1255 a physical keyboard or a particular navigation method like 1256 trackball. Multiple such attribute values can be specified by the 1257 application. 1258 1259 <p>This appears as a child tag of the root 1260 {@link #AndroidManifest manifest} tag. 1261 1262 @deprecated Use <code>feature-group</code> instead.--> 1263 <declare-styleable name="AndroidManifestUsesConfiguration" parent="AndroidManifest"> 1264 <!-- The type of touch screen used by an application. --> 1265 <attr name="reqTouchScreen" /> 1266 <attr name="reqKeyboardType" /> 1267 <attr name="reqHardKeyboard" /> 1268 <attr name="reqNavigation" /> 1269 <attr name="reqFiveWayNav" /> 1270 </declare-styleable> 1271 1272 <!-- The <code>uses-feature</code> tag specifies 1273 a specific feature used by the application. 1274 For example an application might specify that it requires 1275 specific version of OpenGL. Multiple such attribute 1276 values can be specified by the application. 1277 1278 <p>This appears as a child tag of the root 1279 {@link #AndroidManifest manifest} tag. --> 1280 <declare-styleable name="AndroidManifestUsesFeature" parent="AndroidManifest"> 1281 <!-- The GLES driver version number needed by an application. 1282 The higher 16 bits represent the major number and the lower 16 bits 1283 represent the minor number. For example for GL 1.2 referring to 1284 0x00000102, the actual value should be set as 0x00010002. --> 1285 <attr name="glEsVersion" format="integer"/> 1286 <!-- The name of the feature that is being used. --> 1287 <attr name="name" /> 1288 <!-- Specify whether this feature is required for the application. 1289 The default is true, meaning the application requires the 1290 feature, and does not want to be installed on devices that 1291 don't support it. If you set this to false, then this will 1292 not impose a restriction on where the application can be 1293 installed. --> 1294 <attr name="required" format="boolean" /> 1295 </declare-styleable> 1296 1297 <!-- The <code>feature-group</code> tag specifies 1298 a set of one or more <code>uses-feature</code> elements that 1299 the application can utilize. An application uses multiple 1300 <code>feature-group</code> sets to indicate that it can support 1301 different combinations of features. 1302 1303 <p>This appears as a child tag of the root 1304 {@link #AndroidManifest manifest} tag. --> 1305 <declare-styleable name="AndroidManifestFeatureGroup"> 1306 <!-- The human-readable name of the feature group. --> 1307 <attr name="label" /> 1308 </declare-styleable> 1309 1310 <!-- The <code>uses-sdk</code> tag describes the SDK features that the 1311 containing package must be running on to operate correctly. 1312 1313 <p>This appears as a child tag of the root 1314 {@link #AndroidManifest manifest} tag. --> 1315 <declare-styleable name="AndroidManifestUsesSdk" parent="AndroidManifest"> 1316 <!-- This is the minimum SDK version number that the application 1317 requires. This number is an abstract integer, from the list 1318 in {@link android.os.Build.VERSION_CODES} If 1319 not supplied, the application will work on any SDK. This 1320 may also be string (such as "Donut") if the application was built 1321 against a development branch, in which case it will only work against 1322 the development builds. --> 1323 <attr name="minSdkVersion" format="integer|string" /> 1324 <!-- This is the SDK version number that the application is targeting. 1325 It is able to run on older versions (down to minSdkVersion), but 1326 was explicitly tested to work with the version specified here. 1327 Specifying this version allows the platform to disable compatibility 1328 code that are not required or enable newer features that are not 1329 available to older applications. This may also be a string 1330 (such as "Donut") if this is built against a development 1331 branch, in which case minSdkVersion is also forced to be that 1332 string. --> 1333 <attr name="targetSdkVersion" format="integer|string" /> 1334 <!-- This is the maximum SDK version number that an application works 1335 on. You can use this to ensure your application is filtered out 1336 of later versions of the platform when you know you have 1337 incompatibility with them. --> 1338 <attr name="maxSdkVersion" /> 1339 </declare-styleable> 1340 1341 <!-- The <code>library</code> tag declares that this apk is providing itself 1342 as a shared library for other applications to use. It can only be used 1343 with apks that are built in to the system image. Other apks can link to 1344 it with the {@link #AndroidManifestUsesLibrary uses-library} tag. 1345 1346 <p>This appears as a child tag of the 1347 {@link #AndroidManifestApplication application} tag. --> 1348 <declare-styleable name="AndroidManifestLibrary" parent="AndroidManifest"> 1349 <!-- Required public name of the library, which other components and 1350 packages will use when referring to this library. This is a string using 1351 Java-style scoping to ensure it is unique. The name should typically 1352 be the same as the apk's package name. --> 1353 <attr name="name" /> 1354 </declare-styleable> 1355 1356 <!-- The <code>uses-libraries</code> specifies a shared library that this 1357 package requires to be linked against. Specifying this flag tells the 1358 system to include this library's code in your class loader. 1359 1360 <p>This appears as a child tag of the 1361 {@link #AndroidManifestApplication application} tag. --> 1362 <declare-styleable name="AndroidManifestUsesLibrary" parent="AndroidManifestApplication"> 1363 <!-- Required name of the library you use. --> 1364 <attr name="name" /> 1365 <!-- Specify whether this library is required for the application. 1366 The default is true, meaning the application requires the 1367 library, and does not want to be installed on devices that 1368 don't support it. If you set this to false, then this will 1369 allow the application to be installed even if the library 1370 doesn't exist, and you will need to check for its presence 1371 dynamically at runtime. --> 1372 <attr name="required" /> 1373 </declare-styleable> 1374 1375 <!-- The <code>supports-screens</code> specifies the screen dimensions an 1376 application supports. By default a modern application supports all 1377 screen sizes and must explicitly disable certain screen sizes here; 1378 older applications are assumed to only support the traditional normal 1379 (HVGA) screen size. Note that screen size is a separate axis from 1380 density, and is determined as the available pixels to an application 1381 after density scaling has been applied. 1382 1383 <p>This appears as a child tag of the 1384 {@link #AndroidManifest manifest} tag. --> 1385 <declare-styleable name="AndroidManifestSupportsScreens" parent="AndroidManifest"> 1386 <!-- Starting with {@link android.os.Build.VERSION_CODES#HONEYCOMB_MR2}, 1387 this is the new way to specify the minimum screen size an application is 1388 compatible with. This attribute provides the required minimum 1389 "smallest screen width" (as per the -swNNNdp resource configuration) 1390 that the application can run on. For example, a typical phone 1391 screen is 320, a 7" tablet 600, and a 10" tablet 720. If the 1392 smallest screen width of the device is below the value supplied here, 1393 then the application is considered incompatible with that device. 1394 If not supplied, then any old smallScreens, normalScreens, largeScreens, 1395 or xlargeScreens attributes will be used instead. --> 1396 <attr name="requiresSmallestWidthDp" format="integer" /> 1397 <!-- Starting with {@link android.os.Build.VERSION_CODES#HONEYCOMB_MR2}, 1398 this is the new way to specify the largest screens an application is 1399 compatible with. This attribute provides the maximum 1400 "smallest screen width" (as per the -swNNNdp resource configuration) 1401 that the application is designed for. If this value is smaller than 1402 the "smallest screen width" of the device it is running on, the user 1403 is offered to run it in a compatibility mode that emulates a 1404 smaller screen and zooms it to fit the screen. Currently the compatibility mode only 1405 emulates phone screens with a 320dp width, so compatibility mode is not applied if the 1406 value for compatibleWidthLimitDp is larger than 320. --> 1407 <attr name="compatibleWidthLimitDp" format="integer" /> 1408 <!-- Starting with {@link android.os.Build.VERSION_CODES#HONEYCOMB_MR2}, 1409 this is the new way to specify the screens an application is 1410 compatible with. This attribute provides the maximum 1411 "smallest screen width" (as per the -swNNNdp resource configuration) 1412 that the application can work well on. If this value is smaller than 1413 the "smallest screen width" of the device it is running on, the 1414 application will be forced in to screen compatibility mode with 1415 no way for the user to turn it off. Currently the compatibility mode only 1416 emulates phone screens with a 320dp width, so compatibility mode is not applied if the 1417 value for largestWidthLimitDp is larger than 320. --> 1418 <attr name="largestWidthLimitDp" format="integer" /> 1419 <!-- Indicates whether the application supports smaller screen form-factors. 1420 A small screen is defined as one with a smaller aspect ratio than 1421 the traditional HVGA screen; that is, for a portrait screen, less 1422 tall than an HVGA screen. In practice, this means a QVGA low 1423 density or VGA high density screen. An application that does 1424 not support small screens <em>will not be available</em> for 1425 small screen devices, since there is little the platform can do 1426 to make such an application work on a smaller screen. --> 1427 <attr name="smallScreens" format="boolean" /> 1428 <!-- Indicates whether an application supports the normal screen 1429 form-factors. Traditionally this is an HVGA normal density 1430 screen, but WQVGA low density and WVGA high density are also 1431 considered to be normal. This attribute is true by default, 1432 and applications currently should leave it that way. --> 1433 <attr name="normalScreens" format="boolean" /> 1434 <!-- Indicates whether the application supports larger screen form-factors. 1435 A large screen is defined as a screen that is significantly larger 1436 than a normal phone screen, and thus may require some special care 1437 on the application's part to make good use of it. An example would 1438 be a VGA <em>normal density</em> screen, though even larger screens 1439 are certainly possible. An application that does not support 1440 large screens will be placed as a postage stamp on such a 1441 screen, so that it retains the dimensions it was originally 1442 designed for. --> 1443 <attr name="largeScreens" format="boolean" /> 1444 <!-- Indicates whether the application supports extra large screen form-factors. --> 1445 <attr name="xlargeScreens" format="boolean" /> 1446 <!-- Indicates whether the application can resize itself to newer 1447 screen sizes. This is mostly used to distinguish between old 1448 applications that may not be compatible with newly introduced 1449 screen sizes and newer applications that should be; it will be 1450 set for you automatically based on whether you are targeting 1451 a newer platform that supports more screens. --> 1452 <attr name="resizeable" format="boolean" /> 1453 <!-- Indicates whether the application can accommodate any screen 1454 density. Older applications are assumed to not be able to, 1455 new ones able to. You can explicitly supply your abilities 1456 here. --> 1457 <attr name="anyDensity" format="boolean" /> 1458 </declare-styleable> 1459 1460 <!-- Private tag to declare system protected broadcast actions. 1461 1462 <p>This appears as a child tag of the root 1463 {@link #AndroidManifest manifest} tag. --> 1464 <declare-styleable name="AndroidManifestProtectedBroadcast" parent="AndroidManifest"> 1465 <attr name="name" /> 1466 </declare-styleable> 1467 1468 <!-- Private tag to declare the original package name that this package is 1469 based on. Only used for packages installed in the system image. If 1470 given, and different than the actual package name, and the given 1471 original package was previously installed on the device but the new 1472 one was not, then the data for the old one will be renamed to be 1473 for the new package. 1474 1475 <p>This appears as a child tag of the root 1476 {@link #AndroidManifest manifest} tag. --> 1477 <declare-styleable name="AndroidManifestOriginalPackage" parent="AndroidManifest"> 1478 <attr name="name" /> 1479 </declare-styleable> 1480 1481 <!-- The <code>provider</code> tag declares a 1482 {@link android.content.ContentProvider} class that is available 1483 as part of the package's application components, supplying structured 1484 access to data managed by the application. 1485 1486 <p>This appears as a child tag of the 1487 {@link #AndroidManifestApplication application} tag. --> 1488 <declare-styleable name="AndroidManifestProvider" parent="AndroidManifestApplication"> 1489 <!-- Required name of the class implementing the provider, deriving from 1490 {@link android.content.ContentProvider}. This is a fully 1491 qualified class name (for example, com.mycompany.myapp.MyProvider); as a 1492 short-hand if the first character of the class 1493 is a period then it is appended to your package name. --> 1494 <attr name="name" /> 1495 <attr name="label" /> 1496 <attr name="description" /> 1497 <attr name="icon" /> 1498 <attr name="banner" /> 1499 <attr name="logo" /> 1500 <attr name="process" /> 1501 <attr name="authorities" /> 1502 <attr name="syncable" /> 1503 <attr name="readPermission" /> 1504 <attr name="writePermission" /> 1505 <attr name="grantUriPermissions" /> 1506 <attr name="permission" /> 1507 <attr name="multiprocess" /> 1508 <attr name="initOrder" /> 1509 <!-- Specify whether this provider is enabled or not (that is, can be instantiated by the system). 1510 It can also be specified for an application as a whole, in which case a value of "false" 1511 will override any component specific values (a value of "true" will not override the 1512 component specific values). --> 1513 <attr name="enabled" /> 1514 <attr name="exported" /> 1515 <attr name="singleUser" /> 1516 </declare-styleable> 1517 1518 <!-- Attributes that can be supplied in an AndroidManifest.xml 1519 <code>grant-uri-permission</code> tag, a child of the 1520 {@link #AndroidManifestProvider provider} tag, describing a specific 1521 URI path that can be granted as a permission. This tag can be 1522 specified multiple time to supply multiple paths. --> 1523 <declare-styleable name="AndroidManifestGrantUriPermission" parent="AndroidManifestProvider"> 1524 <!-- Specify a URI path that must exactly match, as per 1525 {@link android.os.PatternMatcher} with 1526 {@link android.os.PatternMatcher#PATTERN_LITERAL}. --> 1527 <attr name="path" format="string" /> 1528 <!-- Specify a URI path that must be a prefix to match, as per 1529 {@link android.os.PatternMatcher} with 1530 {@link android.os.PatternMatcher#PATTERN_PREFIX}. --> 1531 <attr name="pathPrefix" format="string" /> 1532 <!-- Specify a URI path that matches a simple pattern, as per 1533 {@link android.os.PatternMatcher} with 1534 {@link android.os.PatternMatcher#PATTERN_SIMPLE_GLOB}. 1535 Note that because '\' is used as an escape character when 1536 reading the string from XML (before it is parsed as a pattern), 1537 you will need to double-escape: for example a literal "*" would 1538 be written as "\\*" and a literal "\" would be written as 1539 "\\\\". This is basically the same as what you would need to 1540 write if constructing the string in Java code. --> 1541 <attr name="pathPattern" format="string" /> 1542 </declare-styleable> 1543 1544 <!-- Attributes that can be supplied in an AndroidManifest.xml 1545 <code>path-permission</code> tag, a child of the 1546 {@link #AndroidManifestProvider provider} tag, describing a permission 1547 that allows access to a specific path in the provider. This tag can be 1548 specified multiple time to supply multiple paths. --> 1549 <declare-styleable name="AndroidManifestPathPermission" parent="AndroidManifestProvider"> 1550 <attr name="path" /> 1551 <attr name="pathPrefix" /> 1552 <attr name="pathPattern" /> 1553 <attr name="permission" /> 1554 <attr name="readPermission" /> 1555 <attr name="writePermission" /> 1556 </declare-styleable> 1557 1558 <!-- The <code>service</code> tag declares a 1559 {@link android.app.Service} class that is available 1560 as part of the package's application components, implementing 1561 long-running background operations or a rich communication API 1562 that can be called by other packages. 1563 1564 <p>Zero or more {@link #AndroidManifestIntentFilter intent-filter} 1565 tags can be included inside of a service, to specify the Intents 1566 that can connect with it. If none are specified, the service can 1567 only be accessed by direct specification of its class name. 1568 The service tag appears as a child tag of the 1569 {@link #AndroidManifestApplication application} tag. --> 1570 <declare-styleable name="AndroidManifestService" parent="AndroidManifestApplication"> 1571 <!-- Required name of the class implementing the service, deriving from 1572 {@link android.app.Service}. This is a fully 1573 qualified class name (for example, com.mycompany.myapp.MyService); as a 1574 short-hand if the first character of the class 1575 is a period then it is appended to your package name. --> 1576 <attr name="name" /> 1577 <attr name="label" /> 1578 <attr name="description" /> 1579 <attr name="icon" /> 1580 <attr name="banner" /> 1581 <attr name="logo" /> 1582 <attr name="permission" /> 1583 <attr name="process" /> 1584 <!-- Specify whether the service is enabled or not (that is, can be instantiated by the system). 1585 It can also be specified for an application as a whole, in which case a value of "false" 1586 will override any component specific values (a value of "true" will not override the 1587 component specific values). --> 1588 <attr name="enabled" /> 1589 <attr name="exported" /> 1590 <!-- If set to true, this service with be automatically stopped 1591 when the user remove a task rooted in an activity owned by 1592 the application. The default is false. --> 1593 <attr name="stopWithTask" format="boolean" /> 1594 <!-- If set to true, this service will run under a special process 1595 that is isolated from the rest of the system. The only communication 1596 with it is through the Service API (binding and starting). --> 1597 <attr name="isolatedProcess" format="boolean" /> 1598 <attr name="singleUser" /> 1599 </declare-styleable> 1600 1601 <!-- The <code>receiver</code> tag declares an 1602 {@link android.content.BroadcastReceiver} class that is available 1603 as part of the package's application components, allowing the 1604 application to receive actions or data broadcast by other 1605 applications even if it is not currently running. 1606 1607 <p>Zero or more {@link #AndroidManifestIntentFilter intent-filter} 1608 tags can be included inside of a receiver, to specify the Intents 1609 it will receive. If none are specified, the receiver will only 1610 be run when an Intent is broadcast that is directed at its specific 1611 class name. The receiver tag appears as a child tag of the 1612 {@link #AndroidManifestApplication application} tag. --> 1613 <declare-styleable name="AndroidManifestReceiver" parent="AndroidManifestApplication"> 1614 <!-- Required name of the class implementing the receiver, deriving from 1615 {@link android.content.BroadcastReceiver}. This is a fully 1616 qualified class name (for example, com.mycompany.myapp.MyReceiver); as a 1617 short-hand if the first character of the class 1618 is a period then it is appended to your package name. --> 1619 <attr name="name" /> 1620 <attr name="label" /> 1621 <attr name="description" /> 1622 <attr name="icon" /> 1623 <attr name="banner" /> 1624 <attr name="logo" /> 1625 <attr name="permission" /> 1626 <attr name="process" /> 1627 <!-- Specify whether the receiver is enabled or not (that is, can be instantiated by the system). 1628 It can also be specified for an application as a whole, in which case a value of "false" 1629 will override any component specific values (a value of "true" will not override the 1630 component specific values). --> 1631 <attr name="enabled" /> 1632 <attr name="exported" /> 1633 <attr name="singleUser" /> 1634 </declare-styleable> 1635 1636 <!-- The <code>activity</code> tag declares an 1637 {@link android.app.Activity} class that is available 1638 as part of the package's application components, implementing 1639 a part of the application's user interface. 1640 1641 <p>Zero or more {@link #AndroidManifestIntentFilter intent-filter} 1642 tags can be included inside of an activity, to specify the Intents 1643 that it can handle. If none are specified, the activity can 1644 only be started through direct specification of its class name. 1645 The activity tag appears as a child tag of the 1646 {@link #AndroidManifestApplication application} tag. --> 1647 <declare-styleable name="AndroidManifestActivity" parent="AndroidManifestApplication"> 1648 <!-- Required name of the class implementing the activity, deriving from 1649 {@link android.app.Activity}. This is a fully 1650 qualified class name (for example, com.mycompany.myapp.MyActivity); as a 1651 short-hand if the first character of the class 1652 is a period then it is appended to your package name. --> 1653 <attr name="name" /> 1654 <attr name="theme" /> 1655 <attr name="label" /> 1656 <attr name="description" /> 1657 <attr name="icon" /> 1658 <attr name="banner" /> 1659 <attr name="logo" /> 1660 <attr name="launchMode" /> 1661 <attr name="screenOrientation" /> 1662 <attr name="configChanges" /> 1663 <attr name="permission" /> 1664 <attr name="multiprocess" /> 1665 <attr name="process" /> 1666 <attr name="taskAffinity" /> 1667 <attr name="allowTaskReparenting" /> 1668 <attr name="finishOnTaskLaunch" /> 1669 <attr name="finishOnCloseSystemDialogs" /> 1670 <attr name="clearTaskOnLaunch" /> 1671 <attr name="noHistory" /> 1672 <attr name="alwaysRetainTaskState" /> 1673 <attr name="stateNotNeeded" /> 1674 <attr name="excludeFromRecents" /> 1675 <attr name="showOnLockScreen" /> 1676 <!-- Specify whether the activity is enabled or not (that is, can be instantiated by the system). 1677 It can also be specified for an application as a whole, in which case a value of "false" 1678 will override any component specific values (a value of "true" will not override the 1679 component specific values). --> 1680 <attr name="enabled" /> 1681 <attr name="exported" /> 1682 <!-- Specify the default soft-input mode for the main window of 1683 this activity. A value besides "unspecified" here overrides 1684 any value in the theme. --> 1685 <attr name="windowSoftInputMode" /> 1686 <attr name="immersive" /> 1687 <attr name="hardwareAccelerated" /> 1688 <attr name="uiOptions" /> 1689 <attr name="parentActivityName" /> 1690 <attr name="singleUser" /> 1691 <!-- @hide This broacast receiver will only receive broadcasts for the 1692 primary user. Can only be used with receivers. --> 1693 <attr name="primaryUserOnly" format="boolean" /> 1694 <attr name="persistableMode" /> 1695 <attr name="allowEmbedded" /> 1696 <attr name="documentLaunchMode" /> 1697 <attr name="maxRecents" /> 1698 <attr name="autoRemoveFromRecents" /> 1699 <attr name="relinquishTaskIdentity" /> 1700 <attr name="resumeWhilePausing" /> 1701 </declare-styleable> 1702 1703 <!-- The <code>activity-alias</code> tag declares a new 1704 name for an existing {@link #AndroidManifestActivity activity} 1705 tag. 1706 1707 <p>Zero or more {@link #AndroidManifestIntentFilter intent-filter} 1708 tags can be included inside of an activity-alias, to specify the Intents 1709 that it can handle. If none are specified, the activity can 1710 only be started through direct specification of its class name. 1711 The activity-alias tag appears as a child tag of the 1712 {@link #AndroidManifestApplication application} tag. --> 1713 <declare-styleable name="AndroidManifestActivityAlias" parent="AndroidManifestApplication"> 1714 <!-- Required name of the class implementing the activity, deriving from 1715 {@link android.app.Activity}. This is a fully 1716 qualified class name (for example, com.mycompany.myapp.MyActivity); as a 1717 short-hand if the first character of the class 1718 is a period then it is appended to your package name. --> 1719 <attr name="name" /> 1720 <!-- The name of the activity this alias should launch. The activity 1721 must be in the same manifest as the alias, and have been defined 1722 in that manifest before the alias here. This must use a Java-style 1723 naming convention to ensure the name is unique, for example 1724 "com.mycompany.MyName". --> 1725 <attr name="targetActivity" format="string" /> 1726 <attr name="label" /> 1727 <attr name="description" /> 1728 <attr name="icon" /> 1729 <attr name="banner" /> 1730 <attr name="logo" /> 1731 <attr name="permission" /> 1732 <!-- Specify whether the activity-alias is enabled or not (that is, can be instantiated by the system). 1733 It can also be specified for an application as a whole, in which case a value of "false" 1734 will override any component specific values (a value of "true" will not override the 1735 component specific values). --> 1736 <attr name="enabled" /> 1737 <attr name="exported" /> 1738 <attr name="parentActivityName" /> 1739 </declare-styleable> 1740 1741 <!-- The <code>meta-data</code> tag is used to attach additional 1742 arbitrary data to an application component. The data can later 1743 be retrieved programmatically from the 1744 {@link android.content.pm.ComponentInfo#metaData 1745 ComponentInfo.metaData} field. There is no meaning given to this 1746 data by the system. You may supply the data through either the 1747 <code>value</code> or <code>resource</code> attribute; if both 1748 are given, then <code>resource</code> will be used. 1749 1750 <p>It is highly recommended that you avoid supplying related data as 1751 multiple separate meta-data entries. Instead, if you have complex 1752 data to associate with a component, then use the <code>resource</code> 1753 attribute to assign an XML resource that the client can parse to 1754 retrieve the complete data. --> 1755 <declare-styleable name="AndroidManifestMetaData" 1756 parent="AndroidManifestApplication 1757 AndroidManifestActivity 1758 AndroidManifestReceiver 1759 AndroidManifestProvider 1760 AndroidManifestService 1761 AndroidManifestPermission 1762 AndroidManifestPermissionGroup 1763 AndroidManifestInstrumentation"> 1764 <attr name="name" /> 1765 <!-- Concrete value to assign to this piece of named meta-data. 1766 The data can later be retrieved from the meta data Bundle 1767 through {@link android.os.Bundle#getString Bundle.getString}, 1768 {@link android.os.Bundle#getInt Bundle.getInt}, 1769 {@link android.os.Bundle#getBoolean Bundle.getBoolean}, 1770 or {@link android.os.Bundle#getFloat Bundle.getFloat} depending 1771 on the type used here. --> 1772 <attr name="value" format="string|integer|color|float|boolean" /> 1773 <!-- Resource identifier to assign to this piece of named meta-data. 1774 The resource identifier can later be retrieved from the meta data 1775 Bundle through {@link android.os.Bundle#getInt Bundle.getInt}. --> 1776 <attr name="resource" format="reference" /> 1777 </declare-styleable> 1778 1779 <!-- The <code>intent-filter</code> tag is used to construct an 1780 {@link android.content.IntentFilter} object that will be used 1781 to determine which component can handle a particular 1782 {@link android.content.Intent} that has been given to the system. 1783 It can be used as a child of the 1784 {@link #AndroidManifestActivity activity}, 1785 {@link #AndroidManifestReceiver receiver} and 1786 {@link #AndroidManifestService service} 1787 tags. 1788 1789 <p> Zero or more {@link #AndroidManifestAction action}, 1790 {@link #AndroidManifestCategory category}, and/or 1791 {@link #AndroidManifestData data} tags should be 1792 included inside to describe the contents of the filter. 1793 1794 <p> The optional label and icon attributes here are used with 1795 an activity to supply an alternative description of that activity 1796 when it is being started through an Intent matching this filter. --> 1797 <declare-styleable name="AndroidManifestIntentFilter" 1798 parent="AndroidManifestActivity AndroidManifestReceiver AndroidManifestService"> 1799 <attr name="label" /> 1800 <attr name="icon" /> 1801 <attr name="banner" /> 1802 <attr name="logo" /> 1803 <attr name="priority" /> 1804 </declare-styleable> 1805 1806 <!-- Attributes that can be supplied in an AndroidManifest.xml 1807 <code>action</code> tag, a child of the 1808 {@link #AndroidManifestIntentFilter intent-filter} tag. 1809 See {@link android.content.IntentFilter#addAction} for 1810 more information. --> 1811 <declare-styleable name="AndroidManifestAction" parent="AndroidManifestIntentFilter"> 1812 <!-- The name of an action that is handled, using the Java-style 1813 naming convention. For example, to support 1814 {@link android.content.Intent#ACTION_VIEW Intent.ACTION_VIEW} 1815 you would put <code>android.intent.action.VIEW</code> here. 1816 Custom actions should generally use a prefix matching the 1817 package name. --> 1818 <attr name="name" /> 1819 </declare-styleable> 1820 1821 <!-- Attributes that can be supplied in an AndroidManifest.xml 1822 <code>data</code> tag, a child of the 1823 {@link #AndroidManifestIntentFilter intent-filter} tag, describing 1824 the types of data that match. This tag can be specified multiple 1825 times to supply multiple data options, as described in the 1826 {@link android.content.IntentFilter} class. Note that all such 1827 tags are adding options to the same IntentFilter so that, for example, 1828 <code><data android:scheme="myscheme" android:host="me.com" /></code> 1829 is equivalent to <code><data android:scheme="myscheme" /> 1830 <data android:host="me.com" /></code>. --> 1831 <declare-styleable name="AndroidManifestData" parent="AndroidManifestIntentFilter"> 1832 <!-- Specify a MIME type that is handled, as per 1833 {@link android.content.IntentFilter#addDataType 1834 IntentFilter.addDataType()}. 1835 <p><em>Note: MIME type matching in the Android framework is 1836 case-sensitive, unlike formal RFC MIME types. As a result, 1837 MIME types here should always use lower case letters.</em></p> --> 1838 <attr name="mimeType" format="string" /> 1839 <!-- Specify a URI scheme that is handled, as per 1840 {@link android.content.IntentFilter#addDataScheme 1841 IntentFilter.addDataScheme()}. 1842 <p><em>Note: scheme matching in the Android framework is 1843 case-sensitive, unlike the formal RFC. As a result, 1844 schemes here should always use lower case letters.</em></p> --> 1845 <attr name="scheme" format="string" /> 1846 <!-- Specify a URI scheme specific part that must exactly match, as per 1847 {@link android.content.IntentFilter#addDataSchemeSpecificPart 1848 IntentFilter.addDataSchemeSpecificPart()} with 1849 {@link android.os.PatternMatcher#PATTERN_LITERAL}. --> 1850 <attr name="ssp" format="string" /> 1851 <!-- Specify a URI scheme specific part that must be a prefix to match, as per 1852 {@link android.content.IntentFilter#addDataSchemeSpecificPart 1853 IntentFilter.addDataSchemeSpecificPart()} with 1854 {@link android.os.PatternMatcher#PATTERN_PREFIX}. --> 1855 <attr name="sspPrefix" format="string" /> 1856 <!-- Specify a URI scheme specific part that matches a simple pattern, as per 1857 {@link android.content.IntentFilter#addDataSchemeSpecificPart 1858 IntentFilter.addDataSchemeSpecificPart()} with 1859 {@link android.os.PatternMatcher#PATTERN_SIMPLE_GLOB}. 1860 Note that because '\' is used as an escape character when 1861 reading the string from XML (before it is parsed as a pattern), 1862 you will need to double-escape: for example a literal "*" would 1863 be written as "\\*" and a literal "\" would be written as 1864 "\\\\". This is basically the same as what you would need to 1865 write if constructing the string in Java code. --> 1866 <attr name="sspPattern" format="string" /> 1867 <!-- Specify a URI authority host that is handled, as per 1868 {@link android.content.IntentFilter#addDataAuthority 1869 IntentFilter.addDataAuthority()}. 1870 <p><em>Note: host name matching in the Android framework is 1871 case-sensitive, unlike the formal RFC. As a result, 1872 host names here should always use lower case letters.</em></p> --> 1873 <attr name="host" format="string" /> 1874 <!-- Specify a URI authority port that is handled, as per 1875 {@link android.content.IntentFilter#addDataAuthority 1876 IntentFilter.addDataAuthority()}. If a host is supplied 1877 but not a port, any port is matched. --> 1878 <attr name="port" format="string" /> 1879 <!-- Specify a URI path that must exactly match, as per 1880 {@link android.content.IntentFilter#addDataPath 1881 IntentFilter.addDataPath()} with 1882 {@link android.os.PatternMatcher#PATTERN_LITERAL}. --> 1883 <attr name="path" /> 1884 <!-- Specify a URI path that must be a prefix to match, as per 1885 {@link android.content.IntentFilter#addDataPath 1886 IntentFilter.addDataPath()} with 1887 {@link android.os.PatternMatcher#PATTERN_PREFIX}. --> 1888 <attr name="pathPrefix" /> 1889 <!-- Specify a URI path that matches a simple pattern, as per 1890 {@link android.content.IntentFilter#addDataPath 1891 IntentFilter.addDataPath()} with 1892 {@link android.os.PatternMatcher#PATTERN_SIMPLE_GLOB}. 1893 Note that because '\' is used as an escape character when 1894 reading the string from XML (before it is parsed as a pattern), 1895 you will need to double-escape: for example a literal "*" would 1896 be written as "\\*" and a literal "\" would be written as 1897 "\\\\". This is basically the same as what you would need to 1898 write if constructing the string in Java code. --> 1899 <attr name="pathPattern" /> 1900 </declare-styleable> 1901 1902 <!-- Attributes that can be supplied in an AndroidManifest.xml 1903 <code>category</code> tag, a child of the 1904 {@link #AndroidManifestIntentFilter intent-filter} tag. 1905 See {@link android.content.IntentFilter#addCategory} for 1906 more information. --> 1907 <declare-styleable name="AndroidManifestCategory" parent="AndroidManifestIntentFilter"> 1908 <!-- The name of category that is handled, using the Java-style 1909 naming convention. For example, to support 1910 {@link android.content.Intent#CATEGORY_LAUNCHER Intent.CATEGORY_LAUNCHER} 1911 you would put <code>android.intent.category.LAUNCHER</code> here. 1912 Custom actions should generally use a prefix matching the 1913 package name. --> 1914 <attr name="name" /> 1915 </declare-styleable> 1916 1917 <!-- Attributes that can be supplied in an AndroidManifest.xml 1918 <code>instrumentation</code> tag, a child of the root 1919 {@link #AndroidManifest manifest} tag. --> 1920 <declare-styleable name="AndroidManifestInstrumentation" parent="AndroidManifest"> 1921 <!-- Required name of the class implementing the instrumentation, deriving from 1922 {@link android.app.Instrumentation}. This is a fully 1923 qualified class name (for example, com.mycompany.myapp.MyActivity); as a 1924 short-hand if the first character of the class 1925 is a period then it is appended to your package name. --> 1926 <attr name="name" /> 1927 <attr name="targetPackage" /> 1928 <attr name="label" /> 1929 <attr name="icon" /> 1930 <attr name="banner" /> 1931 <attr name="logo" /> 1932 <attr name="handleProfiling" /> 1933 <attr name="functionalTest" /> 1934 </declare-styleable> 1935 1936 <!-- Attributes that can be supplied in an AndroidManifest.xml 1937 <code>screen</code> tag, a child of <code>compatible-screens</code>, 1938 which is itself a child of the root 1939 {@link #AndroidManifest manifest} tag. --> 1940 <declare-styleable name="AndroidManifestCompatibleScreensScreen" 1941 parent="AndroidManifest.AndroidManifestCompatibleScreens"> 1942 <!-- Specifies a compatible screen size, as per the device 1943 configuration screen size bins. --> 1944 <attr name="screenSize"> 1945 <!-- A small screen configuration, at least 240x320dp. --> 1946 <enum name="small" value="200" /> 1947 <!-- A normal screen configuration, at least 320x480dp. --> 1948 <enum name="normal" value="300" /> 1949 <!-- A large screen configuration, at least 400x530dp. --> 1950 <enum name="large" value="400" /> 1951 <!-- An extra large screen configuration, at least 600x800dp. --> 1952 <enum name="xlarge" value="500" /> 1953 </attr> 1954 <!-- Specifies a compatible screen density, as per the device 1955 configuration screen density bins. --> 1956 <attr name="screenDensity" format="integer"> 1957 <!-- A low density screen, approximately 120dpi. --> 1958 <enum name="ldpi" value="120" /> 1959 <!-- A medium density screen, approximately 160dpi. --> 1960 <enum name="mdpi" value="160" /> 1961 <!-- A high density screen, approximately 240dpi. --> 1962 <enum name="hdpi" value="240" /> 1963 <!-- An extra high density screen, approximately 320dpi. --> 1964 <enum name="xhdpi" value="320" /> 1965 </attr> 1966 </declare-styleable> 1967 1968 <!-- The <code>input-type</code> tag is a child of the <code>supports-input</code> tag, which 1969 is itself a child of the root {@link #AndroidManifest manifest} tag. Each 1970 <code>input-type</code> tag specifices the name of a specific input device type. When 1971 grouped with the other elements of the parent <code>supports-input</code> tag it defines 1972 a collection of input devices, which when all used together, are considered a supported 1973 input mechanism for the application. There may be multiple <code>supports-input</code> 1974 tags defined, each containing a different combination of input device types. --> 1975 <declare-styleable name="AndroidManifestSupportsInputInputType" 1976 parent="AndroidManifest.AndroidManifestSupportsInput"> 1977 <!-- Specifices the name of the input device type --> 1978 <attr name="name" /> 1979 </declare-styleable> 1980 1981 <!-- The attribute that holds a Base64-encoded public key. --> 1982 <attr name="publicKey" format="string" /> 1983 1984 <!-- Attributes relating to a package verifier. --> 1985 <declare-styleable name="AndroidManifestPackageVerifier" parent="AndroidManifest"> 1986 <!-- Specifies the Java-style package name that defines this 1987 package verifier. --> 1988 <attr name="name" /> 1989 1990 <!-- The Base64 encoded public key of the package verifier's 1991 signature. --> 1992 <attr name="publicKey" /> 1993 </declare-styleable> 1994 1995 <!-- Attributes relating to resource overlay packages. --> 1996 <declare-styleable name="AndroidManifestResourceOverlay" parent="AndroidManifest"> 1997 <!-- Package name of base package whose resources will be overlaid. --> 1998 <attr name="targetPackage" /> 1999 2000 <!-- Load order of overlay package. --> 2001 <attr name="priority" /> 2002 2003 </declare-styleable> 2004 2005 <!-- Declaration of an {@link android.content.Intent} object in XML. May 2006 also include zero or more {@link #IntentCategory <category> and 2007 {@link #Extra <extra>} tags. --> 2008 <declare-styleable name="Intent"> 2009 <!-- The action name to assign to the Intent, as per 2010 {@link android.content.Intent#setAction Intent.setAction()}. --> 2011 <attr name="action" format="string" /> 2012 <!-- The data URI to assign to the Intent, as per 2013 {@link android.content.Intent#setData Intent.setData()}. 2014 <p><em>Note: scheme and host name matching in the Android framework is 2015 case-sensitive, unlike the formal RFC. As a result, 2016 URIs here should always be normalized to use lower case letters 2017 for these elements (as well as other proper Uri normalization).</em></p> --> 2018 <attr name="data" format="string" /> 2019 <!-- The MIME type name to assign to the Intent, as per 2020 {@link android.content.Intent#setType Intent.setType()}. 2021 <p><em>Note: MIME type matching in the Android framework is 2022 case-sensitive, unlike formal RFC MIME types. As a result, 2023 MIME types here should always use lower case letters.</em></p> --> 2024 <attr name="mimeType" /> 2025 <!-- The package part of the ComponentName to assign to the Intent, as per 2026 {@link android.content.Intent#setComponent Intent.setComponent()}. --> 2027 <attr name="targetPackage" /> 2028 <!-- The class part of the ComponentName to assign to the Intent, as per 2029 {@link android.content.Intent#setComponent Intent.setComponent()}. --> 2030 <attr name="targetClass" format="string" /> 2031 </declare-styleable> 2032 2033 <!-- A category to add to an Intent, as per 2034 {@link android.content.Intent#addCategory Intent.addCategory()}. --> 2035 <declare-styleable name="IntentCategory" parent="Intent"> 2036 <!-- Required name of the category. --> 2037 <attr name="name" /> 2038 </declare-styleable> 2039 2040 <!-- An extra data value to place into a an extra/name value pair held 2041 in a Bundle, as per {@link android.os.Bundle}. --> 2042 <declare-styleable name="Extra" parent="Intent"> 2043 <!-- Required name of the extra data. --> 2044 <attr name="name" /> 2045 <!-- Concrete value to put for this named extra data. --> 2046 <attr name="value" /> 2047 </declare-styleable> 2048 2049 <!-- Groups signing keys into a {@code KeySet} for easier reference in 2050 other APIs. However, currently no APIs use this. --> 2051 <attr name="keySet" /> 2052 <declare-styleable name="AndroidManifestPublicKey"> 2053 <attr name="name" /> 2054 <attr name="value" /> 2055 </declare-styleable> 2056 <declare-styleable name="AndroidManifestKeySet"> 2057 <attr name="name" /> 2058 </declare-styleable> 2059 2060 <!-- Associate declared KeySets with upgrading capability --> 2061 <declare-styleable name="AndroidManifestUpgradeKeySet" parent="AndroidManifest"> 2062 <attr name="name" /> 2063 </declare-styleable> 2064 2065</resources> 2066