限制在屏幕密度为hdpi或更低的设备上安装应用程序

时间:2019-03-05 11:24:42

标签: android manifest android-screen-support hdpi screen-density

我正在开发一个Android应用程序,该应用程序仅适用于具有高屏幕密度的设备。我想将我的应用程序限制在屏幕密度为1.5或更低的设备上。我对这个问题进行了很多搜索,发现我们可以通过

之类的清单中的不同标签来处理此问题
 <supports-screens android:smallScreens="false"
    android:normalScreens="false"
    android:largeScreens="true"
    android:xlargeScreens="true"/>

我有两个设备,都属于normalScreens类别。其中一个密度等于1.5,另一个密度等于2.0。我的问题是,如何根据屏幕密度在设备上限制我的应用程序。 使用<compatible-screens>标签不是解决此问题的方法,因为Google文档说:“在此标签中未明确声明的任何尺寸和密度组合都将受到限制,无法安装该应用程序。”

该怎么办,请帮帮我。

1 个答案:

答案 0 :(得分:0)

  

在此标签中未明确声明的任何尺寸和密度组合都将被禁止安装该应用。

听起来<compatible-screens>是您想要的。您必须列出执行支持的所有可能的屏幕组合。除了ldpimdpihdpi以外,其他所有内容。

https://developer.android.com/guide/topics/manifest/compatible-screens-element https://developer.android.com/guide/practices/screens-distribution#FilteringHandsetApps

所以这是一个好的开始:

<compatible-screens>
    <screen android:screenSize="small" android:screenDensity="xhdpi"/>
    <screen android:screenSize="small" android:screenDensity="xxhdpi"/>
    <screen android:screenSize="small" android:screenDensity="xxxhdpi"/>
    <screen android:screenSize="normal" android:screenDensity="xhdpi"/>
    <screen android:screenSize="normal" android:screenDensity="xxhdpi"/>
    <screen android:screenSize="normal" android:screenDensity="xxxhdpi"/>
    <screen android:screenSize="large" android:screenDensity="xhdpi"/>
    <screen android:screenSize="large" android:screenDensity="xxhdpi"/>
    <screen android:screenSize="large" android:screenDensity="xxxhdpi"/>
    <screen android:screenSize="xlarge" android:screenDensity="xhdpi"/>
    <screen android:screenSize="xlarge" android:screenDensity="xxhdpi"/>
    <screen android:screenSize="xlarge" android:screenDensity="xxxhdpi"/>
</compatible-screens>

文档列出了更多受支持的屏幕密度值:

  • 320(xhdpi)
  • 360
  • 420
  • 480(xxhdpi)
  • 560
  • 640(xxxhdpi)

问题是,如果您的清单中有不要包含的具有不同价值的设备,则它不会在商店中看到您的应用。例如,索尼Xperia Z5 Premium的密度为~800 dpi,除非您在清单中指定屏幕密度为800,否则它不会让您获得应用。

<screen android:screenSize="normal" android:screenDensity="800"/>

那只是我的猜测。

因此,在走这条路之前,请问问自己,是否真的需要这个。如果相反,可以在用户首次运行该应用程序时通知用户,由于非典型的显示密度(或者不是,我真的不知道您的用例),视觉保真度可能不如预期的高。由用户决定。