首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android程序关闭关机菜单

Android程序关闭关机菜单
EN

Stack Overflow用户
提问于 2018-12-08 11:55:47
回答 2查看 1K关注 0票数 1

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

我从Android文档中找不到是否有事件监听器通知我们打开了电源菜单。

实际上,如果我点击屏幕上除电源菜单之外的任何区域,或者按下后退按钮,菜单就会被删除。

我想知道如何才能以编程方式做到这一点(我知道这是可能的,如果不是直接通过api,可能通过一些变通方法,因为alarmy可以做到这一点)。

EN

回答 2

Stack Overflow用户

发布于 2018-12-08 12:25:10

您可以使用以下代码来检测电源按钮按下。

代码语言:javascript
复制
@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

现在,为了防止系统显示对话框,您可以广播以关闭所有系统对话框。

代码语言:javascript
复制
sendBroadcast(new Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS));

完整的解决方案

代码语言:javascript
复制
@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);
}

如果你想在关机前执行一个小操作,你可以按照下面的步骤操作。您可以使用意图过滤器监听以下意图。

在您的清单中

代码语言:javascript
复制
<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

一旦你收到了这个意图,你就会知道

票数 2
EN

Stack Overflow用户

发布于 2018-12-08 12:02:31

它被称为自定义对话框,您可以从link中创建,并且有如下属性

代码语言:javascript
复制
 dialog.setCancelable(false);

使用这个属性,你想要的应该是可能的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53679345

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档