blob: 20ec85f51af5c9ff51270b987136486222dd4538 [file] [log] [blame]
page.title=<uses-configuration>
parent.title=The AndroidManifest.xml File
parent.link=manifest-intro.html
@jd:body
<!-- ##api level 3## see comment below -->
<!-- the "no___" values are nonsensical if they mean "doesn't work on devices with a
keyboard / navigation control / touch screen." Dianne says that that's what they mean and
that they therefore should be eliminated. Suchi says that they mean "doesn't require a
keyboard / navigation control / touch screen to work." But then what does "undefined" mean?
Seems like some API change is in the works, either eliminating the "no___" values or
"undefined". Since it's unclear what the change will be, I've chosen to document the "no___"
and "undefined" attributes using the same language, which is surely wrong but may make it
easier to update the doc when the change is made. -->
<dl class="xml">
<dt>syntax:</dt>
<dd><pre class="stx">&lt;uses-configuration android:<a href="#five">reqFiveWayNav</a>=["true" | "false"]
android:<a href="#hard">reqHardKeyboard</a>=["true" | "false"]
android:<a href="#kbd">reqKeyboardType</a>=["undefined" | "nokeys" | "qwerty" |
"twelvekey"]
android:<a href="#nav">reqNavigation</a>=["undefined" | "nonav" | "dpad" |
"trackball" | "wheel"]
android:<a href="#touch">reqTouchScreen</a>=["undefined" | "notouch" | "stylus" |
"finger"] /&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>description:</dt>
<dd>Indicates what hardware and software features the application requires.
For example, an application might specify that it requires a physical keyboard
or a particular navigation device, like a trackball. The specification is
used to avoid installing the application on devices where it will not work.
<p>
If an application can work with different device configurations, it
should include separate {@code &lt;uses-configuration&gt;} declarations for
each one. Each declaration must be complete. For example, if an application
requires a five-way navigation control, a touch screen that can be operated
with a finger, and either a standard QWERTY keyboard or a numeric 12-key
keypad like those found on most phones, it would specify these requirements
with two {@code &lt;uses-configuration&gt;} elements as follows:
</p>
<pre>&lt;uses-configuration android:reqFiveWayNav="true" android:reqTouchScreen="finger"
android:reqKeyboardType="qwerty" /&gt;
&lt;uses-configuration android:reqFiveWayNav="true" android:reqTouchScreen="finger"
android:reqKeyboardType="twelvekey" /&gt;</pre></dd>
<dt>attributes:</dt>
<dd><dl class="attr">
<dt><a name="five"></a>{@code android:reqFiveWayNav}</dt>
<dd>Whether or not the application requires a five-way navigation control
&mdash; "{@code true}" if it does, and "{@code false}" if not. A five-way
control is one that can move the selection up, down, right, or left, and
also provides a way of invoking the current selection. It could be a
D-pad (directional pad), trackball, or other device.
<p>
If an application requires a directional control, but not a control of a
particular type, it can set this attribute to "{@code true}" and ignore
the <code><a href="#nav">reqNavigation</a></code> attribute. However,
if it requires a particular type of directional control, it can ignore
this attribute and set {@code reqNavigation} instead.
</p></dd>
<dt><a name="hard"></a>{@code android:reqHardKeyboard}</dt>
<dd>Whether or not the application requires a hardware keyboard &mdash;
"{@code true}" if it does, and "{@code false}" if not.</dd>
<dt><a name="kbd"></a>{@code android:reqKeyboardType}</dt>
<dd>The type of keyboard the application requires, if any at all.
This attribute does not distinguish between hardware and software
keyboards. If a hardware keyboard of a certain type is required,
specify the type here and also set the {@code reqHardKeyboard} attribute
to "{@code true}".
<p>
The value must be one of the following strings:
</p>
<table>
<tr>
<th>Value</th>
<th>Description</th>
</tr><tr>
<td>"{@code undefined}"</td>
<td>The application does not require a keyboard.
(A keyboard requirement is not defined.)
This is the default value.</td>
</tr><tr>
<td>"{@code nokeys}"</td>
<td>The application does not require a keyboard.</td>
</tr><tr>
<td>"{@code qwerty}"</td>
<td>The application requires a standard QWERTY keyboard.</td>
</tr><tr>
<td>"{@code twelvekey}"</td>
<td>The application requires a twelve-key keypad, like those on most
phones &mdash; with keys for the digits from {@code 0} through
{@code 9} plus star ({@code *}) and pound ({@code #}) keys.</td>
</tr>
</table></dd>
<dt><a name="nav"></a>{@code android:reqNavigation}</dt>
<dd>The navigation device required by the application, if any. The value
must be one of the following strings:
<table>
<tr>
<th>Value</th>
<th>Description</th>
</tr><tr>
<td>"{@code undefined}"</td>
<td>The application does not require any type of navigation control.
(The navigation requirement is not defined.)
This is the default value.</td>
</tr><tr>
<td>"{@code nonav}"</td>
<td>The application does not require a navigation control.</td>
</tr><tr>
<td>"{@code dpad}"</td>
<td>The application requires a D-pad (directional pad) for navigation.</td>
</tr><tr>
<td>"{@code trackball}"</td>
<td>The application requires a trackball for navigation.</td>
</tr><tr>
<td>"{@code wheel}"</td>
<td>The application requires a navigation wheel.</td>
</tr>
</table>
<p>
If an application requires a navigational control, but the exact type of
control doesn't matter, it can set the
<code><a href="#five">reqFiveWayNav</a></code> attribute to "{@code true}"
rather than set this one.
</p></dd>
<dt><a name="touch"></a>{@code android:reqTouchScreen}</dt>
<dd>The type of touch screen the application requires, if any at all.
The value must be one of the following strings:
<table>
<tr>
<th>Value</th>
<th>Description</th>
</tr><tr>
<td>"{@code undefined}"</td>
<td>The application doesn't require a touch screen.
(The touch screen requirement is undefined.)
This is the default value.</td>
</tr><tr>
<td>"{@code notouch}"</td>
<td>The application doesn't require a touch screen.</td>
</tr><tr>
<td>"{@code stylus}"</td>
<td>The application requires a touch screen that's operated with a stylus.</td>
</tr><tr>
<td>"{@code finger}"</td>
<td>The application requires a touch screen that can be operated with a finger.</td>
</tr>
</table></dd>
</dl></dd>
<!-- ##api level 3## -->
<dt>introduced in:</dt>
<dd>API Level 3</dd>
<dt>see also:</dt>
<dd>
<ul>
<li><code><a href="{@docRoot}guide/topics/manifest/activity-element.html#config">configChanges</a></code>
attribute of the
<code><a href="{@docRoot}guide/topics/manifest/activity-element.html">&lt;activity&gt;</a></code>
element</dd></li>
<li>{@link android.content.pm.ConfigurationInfo}</li>
</ul>
</dd>
</dl>