Android以编程方式关闭电源关闭菜单

时间:2018-12-08 03:55:47

标签: android

如何以编程方式关闭android电源菜单?像alarmy这样的应用程序正在这样做。

我无法从android文档中找到事件监听器是否通知我们打开的电源菜单。

从物理上讲,如果我单击屏幕上除电源菜单以外的任何区域或按“后退”按钮,则菜单会显示为乱七八糟。

我想知道如何以编程方式执行此操作(我知道这是可能的,如果不是通过api可以直接通过api解决,因为alarmy可以做到)。

2 个答案:

答案 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)

它称为自定义对话框,您可以从link进行创建,并且有

之类的属性
 dialog.setCancelable(false);

使用此属性,应该可以实现所需的功能。

相关问题