32

我在 Play 商店中发布我的应用程序,我不希望它可用于平板电脑。我怎样才能让它发生?

我不想手动排除安卓开发者控制台中的每一个平板电脑,但我真的需要我的应用程序专门在智能手机上运行。

编辑:我按照你的建议做了,但结果如下:

在此处输入图像描述

为了进一步解释:我需要我的应用程序在普通人称为智能手机的设备上运行,而不是在普通人称为平板电脑的设备上运行……例如,它必须在“Galaxy Note 2”上运行,但不能在“Galaxy Tab”上运行

感谢@CommonsWare

我必须在清单中设置以下标签:

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

和:

<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" />
    <!-- all large size screens -->
    <screen android:screenSize="large" android:screenDensity="ldpi" />
    <screen android:screenSize="large" android:screenDensity="mdpi" />
    <screen android:screenSize="large" android:screenDensity="hdpi" />
    <screen android:screenSize="large" android:screenDensity="xhdpi" />
</compatible-screens>

并执行以下操作:右键单击项目 -> 属性 -> android -> 选择大于 8 的目标

4

4 回答 4

28

http://developer.android.com/guide/practices/screens-distribution.html#FilteringHansetApps

...您可以使用该元素根据屏幕尺寸和密度的组合来管理应用程序的分布。Google Play 等外部服务使用此信息对您的应用程序进行过滤,以便只有具有您声明兼容的屏幕配置的设备才能下载您的应用程序。

该页面的示例<compatible-screens>元素:

<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>

但是,我建议还添加密度为 的线条xxhdpi,因为此类设备现已上市(Droid DNA、Xperia Z、HTC Butterfly 等)。


更新

首先,关于您的构建错误,如果您阅读element的文档<compatible-screens>,您会注意到它是在 API 级别 9 中添加的,并且出于某种奇怪的原因,您的构建目标设置得比这更早。

二、关于:

我需要我的应用程序在普通人称为智能手机的设备上运行,而不是在普通人称为平板电脑的设备上运行……例如,它必须在“Galaxy Note 2”上运行,但不能在“Galaxy Tab”上运行

这是不可能的,仅仅是因为您没有具体的定义来明确您所做的事情并且不希望您的应用程序发布。

地球上有大约 80 亿“正常人”。欢迎您采访他们每个人,并询问他们对 Galaxy Note 2 的看法。有人会说是电话。有人会说是平板电脑。有些人会说“平板手机”,这不会有用。有些人会把你赶出他们的家,声称你带了一些发光的恶魔进入他们中间(这也没有用,如果他们手边有石头可以扔可能会很痛苦)。

如果在未来的某个时间点,你对你的设备做什么和不想要做什么有了一个科学的定义,问一个新的 StackOverflow 问题。通过“科学定义”,我的意思是一种算法,可以被所有设备上的所有人普遍应用,以确定你做什么和不想要你的应用程序。

(请注意,“所有人”是指那些可能认为您是恶魔贩子的人)

例如:

  • “我想在所有具有电话功能的设备上发货,无论屏幕大小如何”

  • “我想在所有屏幕尺寸小于最小边的某些英寸的设备上发货:

于 2013-03-21T12:49:27.530 回答
7

在清单文件中使用支持屏幕标记是错误的方法。始终使用<compatible-screens>使您的应用无法在平板电脑上使用。

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

警告

如果您将元素用于上述场景(当您的应用程序不兼容大屏幕时)并将大屏幕尺寸属性设置为“false”,则 Google Play 等外部服务不会应用过滤。您的应用程序仍可用于较大的屏幕,但在运行时,它不会调整大小以适应屏幕。相反,系统将模拟手机屏幕尺寸(大约 320dp x 480dp;有关更多信息,请参阅屏幕兼容模式)。如果您想防止您的应用程序在更大的屏幕上被下载,请按照@CommonsWare的建议使用。

使用标签排除您的应用程序以在平板电脑上运行。

<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>
于 2013-03-21T12:49:18.800 回答
0

对于那些新的线程,使用

<uses-feature android:name="android.hardware.telephony" required="true"/>

来源(https://paramsen.github.io/exclude-tablets/

于 2022-01-07T17:45:38.017 回答
-2

您可以尝试为 3g 或 4g 服务添加某种检查。这将排除大多数但可能不是所有平板电脑。

于 2013-03-21T12:52:27.640 回答