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

如何100%判定Android设备是否支持Display over other apps功能?

如何100%判断Android设备是否不支持屏幕叠加(Display over other apps)功能?

背景:
我的应用逻辑是:若用户未授予“Display over other apps”权限,则限制部分功能;但如果设备本身不支持该功能,则允许用户使用全部功能。目前缺少100%可靠的方法判断设备是否支持该功能。

已知问题:
通常Android Go设备不支持此功能,我曾尝试通过判断低RAM设备来识别,代码如下:

val hasScreenOverlayFeature = !activityManager.isLowRamDevice()

但发现非Android Go设备(如小米Redmi A3,型号23129RN51X)也被禁用了该功能,导致这个判断逻辑失效。

可行的优化方案

  • 检查设置入口是否存在:尝试跳转至屏幕叠加权限设置页面,若系统无法解析该Intent,则说明设备不支持该功能。示例代码:
fun isScreenOverlaySupported(context: Context): Boolean {
    val intent = Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION, Uri.parse("package:${context.packageName}"))
    return context.packageManager.resolveActivity(intent, PackageManager.MATCH_DEFAULT_ONLY) != null
}

注意:部分厂商可能隐藏设置入口但仍支持功能,这种情况会出现误判,需结合其他逻辑验证。

  • 组合判断逻辑:先通过isLowRamDevice()筛选Android Go设备,再尝试请求权限并处理异常。若请求权限时抛出SecurityException或无法唤起权限页,再判定为不支持。

  • 厂商特性适配:部分厂商会在系统特性中标记相关支持情况,可尝试通过PackageManager.hasSystemFeature()查询,但无官方统一常量,需针对性适配,可靠性有限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 07:58:12