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

Marshmallow及以上设备锁屏启动Activity:Nougat解锁问题解决

解决Android Nougat设备上来电自动解锁锁屏失效问题

我最近在开发一款基于Sinch的通话应用,需求是来电时自动解锁锁屏。一开始我通过在Activity的onStart()方法中添加Window Flags来实现,但发现在Android Nougat设备上这个功能完全失效。

原来的实现代码

Activity代码:

@Override
protected void onStart() {
    super.onStart();
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON| 
        WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD| 
        WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED| 
        WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
}

Manifest配置:

<activity android:name="IncomingCallScreenActivity" 
    android:noHistory="true" 
    android:showOnLockScreen="true" 
    android:screenOrientation="sensorPortrait">
</activity>

解决方法

经过调试,我发现问题出在Manifest的Activity配置上。移除android:noHistory="true"、android:showOnLockScreen="true"和android:screenOrientation="sensorPortrait"这些属性后,功能在Nougat设备上正常生效了。修改后的Manifest配置如下:

<activity android:name="IncomingCallScreenActivity">
</activity>

推测是Android Nougat开始对锁屏相关的Activity属性处理逻辑有了变化,同时设置Manifest属性和Window Flags会产生冲突,导致Flags无法正常发挥作用。

内容的提问来源于stack exchange,提问作者Ramzan ullah Tingku

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:18:58