2011-10-29 51 views
3

我的应用专为手机设计,但是当我尝试将应用上传到市场时,它显示我的应用对平板电脑(xlarge)也可见。如果从平板电脑访问,我故意不希望我的应用在市场上展示。如何让我的Android应用仅适用于手机?

我试着玩minSdkVersion和targetVersion支持和元素。

我也使用

<manifest ... > 
    <compatible-screens> 
     <!-- all small size screens --> 
     <screen android:screenSize="small" android:screenDensity="ldpi" /> 
     <screen android:screenSize="small" android:screenDensity="mdpi" /> 
     <screen android:screenSize="small" android:screenDensity="hdpi" /> 
     <screen android:screenSize="small" android:screenDensity="xhdpi" /> 
     <!-- all normal size screens --> 
     <screen android:screenSize="normal" android:screenDensity="ldpi" /> 
     <screen android:screenSize="normal" android:screenDensity="mdpi" /> 
     <screen android:screenSize="normal" android:screenDensity="hdpi" /> 
     <screen android:screenSize="normal" android:screenDensity="xhdpi" /> 
    </compatible-screens> 
    ... 
    <application ... > 
     ... 
    <application> 
</manifest> 

尝试,但我得到一个错误:

Multiple annotations found at this line:
- error: No resource identifier found for attribute 'screenDensity' in package
'android'
- error: No resource identifier found for attribute 'screenSize' in package
'android'

我缺少什么?

回答

4

您应该使用market filters来指定您的应用程序确实需要的那些东西。如果设备需要为手机,请添加<uses-feature android:name="android.hardware.telephony"/>

通过指定兼容屏幕尺寸来过滤平板电脑是没有意义的。有关硬件功能列表,请参见<uses-feature>。不要仅仅为了过滤而添加元素,清单应该指定应用程序为了工作而需要的内容。

+0

考虑到平板电脑没有电话服务,使用此过滤器将有所帮助。但我的应用程序不需要任何硬件配置就可以运行。我的应用程序非常专门针对手机(从小到大的设备)完成,因此我不希望负面评论,因为应用程序在平板电脑中无法按预期运行。 – sku

+0

您发布的XML在这里工作正常,您的项目构建目标是什么? – user999717

+0

它是10 ... 被引入9 ... – sku

0

我真的不知道这是否是去了解它的正确方法。但是,我遇到过这种情况,并将其用于我的应用中,以确保平板电脑用户无法在其设备上访问此应用。

//verify the android version running on the phone/device 
int currentDeviceVersion = android.os.Build.VERSION.SDK_INT; 

//since tablets would be running HoneyComb or higher 
if (currentDeviceVersion >= android.os.Build.VERSION_CODES.HONEYCOMB){ 
    // display message that app is not supported for android honeycomb and above 
    // End (finish) app 
} 
+0

这可能会在设备下载并安装应用程序后生效。我需要一些过滤器才能使应用程序对平板电脑隐身。 – sku

+2

不,不要这样做。像Galaxy Nexus这样的手机新设备将无法使用您的应用。 – kabuko

+0

@kabuko - +1有效点! – Abhijit

0

通过查看播放控制台的设备目录,您需要指定更多的screenDensity值。 (见下文,截至今日)我认为在设备目录中总会看到新值出现的风险。所以你应该不断监测你的应用不支持的设备数量。

<!-- Exclude Tablets --> 
<compatible-screens> 
    <!-- all small size screens --> 
    <screen android:screenSize="small" android:screenDensity="ldpi" /> 
    <screen android:screenSize="small" android:screenDensity="mdpi" /> 
    <screen android:screenSize="small" android:screenDensity="hdpi" /> 
    <screen android:screenSize="small" android:screenDensity="xhdpi" /> 
    <screen android:screenSize="small" android:screenDensity="xxhdpi" /> 
    <screen android:screenSize="small" android:screenDensity="xxxhdpi" /> 
    <screen android:screenSize="small" android:screenDensity="213" /> 
    <screen android:screenSize="small" android:screenDensity="280" /> 
    <screen android:screenSize="small" android:screenDensity="360" /> 
    <screen android:screenSize="small" android:screenDensity="400" /> 
    <screen android:screenSize="small" android:screenDensity="420" /> 
    <screen android:screenSize="small" android:screenDensity="480" /> 
    <screen android:screenSize="small" android:screenDensity="560" /> 
    <!-- all normal size screens --> 
    <screen android:screenSize="normal" android:screenDensity="ldpi" /> 
    <screen android:screenSize="normal" android:screenDensity="mdpi" /> 
    <screen android:screenSize="normal" android:screenDensity="hdpi" /> 
    <screen android:screenSize="normal" android:screenDensity="xhdpi" /> 
    <screen android:screenSize="normal" android:screenDensity="xxhdpi" /> 
    <screen android:screenSize="normal" android:screenDensity="xxxhdpi" /> 
    <screen android:screenSize="normal" android:screenDensity="213" /> 
    <screen android:screenSize="normal" android:screenDensity="280" /> 
    <screen android:screenSize="normal" android:screenDensity="360" /> 
    <screen android:screenSize="normal" android:screenDensity="400" /> 
    <screen android:screenSize="normal" android:screenDensity="420" /> 
    <screen android:screenSize="normal" android:screenDensity="480" /> 
    <screen android:screenSize="normal" android:screenDensity="560" /> 
</compatible-screens> 
相关问题