Android“支持屏幕”不起作用?

时间:2014-12-28 07:57:52

标签: android android-screen-support

我构建了一个应用,我正在尝试排除小屏幕设备。为此,我利用了清单中的Support Screen Element

<supports-screens
    android:largeScreens="true"
    android:normalScreens="true"
    android:smallScreens="false"
    android:xlargeScreens="true"
    android:requiresSmallestWidthDp="320" />

正如开发者页面的链接所示:例如,典型的手机屏幕最小宽度为320dp

前一天我注意到有小设备的人仍然会给出不好的评论,因为他们仍然可以下载应用程序,并且一些布局元素不会出现在屏幕上。当然,一种解决方案是调整布局,但此刻我的问题是另一个。

似乎android:requiresSmallestWidthDp属性无效。事实上,我试图将其设置为700或更高,只是为了进行实验,并将其加载到商店,支持的设备数量不会改变!

我还将SDK的次要版本更改为13,以防止该属性出现兼容性问题:

<uses-sdk
    android:minSdkVersion="13"
    android:targetSdkVersion="19" />

其他属性运行良好,例如,如果我删除普通屏幕,支持的设备数量会下降。

我想删除dpi低于320的设备,但我不能。我无法理解我做错了什么。

更新

有这句话: Google Play目前不支持此属性进行过滤(在Android 3.2上),因此如果您的应用不支持小屏幕,则应继续使用其他尺寸属性。 但是:

  • 我不清楚Android 3.2+版本会发生什么。如果我将Android版本13+放在我的清单上,android:requiresSmallestWidthDp属性,人们仍然可以安装该应用,然后呢?
  • 其他尺寸属性为:android:compatibleWidthLimitDpandroid:largestWidthLimitDp。但他们都认为最大的“最小宽度”而不是我需要的最小宽度。

所以我的问题是,如何可以阻止屏幕小于500像素或360 dpi的用户安装我的应用?我可以吗?

1 个答案:

答案 0 :(得分:6)

来自official source

  

警告:Android系统不关注此属性,因此它不会影响应用程序在运行时的行为方式。相反,它用于为您的应用程序启用Google Play等服务的过滤功能。但是, Google Play目前不支持此属性进行过滤(在Android 3.2上),因此如果您的应用不支持小屏幕,则应继续使用其他尺寸属性。

<强>更新

在Google Play过滤时,似乎没有使用android:requiresSmallestWidthDp。只有android:smallScreensandroid:normalScreensandroid:largeScreensandroid:xlargeScreens适用于此。

我做了下一次测试:


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

<supports-screens
    android:smallScreens="false"
    android:normalScreens="true"
    android:largeScreens="true"
    android:xlargeScreens="true"
    android:requiresSmallestWidthDp="360"/>

enter image description here

<supports-screens
    android:smallScreens="true"
    android:normalScreens="true"
    android:largeScreens="true"
    android:xlargeScreens="true"/>

<supports-screens
    android:smallScreens="true"
    android:normalScreens="true"
    android:largeScreens="true"
    android:xlargeScreens="true"
    android:requiresSmallestWidthDp="360"/>

enter image description here

仅添加了65个设备


您可以尝试使用<compatible-screens>

  

描述:

     

指定应用程序所使用的每个屏幕配置   兼容。该元素只有一个实例   允许在清单中,但它可以包含多个   元素。每个元素指定一个特定的屏幕   尺寸密度组合,与应用程序兼容。

     

Android系统无法读取清单   element(既不在安装时也不在运行时)。这个元素是   仅供参考,可由外部服务使用(例如   Google Play)可以更好地了解应用程序的兼容性   特定的屏幕配置并为用户启用过滤。任何   未在此元素中声明的屏幕配置是一个屏幕   与应用程序不兼容的。因此,外部服务   (例如Google Play)不应向设备提供应用程序   有这样的屏幕。

     

警告:通常,您不应使用此清单元素。使用此元素可以大大减少您的潜在用户群   应用程序,不允许用户安装您的应用程序   有一个没有列出的屏幕配置的设备。   在申请时,您应该仅将其用作最后的手段   绝对不适用于特定的屏幕配置。代替   使用此元素,您应该遵循支持指南   多个屏幕,为多个屏幕提供可扩展的支持   使用替代布局和位图为不同的屏幕尺寸和   密度