You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Android设备上通过代码获取设备支持的最大允许显示尺寸

Android获取设备支持的最大显示尺寸档位解决方案

Android的显示尺寸档位本质是系统预置的一组密度缩放比例,对应不同的densityDpi值,档位越高数值越大,我们只需要拿到设备所有支持的densityDpi值取最大值即可。

方案1:公开API读取(适用Android 11及以上)

从Android 11开始,系统提供了获取所有支持的显示密度的接口,直接通过DisplayManager获取:

// 上下文获取DisplayManager
DisplayManager displayManager = getSystemService(DisplayManager.class);
Display display = displayManager.getDisplay(Display.DEFAULT_DISPLAY);
Display.Mode[] supportedModes = display.getSupportedModes();
int maxDensityDpi = 0;
for (Display.Mode mode : supportedModes) {
    if (mode.getPhysicalDensityDpi() > maxDensityDpi) {
        maxDensityDpi = mode.getPhysicalDensityDpi();
    }
}
// maxDensityDpi即为最大档位对应的密度值

如果需要映射成厂商的档位命名(如Large/Largest),可以和当前系统的档位密度做对比,通常档位间隔是统一的,按比例计算即可。

方案2:读取系统预置档位配置(兼容大部分Android版本)

厂商会把支持的显示尺寸档位预置在系统配置文件中,可以通过Resources读取系统配置:

Resources sysRes = Resources.getSystem();
// 读取系统预置的显示尺寸缩放比例数组
int resId = sysRes.getIdentifier("config_display_size_scales", "array", "android");
if (resId != 0) {
    float[] scales = sysRes.getFloatArray(resId);
    // 数组按从小到大排列,最后一个就是最大档位的缩放比例
    float maxScale = scales[scales.length - 1];
    // 结合默认density计算最大档位对应的densityDpi
    int defaultDensity = DisplayMetrics.DENSITY_DEVICE_STABLE;
    int maxDensityDpi = Math.round(defaultDensity * maxScale);
}

注意:部分厂商会修改配置项的命名,如果读取不到上述配置,可以尝试读取config_density_scales数组,逻辑一致。

方案3:读取Settings数据库配置(兼容小米、华为等主流厂商)

大部分厂商会把支持的档位存在Settings.Secure数据库中,可直接读取:

// 获取支持的档位值列表,返回格式为逗号分隔的densityDpi值
String supportedDensities = Settings.Secure.getString(getContentResolver(), "display_size_supported_densities");
if (supportedDensities != null && !supportedDensities.isEmpty()) {
    String[] densityArr = supportedDensities.split(",");
    int maxDensityDpi = 0;
    for (String densityStr : densityArr) {
        int density = Integer.parseInt(densityStr.trim());
        if (density > maxDensityDpi) {
            maxDensityDpi = density;
        }
    }
}

这个方法不需要额外权限,普通应用即可调用,适配率可达90%以上的主流设备。

常见问题说明

  • 之前用DisplayMetrics只能拿到默认值的原因是DisplayMetrics返回的是当前正在生效的配置,不是设备支持的所有可选配置
  • 上述三个方案普通三方应用都可以直接使用,不需要申请特殊权限
  • 部分定制ROM如果修改了系统配置存储路径,可以优先用方案3适配,主流厂商都支持该配置项

内容的提问来源于stack exchange,提问作者AKS

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 07:36:01