使Android应用程序不适用于平板电脑

时间:2013-03-21 12:46:18

标签: android tablet

我正在Play商店发布我的应用,我不希望它可用于平板电脑。 我该如何实现呢?

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

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

enter image description here

有关进一步说明:我需要我的应用程序在普通人称为智能手机的设备上运行,而不是在普通人称为平板电脑的设备上运行...它必须在“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>

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

3 个答案:

答案 0 :(得分:26)

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等)。


<强>更新

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

第二,关于:

  

我需要我的应用程序在普通人称为智能手机的设备上运行,而不是在普通人称为平板电脑的设备上运行...它必须运行在&#34; Galaxy Note 2&#34;但不是&#34; Galaxy Tab&#34;

这是不可能的,原因很简单,因为您没有具体定义您的操作,也不希望您的应用程序在运送。

有大约80亿人和#34;正常人&#34;在这个星球上。欢迎您采访他们中的每一个并询问他们对Galaxy Note 2的看法。有人会说电话。有人会说平板电脑。有人会说&#34; phablet&#34;,这将没有用。有些人会把你赶出家门,声称你已经带了一些发光的恶魔进入他们中间(这也没用,如果他们有方便扔石头可能会很痛苦。)

如果在将来的某个时间点,您想出了一个科学的定义,说明您做了什么,不想发送您的设备,请问一个新的StackOverflow问题。通过&#34;科学定义&#34;,我的意思是一种算法,可以被所有设备上的所有人普遍应用,以确定你做什么和不想要你的应用程序。

(注意&#34;所有人&#34;,我排除那些可能认为你是恶魔贩子的人)

例如:

  • &#34;我想在所有具有电话功能的设备上发货,无论屏幕尺寸如何&#34;

  • &#34;我希望在屏幕尺寸小于这么多英寸的所有设备上发货:

答案 1 :(得分: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>

答案 2 :(得分:-1)

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