Android Market Filtering and AndroidManifest.xml

Android Market Filtering and AndroidManifest.xml

If you have an application in Android Market that is visible to some users, but not others, chances are there is some filtering going on by virtue of some statement you have in your Application Manifest file, AndroidManifest.xml.

Usually, this filtering occurs through a major setting: operating system version, whether the device has a camera or a GPS, etc.

Sometimes, however, it is the little things that get you in hot water.

Take for example the following manifest statements:

<uses-permission android:name=”android.permission.CAMERA” />

<uses-feature android:name=”android.hardware.camera” />

<uses-feature android:name=”android.hardware.camera.autofocus”/>

As constructed, these statements will hide the corresponding app from any phone that does not have a camera AND does not have autofocus capability (not simply that your app can use autofocus).

Likewise, if you have the following:

<uses-permission android:name=”android.permission.CAMERA” />

The implication is that your app uses the camera and ALL features available to a camera (autofocus and flash) – and if the phone is missing a flash OR autofocus, the app will be invisible to Android Market. Double-plus un-good.

The magic secret sauce to requiring a camera, but not requiring that the camera have flash or autofocus, is the following set of manifest statements:

<uses-permission android:name=”android.permission.CAMERA” />

<uses-feature android:name=”android.hardware.camera” />

It is frustrating that something so subtle can severely hinder your ability to market your application, or even allow your customers to even see your application.

Madness, really.