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

小米设备Push Notification无声 如何获取通知声音设置状态

小米OS通知「允许声音」开关状态获取方案

小米MIUI/澎湃OS的通知声音拦截逻辑是系统层私有实现,没有公开API暴露对应状态,可通过读取系统Secure设置表的私有字段实现状态判断,全版本兼容方案如下:


1. 前置校验

首先判断当前运行设备是否为小米定制ROM,避免在其他品牌设备上执行私有逻辑导致异常。通过反射读取系统属性即可判断,无需特殊权限:

// 反射读取系统属性工具类
object SysProp {
    fun get(key: String, default: String = ""): String {
        return try {
            val clz = Class.forName("android.os.SystemProperties")
            val getMethod = clz.getMethod("get", String::class.java, String::class.java)
            getMethod.invoke(null, key, default) as String
        } catch (e: Exception) {
            default
        }
    }
}

// 判断是否为小米ROM
val isXiaomiROM = SysProp.get("ro.miui.ui.version.name").isNotEmpty()

非小米ROM直接走原生通知逻辑即可,不需要执行后续判断。


2. 读取开关状态

小米将通知声音全局开关的状态存在Settings.Secure表中,不同系统版本对应字段名不同,做兼容读取即可:

  • MIUI 13、澎湃OS 1.0及以上版本字段:mi_notification_sound_enable
  • MIUI 12及更早版本字段:notification_sound_enabled
  • 字段值为1代表开关开启,0代表开关关闭

封装好的判断方法如下:

fun isXiaomiNotificationSoundOn(context: Context): Boolean {
    if (!isXiaomiROM) return true
    val resolver = context.contentResolver
    // 优先读新版字段,不存在则fallback到旧版字段,都读不到默认认为是开启状态
    val state = Settings.Secure.getInt(
        resolver,
        "mi_notification_sound_enable",
        Settings.Secure.getInt(resolver, "notification_sound_enabled", 1)
    )
    return state == 1
}

读取该字段不需要申请任何特殊权限,普通三方应用可直接访问。


3. 用户引导实现

检测到开关为关闭状态时,不要硬编码跳转小米设置的私有页面,直接调用Android原生通知设置Intent即可,系统会自动定位到当前应用的通知管理页,小米ROM会自动在该页面展示「允许声音」开关选项,兼容性最高:

fun jumpToAppNotificationSetting(context: Context) {
    val intent = Intent(Settings.ACTION_APP_NOTIFICATION_SETTINGS)
    intent.putExtra(Settings.EXTRA_APP_PACKAGE, context.packageName)
    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
    context.startActivity(intent)
}

弹窗提示建议明确告知用户影响:当前系统已关闭应用通知声音权限,无法收到消息提示音,是否前往设置开启?


注意事项

  • 部分开发版/内测版MIUI可能存在字段名调整,如果读取失败默认返回开启状态,不要误触发弹窗干扰用户。
  • 安卓13及以上版本需要先确认已获得POST_NOTIFICATIONS运行时权限,否则通知本身无法弹出,和声音开关逻辑无关。
  • 不要尝试反射调用小米系统服务类获取状态,不同版本混淆规则不同,极易出现崩溃。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 12:06:17