androidandroid-manifestandroid-screen-support

Set minimum screen width


Looking a @CommonsWare answer here, he mentioned that the following can be added to the manifest to set the minimum supported screen width:

<manifest ... >
    <supports-screens android:smallScreens="false"
                      android:normalScreens="false"
                      android:largeScreens="true"
                      android:xlargeScreens="true"
                      android:requiresSmallestWidthDp="600" />
    ...
    <application ... >
    ...
    </application>
</manifest>

Looking at the documentation, the attributes are defined like this:

android:smallScreens
Indicates whether the application supports smaller screen form-factors. A small screen is defined as one with a smaller aspect ratio than the "normal" (traditional HVGA) screen. An application that does not support small screens will not be available for small screen devices from external services (such as Google Play), because there is little the platform can do to make such an application work on a smaller screen. This is "true" by default.

android:normalScreens
Indicates whether an application supports the "normal" screen form-factors. Traditionally this is an HVGA medium density screen, but WQVGA low density and WVGA high density are also considered to be normal. This attribute is "true" by default.

android:largeScreens
Indicates whether the application supports larger screen form-factors. A large screen is defined as a screen that is significantly larger than a "normal" handset screen, and thus might require some special care on the application's part to make good use of it, though it may rely on resizing by the system to fill the screen. The default value for this actually varies between some versions, so it's better if you explicitly declare this attribute at all times. Beware that setting it "false" will generally enable screen compatibility mode.

android:xlargeScreens
Indicates whether the application supports extra large screen form-factors. An xlarge screen is defined as a screen that is significantly larger than a "large" screen, such as a tablet (or something larger) and may require special care on the application's part to make good use of it, though it may rely on resizing by the system to fill the screen. The default value for this actually varies between some versions, so it's better if you explicitly declare this attribute at all times. Beware that setting it "false" will generally enable screen compatibility mode.
This attribute was introduced in API level 9.


My Question:

I don't want to complicate things, all I want to do is restrict the app download to devices that has a screen size width of more than 410dp.

Should I add android:largeScreens="true" for each screen size like shown above, or can I just add the following to support all screen sizes that has a bigger width than 410dp:

<supports-screens
    android:requiresSmallestWidthDp="410"
/>

Solution

  • all I want to do is restrict the app download to devices that has a screen size width of more than 410dp.

    That is not possible, sorry. Also note that on freeform multi-window environments (Chrome OS, Samsung DeX, etc.), the user can resize the window.

    can I just add the following to support all screen sizes that has a bigger width than 410dp

    No. The Play Store does not use that for filtering.