支持手机和平板手机,而不是平板电脑

时间:2017-11-27 10:07:45

标签: android android-manifest tablet

我最近将我的应用程序上传到Play商店,该商店仅支持手机和平板手机。 因此,我根据https://developer.android.com/guide/practices/screens-distribution.html

插入以下代码,仅支持手机和平板手机

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.VIBRATE" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />
    <uses-permission android:name="android.permission.GET_ACCOUNTS" />
    <uses-permission android:name="android.permission.CALL_PHONE" />
    <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
    <uses-permission android:name="com.xxx.yyy.permission.C2D_MESSAGE" />

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

    <application android:name=".AppApplication" 
android:allowBackup="false" 
android:icon="@mipmap/ic_launcher" 
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round" 
android:supportsRtl="true" 
android:theme="@style/AppTheme" 
android:largeHeap="true"/>

当三星S8试图安装时,奇怪的事情开始发挥作用。它将有三种可能性。 华为Mate 9也有类似的情况。

  1. 能够找到并安装。
  2. 能够找到应用但显示错误'您的设备与此版本不兼容'。
  3. 根本无法找到该应用。
  4. 我的问题是,我该如何解决这个问题? Google Play控制台表示支持所有设备,但上面提到的平板电脑除外。 或者它是否与最近手机刚刚实施的WQHD相关?

    EDITED: 问题仅发生在升级到最新固件的人身上,这使得手机能够支持WQHD。

2 个答案:

答案 0 :(得分:1)

您可以使用<compatible-screens>代替<supports-screens>,因为它不需要您指定应用支持的每个屏幕密度。

手机设备样本:

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

来源:

干杯。

已更新至ANDROID OREO:

根据您的评论&#34;已编辑:问题出现仅限升级到最新固件的人,这使手机能够支持WQHD。&#34;

可能的逻辑原因:问题是这些设备先前已经抑制了他们的真实屏幕(制造商/ android os)分辨率,因此代码在所有设备上都按预期工作。

升级到新的Android OS / Oreo时会出现问题,从而释放出设备的真正屏幕分辨率功能。

设置 - 显示 - 屏幕分辨率(有3种设置)

建议的测试/验证是将分辨率设置为最低。尝试安装/运行该应用程序。

参考:https://www.androidcentral.com/understanding-galaxy-s8s-display-resolution-options

这绝对超出了您的代码控制目前,因为它提供了对Android API 8.0的全新升级Oreo util文档,同时您还可以解决最新问题解析这些设备或教育用户。

答案 1 :(得分:1)

除@Khalid答案外,使用<support-screens>将启用屏幕兼容模式,让平板电脑用户可以下载。

这是不可避免的,因为<compatible-screens>无法区分更新版本的Android(或三星),它们使用户能够动态设置分辨率(HD +,FHD +和WQHD +),并且无法真正确定屏幕密度。

为了解决这个问题,我在应用启动时添加验证器来检查屏幕尺寸。

    public boolean checkUnsupportedSize() {
    int screenSize = this.getResources().getConfiguration().screenLayout &
            Configuration.SCREENLAYOUT_SIZE_MASK;

    switch(screenSize) {
        case Configuration.SCREENLAYOUT_SIZE_SMALL:
            return false;
        case Configuration.SCREENLAYOUT_SIZE_NORMAL:
            return false;
        default:
            return true;
    }
}

    if (checkUnsupportedSize()) {
    YourActivity.this.finish();
}

由于手机和平板手机将始终使用屏幕尺寸小和正常,我们可以区分其他屏幕尺寸并强制退出应用程序。

直到Google Play对手机,平板电脑和平板电脑进行适当的过滤,这是我能想到的解决方法。

干杯。