如何以编程方式关闭android电源菜单?像alarmy这样的应用程序正在这样做。
我无法从android文档中找到事件监听器是否通知我们打开的电源菜单。
从物理上讲,如果我单击屏幕上除电源菜单以外的任何区域或按“后退”按钮,则菜单会显示为乱七八糟。
我想知道如何以编程方式执行此操作(我知道这是可能的,如果不是通过api可以直接通过api解决,因为alarmy可以做到)。
答案 0 :(得分:2)
您可以使用以下代码来检测电源按钮的按下情况。
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
int keyPressed = event.getKeyCode();
if(keyPressed==KeyEvent.KEYCODE_POWER){
Log.d("###","Power button long click");
Toast.makeText(MainActivity.this, "Clicked: "+keyPressed, Toast.LENGTH_SHORT).show();
return true;}
else
return super.dispatchKeyEvent(event);
}
积分https://stackoverflow.com/a/39197768/9640177
现在要阻止系统显示对话框,您可以广播以关闭所有系统对话框。
sendBroadcast(new Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS));
完整的解决方案
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
int keyPressed = event.getKeyCode();
if(keyPressed==KeyEvent.KEYCODE_POWER){
Log.d("###","Power button long click");
Toast.makeText(MainActivity.this, "Clicked: "+keyPressed, Toast.LENGTH_SHORT).show();
//send broadcast to close all dialogs
sendBroadcast(new Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS));
return true;}
else
return super.dispatchKeyEvent(event);
}
如果要在关机之前执行一些小的操作,则可以执行以下操作。 您可以使用意图过滤器来听从跟随意图。
在您的清单上
<uses-permission android:name="android.permission.DEVICE_POWER" />
....
....//other stuff goes here.
<receiver android:name=".ShutdownReceiver">
<intent-filter>
<action android:name="android.intent.action.ACTION_SHUTDOWN" />
<action android:name="android.intent.action.QUICKBOOT_POWEROFF" />
</intent-filter>
</receiver>
信用https://stackoverflow.com/a/39213344/9640177
一旦收到此意向,您就会知道po
答案 1 :(得分:0)