application-element.jd revision 4c3a07ba052126f71a7a5348170e6382606edcb1
1page.title=<application>
2
3@jd:body
4
5<dl class="xml">
6<dt>syntax:</dt>
7<dd><pre class="stx">&lt;application android:<a href="#reparent">allowTaskReparenting</a>=["true" | "false"]
8             android:<a href="#allowbackup">allowBackup</a>=["true" | "false"]
9             android:<a href="#agent">backupAgent</a>="<i>string</i>"
10             android:<a href="#banner">banner</a>="<i>drawable resource</i>"
11             android:<a href="#debug">debuggable</a>=["true" | "false"]
12             android:<a href="#desc">description</a>="<i>string resource</i>"
13             android:<a href="#enabled">enabled</a>=["true" | "false"]
14             android:<a href="#code">hasCode</a>=["true" | "false"]
15             android:<a href="#hwaccel">hardwareAccelerated</a>=["true" | "false"]
16             android:<a href="#icon">icon</a>="<i>drawable resource</i>"
17             android:<a href="#isGame">isGame</a>=["true" | "false"]
18             android:<a href="#killrst">killAfterRestore</a>=["true" | "false"]
19             android:<a href="#largeHeap">largeHeap</a>=["true" | "false"]
20             android:<a href="#label">label</a>="<i>string resource</i>"
21             android:<a href="#logo">logo</a>="<i>drawable resource</i>"
22             android:<a href="#space">manageSpaceActivity</a>="<i>string</i>"
23             android:<a href="#nm">name</a>="<i>string</i>"
24             android:<a href="#prmsn">permission</a>="<i>string</i>"
25             android:<a href="#persistent">persistent</a>=["true" | "false"]
26             android:<a href="#proc">process</a>="<i>string</i>"
27             android:<a href="#restoreany">restoreAnyVersion</a>=["true" | "false"]
28             android:<a href="#requiredAccountType">requiredAccountType</a>="<i>string</i>"
29             android:<a href="#restrictedAccountType">restrictedAccountType</a>="<i>string</i>"
30             android:<a href="#supportsrtl">supportsRtl</a>=["true" | "false"]
31             android:<a href="#aff">taskAffinity</a>="<i>string</i>"
32             android:<a href="#testOnly">testOnly</a>=["true" | "false"]
33             android:<a href="#theme">theme</a>="<i>resource or theme</i>"
34             android:<a href="#uioptions">uiOptions</a>=["none" | "splitActionBarWhenNarrow"]
35             android:<a href="#vmSafeMode">vmSafeMode</a>=["true" | "false"] &gt;
36    . . .
37&lt;/application&gt;</pre></dd>
38
39<dt>contained in:</dt>
40<dd><code><a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;manifest&gt;</a></code></dd>
41
42<dt>can contain:</dt>
43<dd><code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>
44<br/><code><a href="{@docRoot}guide/topics/manifest/activity-alias-element.html">&lt;activity-alias&gt;</a></code>
45<br/><code><a href="{@docRoot}guide/topics/manifest/meta-data-element.html">&lt;meta-data&gt;</a></code>
46<br/><code><a href="{@docRoot}guide/topics/manifest/service-element.html">&lt;service&gt;</a></code>
47<br/><code><a href="{@docRoot}guide/topics/manifest/receiver-element.html">&lt;receiver&gt;</a></code>
48<br/><code><a href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;provider&gt;</a></code>
49<br/><code><a href="{@docRoot}guide/topics/manifest/uses-library-element.html">&lt;uses-library&gt;</a></code></dd>
50
51<dt>description:</dt>
52<dd itemprop="description">The declaration of the application.  This element contains subelements
53that declare each of the application's components and has attributes
54that can affect all the components.  Many of these attributes (such as
55{@code icon}, {@code label}, {@code permission}, {@code process},
56{@code taskAffinity}, and {@code allowTaskReparenting}) set default values
57for corresponding attributes of the component elements.  Others (such as
58{@code debuggable}, {@code enabled}, {@code description}, and
59{@code allowClearUserData})  set values for the application as a whole and
60cannot be overridden by the components.</dd>
61
62
63
64
65
66<dt>attributes</dt>
67<dd><dl class="attr">
68
69<dt><a name="reparent"></a>{@code android:allowTaskReparenting}</dt>
70<dd>Whether or not activities that the application defines can move from
71the task that started them to the task they have an affinity for when that task
72is next brought to the front &mdash; {@code "true"} if they can move, and
73{@code "false"} if they must remain with the task where they started.
74The default value is {@code "false"}.
75
76<p>
77The
78<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>
79element has its own
80<code><a href="{@docRoot}guide/topics/manifest/activity-element.html#reparent">allowTaskReparenting</a></code>
81attribute that can override the value set here.  See that attribute for more
82information.
83</p></dd>
84
85
86<dt><a name="allowbackup"></a>{@code android:allowBackup}</dt>
87<dd>Whether to allow the application to participate in the backup
88and restore infrastructure. If this attribute is set to false, no backup
89or restore of the application will ever be performed, even by a full-system
90backup that would otherwise cause all application data to be saved via adb.
91The default value of this attribute is true.</dd>
92
93
94<dt><a name="agent"></a>{@code android:backupAgent}</dt>
95<dd>The name of the class that implement's the application's backup agent,
96a subclass of {@link android.app.backup.BackupAgent}.  The attribute value should be
97a fully qualified  class name (such as, {@code "com.example.project.MyBackupAgent"}).
98However, as a shorthand, if the first character of the name is a period
99(for example, {@code ".MyBackupAgent"}), it is appended to the
100package name specified in the
101<code><a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;manifest&gt;</a></code>
102element.
103
104<p>
105There is no default.  The name must be specified.
106</p></dd>
107
108<dt><a name="banner"></a>{@code android:banner}</dt>
109<dd>A <a href="{@docRoot}guide/topics/resources/drawable-resource.html">drawable resource</a>
110providing an extended graphical banner for its associated item. Use with the
111{@code &lt;application&gt;} tag to supply a default banner for all application activities, or with the
112<a href="{@docRoot}guide/topics/manifest/activity-element.html"><code>&lt;activity&gt;</code></a>
113tag to supply a banner for a specific activity.
114
115<p>The system uses the banner to represent an app in
116the Android TV home screen. Since the banner is displayed only in the home screen, it
117should only be specified by applications with an activity that handles the
118{@link android.content.Intent#CATEGORY_LEANBACK_LAUNCHER} intent.</p>
119
120<p>This attribute must be set as a reference to a drawable resource containing
121the image (for example {@code "&#64;drawable/banner"}). There is no default banner.
122</p>
123
124<p>
125See <a href="{@docRoot}design/tv/patterns.html#banner">
126Banners</a> in the UI Patterns for TV design guide, and <a href="{@docRoot}training/tv/start/start.html#banner">
127Provide a home screen banner</a> in Get Started with TV Apps for more information.
128</p></dd>
129
130<dt><a name="debug"></a>{@code android:debuggable}</dt>
131<dd>Whether or not the application can be debugged, even when running
132on a device in user mode &mdash; {@code "true"} if it can be, and {@code "false"}
133if not.  The default value is {@code "false"}.</dd>
134
135<dt><a name="desc"></a>{@code android:description}</dt>
136<dd>User-readable text about the application, longer and more descriptive than the application label.  The value must be set as a reference to a string resource.  Unlike the label, it cannot be a raw string.  There is no default value.</dd>
137
138<dt><a name="enabled"></a>{@code android:enabled}</dt>
139<dd>Whether or not the Android system can instantiate components of
140the application &mdash; {@code "true"} if it can, and {@code "false"}
141if not.  If the value is {@code "true"}, each component's
142{@code enabled} attribute determines whether that component is enabled
143or not.  If the value is {@code "false"}, it overrides the
144component-specific values; all components are disabled.
145
146<p>
147The default value is {@code "true"}.
148</p></dd>
149
150<dt><a name="code"></a>{@code android:hasCode}</dt>
151<dd>Whether or not the application contains any code &mdash; {@code "true"}
152if it does, and {@code "false"} if not.  When the value is {@code "false"},
153the system does not try to load any application code when launching components.
154The default value is {@code "true"}.
155
156<p>
157An application would not have any code of its own only if it's using nothing
158but built-in component classes, such as an activity that uses the {@link
159android.app.AliasActivity} class, a rare occurrence.</p>
160</dd>
161
162<dt><a name="hwaccel"></a>{@code android:hardwareAccelerated}</dt>
163<dd>Whether or not hardware-accelerated rendering should be enabled for all
164activities and views in this application &mdash; {@code "true"} if it
165should be enabled, and {@code "false"} if not. The default value is {@code "true"} if you've set
166either <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#min">{@code minSdkVersion}</a>
167or <a
168href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#target">{@code targetSdkVersion}</a>
169to {@code "14"} or higher; otherwise, it's {@code "false"}.
170
171<p>Starting from Android 3.0 (API level 11), a hardware-accelerated OpenGL renderer is
172available to applications, to improve performance for many common 2D graphics
173operations. When the hardware-accelerated renderer is enabled, most operations
174in Canvas, Paint, Xfermode, ColorFilter, Shader, and Camera are accelerated.
175This results in smoother animations, smoother scrolling, and improved
176responsiveness overall, even for applications that do not explicitly make use
177the framework's OpenGL libraries. </p>
178
179<p>Note that not all of the OpenGL 2D operations are accelerated. If you enable
180the hardware-accelerated renderer, test your application to ensure that it can
181make use of the renderer without errors.</p>
182
183<p>For more information, read the <a href="{@docRoot}guide/topics/graphics/hardware-accel.html"
184>Hardware Acceleration</a> guide.</p>
185</dd>
186
187<dt><a name="icon"></a>{@code android:icon}</dt>
188<dd>An icon for the application as whole, and the default icon for
189each of the application's components.  See the individual
190{@code icon} attributes for
191<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>,
192<code><a href="{@docRoot}guide/topics/manifest/activity-alias-element.html">&lt;activity-alias&gt;</a></code>,
193<code><a href="{@docRoot}guide/topics/manifest/service-element.html">&lt;service&gt;</a></code>,
194<code><a href="{@docRoot}guide/topics/manifest/receiver-element.html">&lt;receiver&gt;</a></code>, and
195<code><a href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;provider&gt;</a></code> elements.
196
197<p>
198This attribute must be set as a reference to a drawable resource containing
199the image (for example {@code "&#64;drawable/icon"}). There is no default icon.
200</p></dd>
201
202<dt><a name="isGame"></a>{@code android:isGame}</dt>
203<dd>Whether or not the application is a game. The system may group together applications classifed
204as games or display them separately from other applications.
205
206<p>The default is {@code false}.</p></dd>
207
208<dt><a name="killrst"></a>{@code android:killAfterRestore}</dt>
209<dd>Whether the application in question should be terminated after its
210settings have been restored during a full-system restore operation.
211Single-package restore operations will never cause the application to
212be shut down.  Full-system restore operations typically only occur once,
213when the phone is first set up.  Third-party applications will not normally
214need to use this attribute.
215
216<p>The default is {@code true}, which means that after the application
217has finished processing its data during a full-system restore, it will be
218terminated.
219</p></dd>
220
221<dt><a name="largeHeap"></a>{@code android:largeHeap}</dt>
222<dd>Whether your application's processes should be created with a large Dalvik heap. This applies to
223all processes created for the application. It only applies to the first application loaded into a
224process; if you're using a shared user ID to allow multiple applications to use a process, they all
225must use this option consistently or they will have unpredictable results.
226<p>Most apps should not need this and should instead focus on reducing their overall memory usage for
227improved performance. Enabling this also does not guarantee a fixed increase in available memory,
228because some devices are constrained by their total available memory.</p>
229<p>To query the available memory size at runtime, use the methods {@link
230  android.app.ActivityManager#getMemoryClass()} or {@link
231  android.app.ActivityManager#getLargeMemoryClass()}.</p>
232</dd>
233
234<dt><a name="label"></a>{@code android:label}</dt>
235<dd>A user-readable label for the application as a whole, and a default
236label for each of the application's components.  See the individual
237{@code label} attributes for
238<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>,
239<code><a href="{@docRoot}guide/topics/manifest/activity-alias-element.html">&lt;activity-alias&gt;</a></code>,
240<code><a href="{@docRoot}guide/topics/manifest/service-element.html">&lt;service&gt;</a></code>,
241<code><a href="{@docRoot}guide/topics/manifest/receiver-element.html">&lt;receiver&gt;</a></code>, and
242<code><a href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;provider&gt;</a></code> elements.
243
244<p>
245The label should be set as a reference to a string resource, so that
246it can be localized like other strings in the user interface.
247However, as a convenience while you're developing the application,
248it can also be set as a raw string.
249</p></dd>
250
251<dt><a name="logo"></a>{@code android:logo}</dt>
252<dd>A logo for the application as whole, and the default logo for activities.
253<p>This attribute must be set as a reference to a drawable resource containing
254the image (for example {@code "&#64;drawable/logo"}).  There is no default logo.</p></dd>
255
256<dt><a name="space"></a>{@code android:manageSpaceActivity}</dt>
257<dd>The fully qualified name of an Activity subclass that the system
258can launch to let users manage the memory occupied by the application
259on the device.  The activity should also be declared with an
260<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code> element.
261</dd>
262
263<dt><a name="nm"></a>{@code android:name}</dt>
264<dd>The fully qualified name of an {@link android.app.Application}
265subclass implemented for the application.  When the application process
266is started, this class is instantiated before any of the application's
267components.
268
269<p>
270The subclass is optional; most applications won't need one.
271In the absence of a subclass, Android uses an instance of the base
272Application class.
273</p></dd>
274
275<dt><a name="prmsn"></a>{@code android:permission}</dt>
276<dd>The name of a permission that clients must have in order to interact
277with the application.  This attribute is a convenient way to set a
278permission that applies to all of the application's components.  It can
279be overwritten by setting the {@code permission} attributes of individual
280components.
281
282<p>
283For more information on permissions, see the
284<a href="{@docRoot}guide/topics/manifest/manifest-intro.html#sectperm">Permissions</a>
285section in the introduction and another document,
286<a href="{@docRoot}guide/topics/security/security.html">Security and
287Permissions</a>.
288</p></dd>
289
290<dt><a name="persistent"></a>{@code android:persistent}</dt>
291<dd>Whether or not the application should remain running at all times &mdash;
292{@code "true"} if it should, and {@code "false"} if not.  The default value
293is {@code "false"}.  Applications should not normally set this flag;
294persistence mode is intended only for certain system applications.</dd>
295
296<dt><a name="proc"></a>{@code android:process}</dt>
297<dd>The name of a process where all components of the application should run.
298Each component can override this default by setting its own {@code process}
299attribute.
300
301<p>
302By default, Android creates a process for an application when the first
303of its components needs to run.  All components then run in that process.
304The name of the default process matches the package name set by the
305<code><a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;manifest&gt;</a></code> element.
306</p>
307
308<p>By setting this attribute to a process name that's shared with another
309application, you can arrange for components of both applications to run in
310the same process &mdash; but only if the two applications also share a
311user ID and be signed with the same certificate.
312</p>
313
314<p>
315If the name assigned to this attribute begins with a colon (':'), a new
316process, private to the application, is created when it's needed.
317If the process name begins with a lowercase character, a global process
318of that name is created.  A global process can be shared with other
319applications, reducing resource usage.
320</p></dd>
321
322<dt><a name="restoreany"></a>{@code android:restoreAnyVersion}</dt>
323<dd>Indicates that the application is prepared to attempt a restore of any
324backed-up data set, even if the backup was stored by a newer version
325of the application than is currently installed on the device.  Setting
326this attribute to {@code true} will permit the Backup Manager to
327attempt restore even when a version mismatch suggests that the data are
328incompatible.  <em>Use with caution!</em>
329
330<p>The default value of this attribute is {@code false}.
331</p></dd>
332
333
334
335<dt><a name="requiredAccountType"></a>{@code android:requiredAccountType}</dt>
336<dd>Specifies the account type required by the application in order to function.
337If your app requires an {@link android.accounts.Account}, the value for this attribute must
338correspond to the account authenticator
339type used by your app (as defined by {@link android.accounts.AuthenticatorDescription}),
340such as "com.google".
341
342<p>The default value is null and indicates that the application
343can work <em>without</em> any accounts.
344
345<p>Because restricted profiles currently
346cannot add accounts, specifying this attribute <strong>makes your app
347unavailable from a restricted profile</strong> unless you also declare
348<a href="#restrictedAccountType">{@code android:restrictedAccountType}</a> with
349the same value.</p>
350
351<p class="caution"><strong>Caution:</strong>
352If the account data may reveal personally identifiable information, it's important
353that you declare this attribute and leave <a href="#restrictedAccountType">{@code android:restrictedAccountType}</a> null, so that restricted profiles cannot use
354your app to access personal information that belongs to the owner user.</p>
355
356<p>This attribute was added in API level 18.</p>
357</dd>
358
359
360<dt><a name="restrictedAccountType"></a>{@code android:restrictedAccountType}</dt>
361<dd>Specifies the account type required by this application and indicates that restricted profiles
362are allowed to access such accounts that belong to the owner user. If your app requires an
363{@link android.accounts.Account} and restricted profiles <strong>are allowed to
364access</strong> the primary user's accounts, the value for this attribute must
365correspond to the account authenticator type used by your app (as
366defined by {@link android.accounts.AuthenticatorDescription}), such as "com.google".
367
368<p>The default value is null and indicates that the application can work <em>without</em> any
369accounts.
370
371<p class="caution"><strong>Caution:</strong>
372Specifying this attribute allows restricted profiles to use your
373app with accounts that belong to the owner user, which may reveal personally identifiable
374information. If the account may reveal personal details, you <strong>should not</strong>
375use this attribute and you should instead declare the <a
376href="#requiredAccountType">{@code android:requiredAccountType}</a> attribute
377to make your app unavailable to restricted profiles.</p>
378
379<p>This attribute was added in API level 18.</p>
380</dd>
381
382
383
384<dt><a name="supportsrtl"></a>{@code android:supportsRtl}</dt>
385<dd>Declares whether your application is willing to support right-to-left (RTL) layouts.
386<p>If set to {@code true} and <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#target"
387>{@code targetSdkVersion}</a> is set to 17 or higher, various RTL APIs will be
388activated and used by the system so your app can display RTL layouts.
389If set to {@code false} or if <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#target"
390>{@code targetSdkVersion}</a> is set to 16 or lower, the RTL APIs will be ignored
391or will have no effect and your app will behave the same regardless of the layout
392direction associated to the user's Locale choice (your layouts will always be left-to-right).
393
394<p>The default value of this attribute is {@code false}.</p>
395
396<p>This attribute was added in API level 17.</p>
397</dd>
398
399<dt><a name="aff"></a>{@code android:taskAffinity}</dt>
400<dd>An affinity name that applies to all activities within the application,
401except for those that set a different affinity with their own
402<code><a href="{@docRoot}guide/topics/manifest/activity-element.html#aff">taskAffinity</a></code>
403attributes.  See that attribute for more information.
404
405<p>
406By default, all activities within an application share the same
407affinity.  The name of that affinity is the same as the package name
408set by the
409<code><a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;manifest&gt;</a></code> element.
410</p></dd>
411
412<dt><a name="testOnly"></a>{@code android:testOnly}</dt>
413<dd>Indicates whether this application is only for testing purposes. For example,
414it may expose functionality or data outside of itself that would cause a security
415hole, but is useful for testing. This kind of application can be installed
416only through adb.</dd>
417
418
419<dt><a name="theme"></a>{@code android:theme}</dt>
420<dd>A reference to a style resource defining a default theme for all
421activities in the application.  Individual activities can override
422the default by setting their own <code><a href="{@docRoot}guide/topics/manifest/activity-element.html#theme">theme</a></code>
423attributes. For more information, see the <a
424href="{@docRoot}guide/topics/ui/themes.html">Styles and Themes</a> developer guide.
425</dd>
426
427<!-- ##api level 14## -->
428<dt><a name="uioptions"></a>{@code android:uiOptions}</dt>
429<dd>Extra options for an activity's UI.
430  <p>Must be one of the following values.</p>
431
432  <table>
433    <tr><th>Value</th><th>Description</th></tr>
434    <tr><td>{@code "none"}</td><td>No extra UI options. This is the default.</td></tr>
435    <tr><td>{@code "splitActionBarWhenNarrow"}</td><td>Add a bar at
436the bottom of the screen to display action items in the {@link android.app.ActionBar}, when
437constrained for horizontal space (such as when in portrait mode on a handset). Instead of a small
438number of action items appearing in the action bar at the top of the screen, the action bar is
439split into the top navigation section and the bottom bar for action items. This ensures a reasonable
440amount of space is made available not only for the action items, but also for navigation and title
441elements at the top. Menu items are not split across the two bars; they always appear
442together.</td></tr>
443  </table>
444  <p>For more information about the action bar, see the <a
445href="{@docRoot}guide/topics/ui/actionbar.html">Action Bar</a> developer guide.</p>
446  <p>This attribute was added in API level 14.</p>
447</dd>
448
449<dt><a name="vmSafeMode"></a>{@code android:vmSafeMode}</dt>
450<dd>Indicates whether the app would like the virtual machine (VM) to operate
451in safe mode. The default value is {@code "false"}.
452</dd>
453
454
455
456
457</dl></dd>
458
459<!-- ##api level indication## -->
460<dt>introduced in:</dt>
461<dd>API Level 1</dd>
462
463<dt>see also:</dt>
464<dd><code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>
465<br/><code><a href="{@docRoot}guide/topics/manifest/service-element.html">&lt;service&gt;</a></code>
466<br/><code><a href="{@docRoot}guide/topics/manifest/receiver-element.html">&lt;receiver&gt;</a></code>
467<br/><code><a href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;provider&gt;</a></code></dd>
468
469</dl>
470