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

小米设备上FullScreenIntent失效问题排查与解决方案咨询

针对小米设备的额外配置建议

你已完成的通用Android适配在MIUI系统下仍有专属限制需要补充,以下是针对性解决方案:

1. 开启「显示在其他应用上层」权限

MIUI默认限制应用在锁屏上层显示界面,需引导用户手动开启:

  • 路径:设置 → 应用设置 → 应用管理 → 你的通话应用 → 权限管理 → 显示在其他应用上层 → 允许

2. 配置MIUI专属通知权限

确保通知权限完全放开,避免锁屏拦截:

  • 路径:设置 → 通知与控制中心 → 通知管理 → 你的通话应用 → 开启「允许通知」,并将「锁屏通知」设为「显示」,「重要通知」设为「允许打扰」

3. 代码层面补充MIUI适配

(1)添加专属唤醒逻辑

MIUI对系统唤醒的限制更严格,可在原有唤醒代码基础上补充:

private fun miuiWakeLockFix() {
    val powerManager = getSystemService(POWER_SERVICE) as PowerManager
    val wakeLock = powerManager.newWakeLock(
        PowerManager.FULL_WAKE_LOCK or PowerManager.ACQUIRE_CAUSES_WAKEUP or PowerManager.ON_AFTER_RELEASE,
        "CallApp:WakeLockTag"
    )
    wakeLock.acquire(30000) // 持有30秒,足够完成来电界面显示
    wakeLock.release()
}

在showWhenLockedAndTurnScreenOn方法中,针对MIUI系统调用此方法(可通过系统属性判断MIUI:Build.MANUFACTURER.equals("Xiaomi", ignoreCase = true))。

(2)检查全屏Intent的PendingIntent配置

确保PendingIntent的flag适配Android版本,避免MIUI拦截:

val fullScreenIntent = Intent(this, IncomingCallActivity::class.java).apply {
    flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK
}
val fullScreenPendingIntent = PendingIntent.getActivity(
    this,
    0,
    fullScreenIntent,
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
        PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE
    } else {
        PendingIntent.FLAG_UPDATE_CURRENT
    }
)

4. 彻底关闭MIUI后台限制

除已配置项外,补充检查:

  • 进入「电池与性能」→ 省电优化 → 应用省电策略 → 你的通话应用 → 设为「无限制」
  • 关闭「智能省电」中的「后台智能限制」开关

5. 测试注意事项

  • 避免使用USB调试模式测试推送唤醒,MIUI在调试状态下会限制部分系统权限
  • 使用正式签名包测试,debug包可能被MIUI额外拦截

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 08:32:55