在目录frameworks\base\services\core\java\com\android\server\policy下
PhoneWindowManager.java文件中
@Override
public int interceptKeyBeforeQueueing(KeyEvent event, int policyFlags) {
//add code start
final int keyCode = event.getKeyCode();
int result = ACTION_PASS_TO_USER;
if (keyCode == KeyEvent.KEYCODE_POWER&&SystemProperties.getInt("persist.sys.power_enable", 0) == 1) {
result = ACTION_PASS_TO_USER;
return result;
}
//add code end
说明:persist.sys.power_enable属性为自定义属性,需要自行添加
添加可以参考这篇博客:新增系统属性
然后在上层应用中通过:
SystemProperties.set("persist.sys.power_enable","1");设置为1 时 ,按下电源键可以通过activity的 dispatchKeyEvent 函数监听,息屏和亮屏功能被屏蔽,
设置为0时,无法监听按键,走的是系统的正常流程