Google Play Filtering
In some cases, the permissions that you request
<uses-permission> 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.
To control filtering, always explicitly declare
hardware features in
<uses-feature> elements, rather than
relying on Google Play to "discover" the requirements in
<uses-permission> elements. Then, if you want to disable
filtering for a particular feature, you can add a
android:required="false" attribute to the
For a list of permissions that imply
hardware features, see the documentation for the
<uses-permission android:name="string" android:maxSdkVersion="integer" />
For more information on permissions, see the
section in the introduction and the separate
Permissions API guide.
A list of permissions defined by the base platform can be found at
<permission>element, a permission defined by another application, or one of the standard system permissions (such as
"android.permission.READ_CONTACTS"). As these examples show, a permission name typically includes the package name as a prefix.
For example, beginning with Android 4.4 (API level 19), it's no longer necessary for your app
to request the
WRITE_EXTERNAL_STORAGE permission when your
app wants to write to its own application-specific directories on external storage (the directories
the permission is required for API level 18 and lower. So you can declare that this
permission is needed only up to API level 18 with a declaration such as this:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="18" />
This way, beginning with API level 19, the system will no longer grant your app the
This attribute was added in API level 19.