Android 关机弹出选择菜单

在Android系统中,长按Power键默认会弹出对话框让你选择“飞行模式”,“静音”,“关机”等功能.这些功能对于手机非常适用,但是对于机顶盒产品就没有什么必要了.本文简单介绍一下怎样定制关机界面.

  我的目标是长按Power键,将会关机,弹出“设备将要关机”选择对话框.如果可以选择“是”关机,和“否”返回系统.

  弹出对话框的代码位于:
  frameworks\policies\base\phone\com\android\internal\policy\impl\PhoneWindowManager.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方法中,有如下代码:

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的代码,最终代码如下:

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); 
} 

};

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
以下是使用Android Studio创建弹出菜单的步骤和示例代码: 1. 在res目录下创建menu文件夹,然后在该文件夹下创建一个menu资源文件,例如menu_popup.xml。 2. 在menu_popup.xml文件中添加菜单项,例如: ```xml <menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/menu_item1" android:title="菜单项1" /> <item android:id="@+id/menu_item2" android:title="菜单项2" /> <item android:id="@+id/menu_item3" android:title="菜单项3" /> </menu> ``` 3. 在需要弹出菜单的View上注册上下文菜单,例如: ```java // 注册上下文菜单 registerForContextMenu(view); ``` 4. 重写Activity的onCreateContextMenu()方法,例如: ```java @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) { super.onCreateContextMenu(menu, v, menuInfo); getMenuInflater().inflate(R.menu.menu_popup, menu); } ``` 5. 重写Activity的onContextItemSelected()方法,例如: ```java @Override public boolean onContextItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.menu_item1: // 处理菜单项1的点击事件 return true; case R.id.menu_item2: // 处理菜单项2的点击事件 return true; case R.id.menu_item3: // 处理菜单项3的点击事件 return true; default: return super.onContextItemSelected(item); } } ``` 6. 运行程序,长按需要弹出菜单的View即可看到弹出菜单。 --相关问题--: 1. 如何在Android Studio中创建菜单资源文件? 2. 如何在Android中创建上下文菜单? 3.

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值