Some people can’t find my application in Google Play, now what?

It probably happened to every Android developer who once published an application to Google Play. You received complaints from users stating that they can’t find your application on their tablet, while they do find it on their smartphone (or the other way around). After hours of searching for a valid explanation, you probably gave up.

Yes, I also had to deal with this problem, and I found out how to solve it.

It probably has something to do with some of the permissions you ask for in your application Manifest. Asking for permissions doesn’t always mean you require them for your application. Maybe your application uses the GPS or camera, but that doesn’t stop your users from using the application. Just add a simple if-statement to your code and you’re done.

/** Check if this device has a camera */
private boolean checkCameraHardware(Context context)
{
    if (context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA))
    {
        // this device has a camera
        return true;
    }
    else
    {
        // no camera on this device
        return false;
    }
}

And in your AndroidManifest.xml file:

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

But in some cases, the permissions that you request through can affect how your application is filtered by Google Play. If you request a hardware-related permission — CAMERA, for example — Google Play assumes that your application requires the underlying hardware feature and filters the application from devices that do not offer it.

If you want to see an overview of all permissions which cause Google Play to filter your application, take a look at the following list:

http://developer.android.com/guide/topics/manifest/uses-feature-element.html#permissions-features

To control filtering, always explicitly declare hardware features in <uses-feature> elements, rather than relying on Google Play to “discover” the requirements:

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

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

Finally update your application on Google Play and you’re good to go!