如何以编程方式关闭Android电源菜单?像alarmy这样的应用程序正在做这件事。
我从Android文档中找不到是否有事件监听器通知我们打开了电源菜单。
实际上,如果我点击屏幕上除电源菜单之外的任何区域,或者按下后退按钮,菜单就会被删除。
我想知道如何才能以编程方式做到这一点(我知道这是可能的,如果不是直接通过api,可能通过一些变通方法,因为alarmy可以做到这一点)。
发布于 2018-12-08 12:25:10
您可以使用以下代码来检测电源按钮按下。
@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);
}credits 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
一旦你收到了这个意图,你就会知道
发布于 2018-12-08 12:02:31
https://stackoverflow.com/questions/53679345
复制相似问题