仅限平板电脑的清单限制,但三星Galaxy S2仍可使用应用程序

时间:2013-03-12 12:32:23

标签: android android-manifest android-screen-support

我想只在平板电脑上运行我的应用。所以我在清单文件中声明了以下代码:

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

但是当我连接三星Galaxy S2手机(hdpi 480x800)时,它仍会显示在Eclipse的Android设备选择器中。

我只想支持7“和10”平板电脑。我怎么能这样做?

2 个答案:

答案 0 :(得分:3)

您可能需要查看here

您为此目的编写的清单限制并不完全正确:

使用此:

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

这以两种不同的方式描述了您应用的屏幕尺寸支持:

它声明应用程序不支持屏幕尺寸存储桶“小”,“正常”和“大”,这些传统上不是平板电脑

它宣称该应用需要一个屏幕尺寸,最小可用面积至少为600dp

第一种技术适用于运行Android 3.1或更早版本的设备,因为这些设备根据通用屏幕尺寸存储桶声明其大小。 requiresSmallestWidthDp属性适用于运行Android 3.2及更高版本的设备,这增加了应用程序根据最小数量的与密度无关的像素指定其大小要求的功能。在此示例中,应用程序声明最小宽度要求为600dp,这通常意味着7英寸或更大的屏幕。

根据您的设计在不同屏幕尺寸上的效果,您的尺寸选择可能会有所不同;例如,如果您的设计仅适用于9英寸或更大的屏幕,则可能需要最小宽度为720dp。

问题在于您必须针对Android 3.2或更高版本编译应用程序才能使用requiresSmallestWidthDp属性。较旧的版本不理解此属性,并将引发编译时错误。最安全的做法是针对与您为minSdkVersion设置的API级别相匹配的平台开发您的应用程序。当您为构建候选版本做最后准备时,将构建目标更改为Android 3.2并添加requiresSmallestWidthDp属性。早于3.2的Android版本只是忽略该XML属性,因此不存在运行时失败的风险。

答案 1 :(得分:0)

您无法过滤应用程序安装在手机上(通过Eclipse,或者从外部源下载)。此设置将限制应用程序从Google Play电话市场下载到手机上。