XOOM, Permissions, and the Android Market
If you have requested permissions like CALL_PHONE
or
SEND_SMS
, make sure that you have taken the proper steps,
or else your application will not be available for the XOOM,
and presumably for other Android 3.0-based tablets.
Some permissions imply that you need certain hardware features. Visit this page in the docs and scroll down to the “Permissions that Imply Feature Requirements” section.
The Android Market treats as though requesting a permission
like CALL_PHONE
also requests:
<uses-feature android:name="android.hardware.telephony" />
The XOOM does not have telephony — the first Android
Market-compliant device with that limitation. While it
can have a data plan, it has no voice or SMS capability,
and so it is treated as not having android.hardware.telephony
.
But, if you request permissions like CALL_PHONE
, the
Android Market by default will assume you need android.hardware.telephony
.
As a result, you will be filtered out of the Market for the
XOOM.
The solution is simple: for any hardware features that might
be implied by permissions but that you do not absolutely
need, manually add the appropriate <uses-feature>
element
to your manifest with android:required="false"
:
<uses-feature android:name="android.hardware.telephony"
android:required="false" />
Then, before you try placing a phone call or sending an SMS
or something, use PackageManager
and getSystemAvailableFeatures()
to find out if android.hardware.telephony
is indeed
available on the device. For example, you might check for
telephony early on and disable various menu choices or
buttons that might lead to the user to place a call or send
an SMS.
Now, if your application absolutely needs telephony, then
the implied <uses-feature>
will work, though you may wish to
consider putting one in explicitly. However, just bear in mind
that this means your app will not work on the XOOM or other
tablets that lack telephony.