限制在平板电脑上从 Google Play 下载

Restrict download on Tablet from Google Play

我知道有一个话题已经讲过了: Here

<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" />
    <screen android:screenSize="small" android:screenDensity="xxhdpi" />
    <screen android:screenSize="small" android:screenDensity="xxxhdpi" />
    <!-- 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" />
</compatible-screens>
</manifest>

我已将上述代码应用到我的项目中,但不知为何某些设备仍被识别为平板电脑:

• Samsung S8+ Android 7.0 ( 2960x1440 6.2')

• Nexus 5X Android 8.0 ( 1920x1080 5.2')

• Google Pixel 2 Android 8.0 ( 1920x1080 5')

消息"your device isn't compatible with this version"显示在应用程序页面上。

那么有没有什么办法可以保证所有手机都能下载app而不是平板?

非常感谢

我认为这与 this question 相同,但我的回答没有被投票或接受,所以它不会让我标记为重复。所以我会在这里重现我的答案。该答案是关于排除平板电脑,但限制为平板电脑有类似的答案。

Android 不仅仅是 phone 和平板电脑。

您应该考虑为什么您真的要排除对平板电脑的支持。这完全是您的业务决定,但完全违背了 Android 的理念。 "phone"或"tablet"没有明确的定义。 “phablets”呢? Android 电视呢? Chromebook 呢?停靠在电脑显示器上的手机怎么样?我们还没有考虑过的新设备呢?

一个有用的思考方式是 "What is it about tablets that means we don't want to target them?"

  • 如果事实是他们通常不拨打 phone 电话,则需要使用功能 android.hardware.telephony 并接受您允许可以拨打 phone 的平板电脑这一事实电话。这没问题,因为您的业务决策取决于拨打 phone 电话的能力。
  • 如果他们有大屏幕这一事实,则使用屏幕尺寸作为目标。排除phones 大屏就可以了,因为商业原因是大屏。你提到的 phones 有大屏幕。

但是在没有充分的技术理由的情况下说 "we don't want to target tablets" 关于您不想支持的平板电脑可能是错误的,因为 "tablet" 没有技术定义,并且有数以千计的奇怪而美妙的 Android 设备在那里你可能没有想过。

让我们尝试以下操作:

<compatible-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="420" />
    <screen android:screenSize="small" android:screenDensity="480" />
    <screen android:screenSize="small" android:screenDensity="560" />
    <screen android:screenSize="small" android:screenDensity="640" />
    <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="420" />
    <screen android:screenSize="normal" android:screenDensity="480" />
    <screen android:screenSize="normal" android:screenDensity="560" />
    <screen android:screenSize="normal" android:screenDensity="640" />
    <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" />
    <screen android:screenSize="large" android:screenDensity="420" />
    <screen android:screenSize="large" android:screenDensity="480" />
    <screen android:screenSize="large" android:screenDensity="560" />
    <screen android:screenSize="large" android:screenDensity="640" />
</compatible-screens>

希望对您有所帮助。