Android 关机弹出选择菜单的深入解析
发布时间:2023-03-19 20:56:09
标签:Android,关机,弹出选择菜单
在Android系统中,长按Power键默认会弹出对话框让你选择“飞行模式”,“静音”,“关机”等功能。这些功能对于手机非常适用,但是对于机顶盒产品就没有什么必要了。
本文简单介绍一下怎样定制关机界面。
我的目标是长按Power键,将会关机,弹出“设备将要关机”选择对话框。如果可以选择“是”关机,和“否”返回系统。
弹出对话框的代码位于:
frameworks\policies\base\phone\com\android\internal\policy\impl\PhoneWindowManager.java
显示对话框的代码如下:
java代码:
Runnable mPowerLongPress = new Runnable() {
public void run() {
mShouldTurnOffOnKeyUp = false;
performHapticFeedbackLw(null, HapticFeedbackConstants.LONG_PRESS, false); sendCloseSystemWindows(SYSTEM_DIALOG_REASON_GLOBAL_ACTIONS); showGlobalActionsDialog();
}
};
调用showGlobalActionsDialog方法将会显示上面提到的显示“飞行模式”,“静音”,“关机”,选项的对话框。
因为我的目标是不要这个节目,把这行代码注释掉,替换成关机的代码就可以了。那么关机的代码在哪里呢?这段代码位于:
frameworks\policies\base\phone\com\android\internal\policy\impl\GlobalActions.java该文件的createDialog方法中,有如下代码:
java代码:
mItems = Lists.newArrayList(
// 静音模式mSilentModeToggle,
// mAirplaneModeOn飞机模式下,
// last: power off new SinglePressAction( com.android.internal.R.drawable.ic_lock_power_off, R.string.global_action_power_off) {
public void onPress() {
// shutdown by making sure radio and power are handled accordingly.
ShutdownThread.shutdown(mContext, true);
}
public boolean showDuringKeyguard() {
return true;
}
public boolean showBeforeProvisioning() {
return true
}
});
从代码中我们可以看出,如果选择上述对话框的“关机”选项之后,将会调用ShutdownThread的shutdown方法来关机。shutdown方法的第二个参数标识是否弹出询问对话框。
我们可以修改PhoneWindowManager.java的代码,最终代码如下:
java代码:
Runnable mPowerLongPress = new Runnable() {
public void run() {
mShouldTurnOffOnKeyUp = false;
performHapticFeedbackLw(null, HapticFeedbackConstants.LONG_PRESS, false);
sendCloseSystemWindows(SYSTEM_DIALOG_REASON_GLOBAL_ACTIONS);
//showGlobalActionsDialog();
ShutdownThread.shutdown(mContext, false);
}
};


猜你喜欢
- 扫码枪扫码效果等同于键盘录入,会回调dispatchKeyEvent键盘按下事件。开发环境:有线扫码枪,支持二维码代码1. 接收数据 /**
- 在System.Text.RegularExpression命名空间里,有正则表达式方法。using System.Collections.
- file: BluetoothEventLoop.java GB/GB2/GB3: 1. import android.os.PowerMa
- 具体代码如下所示:import java.util.ArrayList;import java.util.List;import java.
- 1. 每个编译单元(文件)都只能有一个public类。即每个编译单元都有单一的公共接口,用public类实现。此时,mian()就必须要包含
- 1.打开File >> setting,选择Plugins>>Browse Repositories2.搜索Jreb
- IDEA 端口占用解决方法后台开发时经常遇到端口占用问题Intellij IDEA端口占用 解决方法:方法1:打开任务管理器,关闭java
- MongoDBMongoDB作为一种NoSQL数据库产品,其实已经非常著名了。去年,由于MongoDB安全认证的薄弱,上万家公司中招。虽然是
- android 修改launcher行数和列数Launcher3桌面的行数和列数都是在InvariantDeviceProfile.java
- 本文实例讲述了java图片滑动验证(登录验证)原理与实现方法。分享给大家供大家参考,具体如下:这是我简单做出的效果图,处理300X150px
- HashMap 是一个散列表,它存储的内容是键值对(key-value)映射。HashMap 实现了 Map 接口,根据键的 HashCod
- 本文实例为大家分享了android实现点击按钮控制图片切换的具体代码,供大家参考,具体内容如下代码:class MainActivity :
- 目标:了解Swagger的作用和概念了解前后端分离在springBoot中集成SwaggerSwagger简介前后端分离VUE+spring
- 本文实例讲述了Java中的多态用法。分享给大家供大家参考。具体分析如下:多态,是面向对象的程序设计语言最核心的特征。封装性、继承性都比较简单
- 实际需求<if test="computationRule == '1'"> F
- 前言最近写了一篇博客是关于使用Jenkins来构建SVN+Maven项目 ,这里使用的的代码版本工具是SVN,但是事实上也有很多公司使用GI
- 每次看IOS上的应用,应用中状态栏的颜色总能与应用标题栏颜色保持一致,用户体验很不错,对于这种效果,像我这种好奇心强的人就会去看看那安卓是否
- 使用DataGridView控件绑定数据后有时需要清空绑定的数据,在清除DataGridView绑定的数据时:1、设置DataSource为
- 我们经常会使用springboot创建web应用,在springboot中金静态资源是如何存放的呢?静态资源映射规则我们先创建一个sprin
- Java 异步实现的几种方式1. jdk1.8之前的Futurejdk并发包里的Future代表了未来的某个结果,当我们向线程池中提交任务的