11

We have an android application, manifest of which sets the following configurations:

minsdkVersion = "4"

<supports-screens 
                  android:normalScreens="true"
                  android:largeScreens="true"
                  android:anyDensity="false" />

However, when a user with Motorola XOOM device browses Android Market he is not displayed our application.

Why is this so?

Programmer Bruce
  • 64,977
  • 7
  • 99
  • 97
Raj
  • 111
  • 1
  • 3

5 Answers5

24

I had the same issue. Along with including android:xlargeScreens="true" I found this to be the fix.

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 element to your manifest with android:required="false":

<uses-feature android:name="android.hardware.telephony" android:required="false" />

From this blog: The CommonsBlog - XOOM, Permissions, and the Android Market

Lysandus
  • 764
  • 4
  • 23
2

Do you have copy protection turned on? I had a similar problem, some Xooms could see my app, but some couldn't. Apparently, turning on copy protection (in the post-upload app settings) can block some devices from viewing/downloading the app. If that's what's causing the problem, simply turning off copy protection will fix the issue. Google recommends you use the licensing service instead to protect your apps: http://developer.android.com/guide/publishing/licensing.html

bjpcomet
  • 81
  • 1
  • 4
1

The XOOM has an extra large screen so you need android:xlargeScreens="true" in your manifest.

Edit: Seems like this defaults to true. See my comment below.

Jason Hanley
  • 3,225
  • 2
  • 24
  • 21
  • As per :http://developer.android.com/guide/appendix/market-filters.htmlAs a general rule, Market assumes that the platform on the device can adapt smaller layouts to larger screens, but cannot adapt larger layouts to smaller screens. Thus, if an application declares support for "normal" screen size only, Market makes the application available to both normal- and large-screen devices, but filters the application so that it is not available to small-screen devices. – Manish Khot Feb 25 '11 at 17:32
  • Does the above not mean that if a device has largeScreen="true" then xlargeScreen is supported too? – Manish Khot Feb 25 '11 at 17:33
  • The docs @khotmanish mentioned are a little ambiguous since the first sentence says _larger_, implying both large and xlarge, while the second sentence says just _large_. – Jason Hanley Feb 25 '11 at 18:01
  • Seems I am wrong. The default value for all the `supports-screens` attributes are true if minSdk or targetSdk is >= 4. As per: http://developer.android.com/guide/topics/manifest/supports-screens-element.html – Jason Hanley Feb 25 '11 at 18:09
1

Remember!

<uses-sdk android:minSdkVersion="X" android:targetSdkVersion="11" />

targetSdkVersion will take care of you ;)

Jon Willis
  • 6,993
  • 4
  • 43
  • 51
1

Do you request any telephony permissions in your app, e.g. READ_SMS or CALL_PHONE? If so, then the Market will infer that telephony support is required, which means it won't be available for the Xoom.

If this is the case, then you need to update your AndroidManifest.xml to make the telephony features optional:

<uses-feature android:name="android.hardware.telephony" android:required="false"/>

You'll also need to make sure your app copes gracefully when the telephony features aren't present!

See my answer here for more detail on how to check what devices the Market is offering your app on.

The android:xlargeScreens="true" permission is not required, unless you've explicitly included the [supports-screens][2] in your AndroidManifest.xml (which you shouldn't, as the default will make it available on all screen sizes).

Community
  • 1
  • 1
Dan J
  • 25,433
  • 17
  • 100
  • 173