blob: f8e251ed73827fba00f89a3b8a81184efcdf2a1d [file] [log] [blame]
page.title=<application>
@jd:body
<dl class="xml">
<dt>syntax:</dt>
<dd><pre class="stx">&lt;application android:<a href="#reparent">allowTaskReparenting</a>=["true" | "false"]
android:<a href="#allowbackup">allowBackup</a>=["true" | "false"]
android:<a href="#agent">backupAgent</a>="<i>string</i>"
android:<a href="#banner">banner</a>="<i>drawable resource</i>"
android:<a href="#debug">debuggable</a>=["true" | "false"]
android:<a href="#desc">description</a>="<i>string resource</i>"
android:<a href="#enabled">enabled</a>=["true" | "false"]
android:<a href="#code">hasCode</a>=["true" | "false"]
android:<a href="#hwaccel">hardwareAccelerated</a>=["true" | "false"]
android:<a href="#icon">icon</a>="<i>drawable resource</i>"
android:<a href="#isGame">isGame</a>=["true" | "false"]
android:<a href="#killrst">killAfterRestore</a>=["true" | "false"]
android:<a href="#largeHeap">largeHeap</a>=["true" | "false"]
android:<a href="#label">label</a>="<i>string resource</i>"
android:<a href="#logo">logo</a>="<i>drawable resource</i>"
android:<a href="#space">manageSpaceActivity</a>="<i>string</i>"
android:<a href="#nm">name</a>="<i>string</i>"
android:<a href="#prmsn">permission</a>="<i>string</i>"
android:<a href="#persistent">persistent</a>=["true" | "false"]
android:<a href="#proc">process</a>="<i>string</i>"
android:<a href="#restoreany">restoreAnyVersion</a>=["true" | "false"]
android:<a href="#requiredAccountType">requiredAccountType</a>="<i>string</i>"
android:<a href="#resizeableActivity">resizeableActivity</a>=["true" | "false"]
android:<a href="#restrictedAccountType">restrictedAccountType</a>="<i>string</i>"
android:<a href="#supportsrtl">supportsRtl</a>=["true" | "false"]
android:<a href="#aff">taskAffinity</a>="<i>string</i>"
android:<a href="#testOnly">testOnly</a>=["true" | "false"]
android:<a href="#theme">theme</a>="<i>resource or theme</i>"
android:<a href="#uioptions">uiOptions</a>=["none" | "splitActionBarWhenNarrow"]
android:<a href="#usesCleartextTraffic">usesCleartextTraffic</a>=["true" | "false"]
android:<a href="#vmSafeMode">vmSafeMode</a>=["true" | "false"] &gt;
. . .
&lt;/application&gt;</pre></dd>
<dt>contained in:</dt>
<dd><code><a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;manifest&gt;</a></code></dd>
<dt>can contain:</dt>
<dd><code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>
<br/><code><a href="{@docRoot}guide/topics/manifest/activity-alias-element.html">&lt;activity-alias&gt;</a></code>
<br/><code><a href="{@docRoot}guide/topics/manifest/meta-data-element.html">&lt;meta-data&gt;</a></code>
<br/><code><a href="{@docRoot}guide/topics/manifest/service-element.html">&lt;service&gt;</a></code>
<br/><code><a href="{@docRoot}guide/topics/manifest/receiver-element.html">&lt;receiver&gt;</a></code>
<br/><code><a href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;provider&gt;</a></code>
<br/><code><a href="{@docRoot}guide/topics/manifest/uses-library-element.html">&lt;uses-library&gt;</a></code></dd>
<dt>description:</dt>
<dd itemprop="description">The declaration of the application. This element contains subelements
that declare each of the application's components and has attributes
that can affect all the components. Many of these attributes (such as
{@code icon}, {@code label}, {@code permission}, {@code process},
{@code taskAffinity}, and {@code allowTaskReparenting}) set default values
for corresponding attributes of the component elements. Others (such as
{@code debuggable}, {@code enabled}, {@code description}, and
{@code allowClearUserData}) set values for the application as a whole and
cannot be overridden by the components.</dd>
<dt>attributes</dt>
<dd><dl class="attr">
<dt><a name="reparent"></a>{@code android:allowTaskReparenting}</dt>
<dd>Whether or not activities that the application defines can move from
the task that started them to the task they have an affinity for when that task
is next brought to the front &mdash; {@code "true"} if they can move, and
{@code "false"} if they must remain with the task where they started.
The default value is {@code "false"}.
<p>
The
<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>
element has its own
<code><a href="{@docRoot}guide/topics/manifest/activity-element.html#reparent">allowTaskReparenting</a></code>
attribute that can override the value set here. See that attribute for more
information.
</p></dd>
<dt><a name="allowbackup"></a>{@code android:allowBackup}</dt>
<dd>Whether to allow the application to participate in the backup
and restore infrastructure. If this attribute is set to false, no backup
or restore of the application will ever be performed, even by a full-system
backup that would otherwise cause all application data to be saved via adb.
The default value of this attribute is true.</dd>
<dt><a name="agent"></a>{@code android:backupAgent}</dt>
<dd>The name of the class that implement's the application's backup agent,
a subclass of {@link android.app.backup.BackupAgent}. The attribute value should be
a fully qualified class name (such as, {@code "com.example.project.MyBackupAgent"}).
However, as a shorthand, if the first character of the name is a period
(for example, {@code ".MyBackupAgent"}), it is appended to the
package name specified in the
<code><a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;manifest&gt;</a></code>
element.
<p>
There is no default. The name must be specified.
</p></dd>
<dt><a name="banner"></a>{@code android:banner}</dt>
<dd>A <a href="{@docRoot}guide/topics/resources/drawable-resource.html">drawable resource</a>
providing an extended graphical banner for its associated item. Use with the
{@code <application>} tag to supply a default banner for all application activities, or with the
<a href="{@docRoot}guide/topics/manifest/activity-element.html"><code>&lt;activity&gt;</code></a>
tag to supply a banner for a specific activity.
<p>The system uses the banner to represent an app in
the Android TV home screen. Since the banner is displayed only in the home screen, it
should only be specified by applications with an activity that handles the
{@link android.content.Intent#CATEGORY_LEANBACK_LAUNCHER} intent.</p>
<p>This attribute must be set as a reference to a drawable resource containing
the image (for example <code>"@drawable/banner"</code>). There is no default banner.
</p>
<p>
See <a href="{@docRoot}design/tv/patterns.html#banner">
Banners</a> in the UI Patterns for TV design guide, and <a href="{@docRoot}training/tv/start/start.html#banner">
Provide a home screen banner</a> in Get Started with TV Apps for more information.
</p></dd>
<dt><a name="debug"></a>{@code android:debuggable}</dt>
<dd>Whether or not the application can be debugged, even when running
on a device in user mode &mdash; {@code "true"} if it can be, and {@code "false"}
if not. The default value is {@code "false"}.</dd>
<dt><a name="desc"></a>{@code android:description}</dt>
<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>
<dt><a name="enabled"></a>{@code android:enabled}</dt>
<dd>Whether or not the Android system can instantiate components of
the application &mdash; {@code "true"} if it can, and {@code "false"}
if not. If the value is {@code "true"}, each component's
{@code enabled} attribute determines whether that component is enabled
or not. If the value is {@code "false"}, it overrides the
component-specific values; all components are disabled.
<p>
The default value is {@code "true"}.
</p></dd>
<dt><a name="code"></a>{@code android:hasCode}</dt>
<dd>Whether or not the application contains any code &mdash; {@code "true"}
if it does, and {@code "false"} if not. When the value is {@code "false"},
the system does not try to load any application code when launching components.
The default value is {@code "true"}.
<p>
An application would not have any code of its own only if it's using nothing
but built-in component classes, such as an activity that uses the {@link
android.app.AliasActivity} class, a rare occurrence.</p>
</dd>
<dt><a name="hwaccel"></a>{@code android:hardwareAccelerated}</dt>
<dd>Whether or not hardware-accelerated rendering should be enabled for all
activities and views in this application &mdash; {@code "true"} if it
should be enabled, and {@code "false"} if not. The default value is {@code "true"} if you've set
either <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#min">{@code minSdkVersion}</a>
or <a
href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#target">{@code targetSdkVersion}</a>
to {@code "14"} or higher; otherwise, it's {@code "false"}.
<p>Starting from Android 3.0 (API level 11), a hardware-accelerated OpenGL renderer is
available to applications, to improve performance for many common 2D graphics
operations. When the hardware-accelerated renderer is enabled, most operations
in Canvas, Paint, Xfermode, ColorFilter, Shader, and Camera are accelerated.
This results in smoother animations, smoother scrolling, and improved
responsiveness overall, even for applications that do not explicitly make use
the framework's OpenGL libraries. </p>
<p>Note that not all of the OpenGL 2D operations are accelerated. If you enable
the hardware-accelerated renderer, test your application to ensure that it can
make use of the renderer without errors.</p>
<p>For more information, read the <a href="{@docRoot}guide/topics/graphics/hardware-accel.html"
>Hardware Acceleration</a> guide.</p>
</dd>
<dt><a name="icon"></a>{@code android:icon}</dt>
<dd>An icon for the application as whole, and the default icon for
each of the application's components. See the individual
{@code icon} attributes for
<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>,
<code><a href="{@docRoot}guide/topics/manifest/activity-alias-element.html">&lt;activity-alias&gt;</a></code>,
<code><a href="{@docRoot}guide/topics/manifest/service-element.html">&lt;service&gt;</a></code>,
<code><a href="{@docRoot}guide/topics/manifest/receiver-element.html">&lt;receiver&gt;</a></code>, and
<code><a href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;provider&gt;</a></code> elements.
<p>
This attribute must be set as a reference to a drawable resource containing
the image (for example <code>"@drawable/icon"</code>). There is no default icon.
</p></dd>
<dt><a name="isGame"></a>{@code android:isGame}</dt>
<dd>Whether or not the application is a game. The system may group together applications classifed
as games or display them separately from other applications.
<p>The default is {@code false}.</p></dd>
<dt><a name="killrst"></a>{@code android:killAfterRestore}</dt>
<dd>Whether the application in question should be terminated after its
settings have been restored during a full-system restore operation.
Single-package restore operations will never cause the application to
be shut down. Full-system restore operations typically only occur once,
when the phone is first set up. Third-party applications will not normally
need to use this attribute.
<p>The default is {@code true}, which means that after the application
has finished processing its data during a full-system restore, it will be
terminated.
</p></dd>
<dt><a name="largeHeap"></a>{@code android:largeHeap}</dt>
<dd>Whether your application's processes should be created with a large Dalvik heap. This applies to
all processes created for the application. It only applies to the first application loaded into a
process; if you're using a shared user ID to allow multiple applications to use a process, they all
must use this option consistently or they will have unpredictable results.
<p>Most apps should not need this and should instead focus on reducing their overall memory usage for
improved performance. Enabling this also does not guarantee a fixed increase in available memory,
because some devices are constrained by their total available memory.</p>
<p>To query the available memory size at runtime, use the methods {@link
android.app.ActivityManager#getMemoryClass()} or {@link
android.app.ActivityManager#getLargeMemoryClass()}.</p>
</dd>
<dt><a name="label"></a>{@code android:label}</dt>
<dd>A user-readable label for the application as a whole, and a default
label for each of the application's components. See the individual
{@code label} attributes for
<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>,
<code><a href="{@docRoot}guide/topics/manifest/activity-alias-element.html">&lt;activity-alias&gt;</a></code>,
<code><a href="{@docRoot}guide/topics/manifest/service-element.html">&lt;service&gt;</a></code>,
<code><a href="{@docRoot}guide/topics/manifest/receiver-element.html">&lt;receiver&gt;</a></code>, and
<code><a href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;provider&gt;</a></code> elements.
<p>
The label should be set as a reference to a string resource, so that
it can be localized like other strings in the user interface.
However, as a convenience while you're developing the application,
it can also be set as a raw string.
</p></dd>
<dt><a name="logo"></a>{@code android:logo}</dt>
<dd>A logo for the application as whole, and the default logo for activities.
<p>This attribute must be set as a reference to a drawable resource containing
the image (for example <code>"@drawable/logo"</code>). There is no default logo.</p></dd>
<dt><a name="space"></a>{@code android:manageSpaceActivity}</dt>
<dd>The fully qualified name of an Activity subclass that the system
can launch to let users manage the memory occupied by the application
on the device. The activity should also be declared with an
<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code> element.
</dd>
<dt><a name="nm"></a>{@code android:name}</dt>
<dd>The fully qualified name of an {@link android.app.Application}
subclass implemented for the application. When the application process
is started, this class is instantiated before any of the application's
components.
<p>
The subclass is optional; most applications won't need one.
In the absence of a subclass, Android uses an instance of the base
Application class.
</p></dd>
<dt><a name="prmsn"></a>{@code android:permission}</dt>
<dd>The name of a permission that clients must have in order to interact
with the application. This attribute is a convenient way to set a
permission that applies to all of the application's components. It can
be overwritten by setting the {@code permission} attributes of individual
components.
<p>
For more information on permissions, see the
<a href="{@docRoot}guide/topics/manifest/manifest-intro.html#sectperm">Permissions</a>
section in the introduction and another document,
<a href="{@docRoot}guide/topics/security/security.html">Security and
Permissions</a>.
</p></dd>
<dt><a name="persistent"></a>{@code android:persistent}</dt>
<dd>Whether or not the application should remain running at all times &mdash;
{@code "true"} if it should, and {@code "false"} if not. The default value
is {@code "false"}. Applications should not normally set this flag;
persistence mode is intended only for certain system applications.</dd>
<dt><a name="proc"></a>{@code android:process}</dt>
<dd>The name of a process where all components of the application should run.
Each component can override this default by setting its own {@code process}
attribute.
<p>
By default, Android creates a process for an application when the first
of its components needs to run. All components then run in that process.
The name of the default process matches the package name set by the
<code><a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;manifest&gt;</a></code> element.
</p>
<p>By setting this attribute to a process name that's shared with another
application, you can arrange for components of both applications to run in
the same process &mdash; but only if the two applications also share a
user ID and be signed with the same certificate.
</p>
<p>
If the name assigned to this attribute begins with a colon (':'), a new
process, private to the application, is created when it's needed.
If the process name begins with a lowercase character, a global process
of that name is created. A global process can be shared with other
applications, reducing resource usage.
</p></dd>
<dt><a name="restoreany"></a>{@code android:restoreAnyVersion}</dt>
<dd>Indicates that the application is prepared to attempt a restore of any
backed-up data set, even if the backup was stored by a newer version
of the application than is currently installed on the device. Setting
this attribute to {@code true} will permit the Backup Manager to
attempt restore even when a version mismatch suggests that the data are
incompatible. <em>Use with caution!</em>
<p>The default value of this attribute is {@code false}.
</p></dd>
<dt><a name="requiredAccountType"></a>{@code android:requiredAccountType}</dt>
<dd>Specifies the account type required by the application in order to function.
If your app requires an {@link android.accounts.Account}, the value for this attribute must
correspond to the account authenticator
type used by your app (as defined by {@link android.accounts.AuthenticatorDescription}),
such as "com.google".
<p>The default value is null and indicates that the application
can work <em>without</em> any accounts.
<p>Because restricted profiles currently
cannot add accounts, specifying this attribute <strong>makes your app
unavailable from a restricted profile</strong> unless you also declare
<a href="#restrictedAccountType">{@code android:restrictedAccountType}</a> with
the same value.</p>
<p class="caution"><strong>Caution:</strong>
If the account data may reveal personally identifiable information, it's important
that you declare this attribute and leave <a href="#restrictedAccountType">{@code android:restrictedAccountType}</a> null, so that restricted profiles cannot use
your app to access personal information that belongs to the owner user.</p>
<p>This attribute was added in API level 18.</p>
</dd>
<dt id="resizeableActivity"><code>resizeableActivity</code></dt>
<dd>
<p>
Specifies whether the app supports <a href=
"{@docRoot}guide/topics/ui/multi-window.html">multi-window display</a>. You
can set this attribute in either the <a href="activity-element">
<code>&lt;activity&gt;</code></a> or <code>&lt;application&gt;</code> element.
</p>
<p>
If you set this attribute to true, the user can launch the activity in
split-screen and freeform modes. If you set the attribute to false, the
activity does not support multi-window mode. If this value is false, and the
user attempts to launch the activity in multi-window mode, the activity takes
over the full screen.
</p>
<p>
If your app targets API level 24 or higher, but you do not specify a value
for this attribute, the attribute's value defaults to true.
</p>
<p>
This attribute was added in API level 24.
</p>
</dd>
<dt><a name="restrictedAccountType"></a>{@code android:restrictedAccountType}</dt>
<dd>Specifies the account type required by this application and indicates that restricted profiles
are allowed to access such accounts that belong to the owner user. If your app requires an
{@link android.accounts.Account} and restricted profiles <strong>are allowed to
access</strong> the primary user's accounts, the value for this attribute must
correspond to the account authenticator type used by your app (as
defined by {@link android.accounts.AuthenticatorDescription}), such as "com.google".
<p>The default value is null and indicates that the application can work <em>without</em> any
accounts.
<p class="caution"><strong>Caution:</strong>
Specifying this attribute allows restricted profiles to use your
app with accounts that belong to the owner user, which may reveal personally identifiable
information. If the account may reveal personal details, you <strong>should not</strong>
use this attribute and you should instead declare the <a
href="#requiredAccountType">{@code android:requiredAccountType}</a> attribute
to make your app unavailable to restricted profiles.</p>
<p>This attribute was added in API level 18.</p>
</dd>
<dt><a name="supportsrtl"></a>{@code android:supportsRtl}</dt>
<dd>Declares whether your application is willing to support right-to-left (RTL) layouts.
<p>If set to {@code true} and <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#target"
>{@code targetSdkVersion}</a> is set to 17 or higher, various RTL APIs will be
activated and used by the system so your app can display RTL layouts.
If set to {@code false} or if <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#target"
>{@code targetSdkVersion}</a> is set to 16 or lower, the RTL APIs will be ignored
or will have no effect and your app will behave the same regardless of the layout
direction associated to the user's Locale choice (your layouts will always be left-to-right).
<p>The default value of this attribute is {@code false}.</p>
<p>This attribute was added in API level 17.</p>
</dd>
<dt><a name="aff"></a>{@code android:taskAffinity}</dt>
<dd>An affinity name that applies to all activities within the application,
except for those that set a different affinity with their own
<code><a href="{@docRoot}guide/topics/manifest/activity-element.html#aff">taskAffinity</a></code>
attributes. See that attribute for more information.
<p>
By default, all activities within an application share the same
affinity. The name of that affinity is the same as the package name
set by the
<code><a href="{@docRoot}guide/topics/manifest/manifest-element.html">&lt;manifest&gt;</a></code> element.
</p></dd>
<dt><a name="testOnly"></a>{@code android:testOnly}</dt>
<dd>Indicates whether this application is only for testing purposes. For example,
it may expose functionality or data outside of itself that would cause a security
hole, but is useful for testing. This kind of application can be installed
only through adb.</dd>
<dt><a name="theme"></a>{@code android:theme}</dt>
<dd>A reference to a style resource defining a default theme for all
activities in the application. Individual activities can override
the default by setting their own <code><a href="{@docRoot}guide/topics/manifest/activity-element.html#theme">theme</a></code>
attributes. For more information, see the <a
href="{@docRoot}guide/topics/ui/themes.html">Styles and Themes</a> developer guide.
</dd>
<!-- ##api level 14## -->
<dt><a name="uioptions"></a>{@code android:uiOptions}</dt>
<dd>Extra options for an activity's UI.
<p>Must be one of the following values.</p>
<table>
<tr><th>Value</th><th>Description</th></tr>
<tr><td>{@code "none"}</td><td>No extra UI options. This is the default.</td></tr>
<tr><td>{@code "splitActionBarWhenNarrow"}</td><td>Add a bar at
the bottom of the screen to display action items in the <em>app bar</em> (also known as the
<em>action bar</em>), when
constrained for horizontal space (such as when in portrait mode on a handset). Instead of a small
number of action items appearing in the app bar at the top of the screen, the app bar is
split into the top navigation section and the bottom bar for action items. This ensures a reasonable
amount of space is made available not only for the action items, but also for navigation and title
elements at the top. Menu items are not split across the two bars; they always appear
together.</td></tr>
</table>
<p>For more information about the app bar, see the <a
href="{@docRoot}training/appbar/index.html">Adding the App Bar</a> training class.</p>
<p>This attribute was added in API level 14.</p>
</dd>
<dt><a name="usesCleartextTraffic"></a>{@code android:usesCleartextTraffic}</dt>
<dd>Indicates whether the app intends to use cleartext network traffic, such as cleartext HTTP.
The default value is {@code "true"}.
<p>When the attribute is set to {@code "false"}, platform components (for example, HTTP and FTP
stacks, {@link android.app.DownloadManager}, {@link android.media.MediaPlayer}) will refuse the
app's requests to use cleartext traffic. Third-party libraries are strongly encouraged to honor this
setting as well. The key reason for avoiding cleartext traffic is the lack of confidentiality,
authenticity, and protections against tampering: a network attacker can eavesdrop on transmitted
data and also modify it without being detected.
<p>This flag is honored on a best effort basis because it's impossible to prevent all cleartext
traffic from Android applications given the level of access provided to them. For example, there's
no expectation that the {@link java.net.Socket} API will honor this flag because it cannot
determine whether its traffic is in cleartext. However, most network traffic from applications is
handled by higher-level network stacks/components which can honor this flag by either reading it
from {@link android.content.pm.ApplicationInfo#flags ApplicationInfo.flags} or
{@link android.security.NetworkSecurityPolicy#isCleartextTrafficPermitted() NetworkSecurityPolicy.isCleartextTrafficPermitted()}.
<p>NOTE: {@link android.webkit.WebView} does not honor this flag.
<p>During app development, StrictMode can be used to identify any cleartext traffic from the app: see
{@link android.os.StrictMode.VmPolicy.Builder#detectCleartextNetwork() StrictMode.VmPolicy.Builder.detectCleartextNetwork()}.
<p>This attribute was added in API level 23.</p>
<p>This flag is ignored on Android N and above if an Android Network Security Config is present.</p>
</dd>
<dt><a name="vmSafeMode"></a>{@code android:vmSafeMode}</dt>
<dd>Indicates whether the app would like the virtual machine (VM) to operate
in safe mode. The default value is {@code "false"}.
<p> This attribute was added in API level 8 where a value of "true"
disabled the Dalvik just-in-time (JIT) compiler. </p>
<p> This attribute was adapted in API level 22 where a value of "true"
disabled the ART ahead-of-time (AOT) compiler. </p>
</dd>
</dl></dd>
<!-- ##api level indication## -->
<dt>introduced in:</dt>
<dd>API Level 1</dd>
<dt>see also:</dt>
<dd><code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>
<br/><code><a href="{@docRoot}guide/topics/manifest/service-element.html">&lt;service&gt;</a></code>
<br/><code><a href="{@docRoot}guide/topics/manifest/receiver-element.html">&lt;receiver&gt;</a></code>
<br/><code><a href="{@docRoot}guide/topics/manifest/provider-element.html">&lt;provider&gt;</a></code></dd>
</dl>