2013-03-21 122 views
23

我在Play商店发布我的应用程序,我不希望平板电脑可用。 我该如何做到这一点?使平板电脑无法使用Android应用程序

我不希望Android的开发者控制台中手动排除每一个平板电脑,但我真的需要我的应用程序在智能手机独家承办。

编辑: 我确实如你所说,但这里的结果:

enter image description here

,并为进一步的解释:我需要我的应用程序上,正常的人叫智能手机,而不是设备的设备运行正常人们称之为片剂......例如它具有的 “Galaxy Tab的” 上 “的Galaxy Note 2”,但不能运行

解决感谢@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

+5

这是为什么? (也请定义“平板电脑”) – njzk2 2013-03-21 12:47:11

+2

如果原因是您的应用程序需要电话语音呼叫访问,请注意有些平板电脑可以支持语音呼叫(例如,我有一个ViewSonic ViewPad 7“基本上只是一个超大号的电话) – Jules 2013-03-21 12:49:55

+1

如果您不希望将平板电脑包含在内,我想知道为什么您还要编写元素? – 2015-10-24 06:03:00

回答

24

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的密度,因为这些设备现在发货(德罗伊德DNA,的Xperia Z,HTC蝴蝶等)。


UPDATE

首先,相对于你的编译错误,如果你读the documentation for the <compatible-screens> element,你会发现,它在API 9级增加,以及一些奇怪的原因,你建立的目标是比这更老。

其次,相对于:

我需要我的应用程序上,正常的人叫智能手机,而不是正常的人称之为平板电脑设备的设备...例如运行它具有的“Galaxy Tab的”

这是不可能的,只是因为你没有你做什么具体的定义,不希望您的应用程序出货上“的Galaxy Note 2”,但无法运行。

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

如果在未来的某个时间点,您提出了一个科学定义,说明您做了什么,不想运送设备,请提出一个新的StackOverflow问题。通过“科学定义”,我的意思是一种算法,可以被所有设备上的所有人普遍应用,以确定您做了什么以及不想要您的应用。

(注意,是“所有的人”,我不包括那些谁可能认为你是一个恶魔贩子)

例如:

  • “我要出货的所有设备有电话功能,无论屏幕尺寸的“

  • ”我想出货在具有屏幕尺寸小于所有设备,和-等其最小边多少英寸:

+1

我试过你的答案,但它给了我错误! – aveschini 2013-03-21 13:35:51

+0

@aveschini:查看我的答案更新。 – CommonsWare 2013-03-21 13:44:47

+0

你说得对(做出了一个非常热闹的回答,诚实!)。我需要在小于6英寸的设备上发货。 现在我有:但它仍然给我与我张贴的图像相同的错误! – aveschini 2013-03-21 13:55:41

7

使用支持屏幕标签错误的方法。总是使用<compatible-screens>来让您的应用不可用于平板电脑。

<supports-screens 
    android:smallScreens="true" 
    android:normalScreens="true" 
    android:largeScreens="false" 
    android:xlargeScreens="false" 
    android:resizeable="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> 
+1

这不会起作用,Android仍会将应用发布到大屏幕设备上,并会应用自己的算法来扩展UI。 – CommonsWare 2013-03-21 12:49:56

+0

正如另一个线程所述,这个解决方案取决于'tablet'的定义,这可能不是aveschini想要的。 – tilpner 2013-03-21 12:50:16

+0

@CommonsWare感谢您宝贵的建议。 – 2013-03-21 12:57:11

-1

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

相关问题