前言
欢迎大家我分享和推荐好用的代码段~~
声明
欢迎转载,但请保留文章原始出处:
CSDN:http://www.csdn.net
雨季o莫忧离:http://blog.csdn.net/luckkof
正文
长按power键,在弹出来的Global actions对话框中增加重启菜单,效果图如下:
如果需要添加重新启动菜单做重启手机的动作,可以参考如下步骤修改实现:
1、 在alps\frameworks\base\core\res\res\values\strings.xml 中添加标签:
<string name="zzzzz_global_action_power_reboot">Reboot</string>
用来显示重新启动菜单项的字符串资源,如果需要添加其他语言的标识,请在其他可替换资源的res folder下添加对应资源。
请注意,为了保证资源文件能够被编译进去,请同步将此资源添加到symbols.xml中。
2、 在alps\frameworks\base\core\res\res\drawable-hdpi中添加图标:
zzzzz_ic_lock_power_reboot.png
3、 在alps\frameworks\base\policy\src\com\android\internal\policy\impl\GlobalActions.java
文件中的createDialog()函数中添加:
Private GlobalActionsDialog createDialog(){
……
mItems = new ArrayList<Action>();
// first: power off
mItems.add(……);
/Added for reboot items start
mItems.add(
new SinglePressAction(
com.android.internal.R. zzzzz_ic_lock_power_reboot,
R.string.zzzzz_global_action_power_reboot) {
public void onPress() {
mWindowManagerFuncs.reboot(true);
}
public boolean onLongPress() {
mWindowManagerFuncs.rebootSafeMode(true);
return true;
}
public boolean showDuringKeyguard() {
return true;
}
public boolean showBeforeProvisioning() {
return true;
}
});
/added end
// next: airplane mode
mItems.add(mAirplaneModeOn);
……
}
4、 在frameworks\base\core\java\android\view\WindowManagerPolicy.java文件中,找到WindowManagerFuncs这个interface的定义,增加如下function的声明:
public interface WindowManagerFuncs {
public void reboot(boolean confirm);
}
5、 在Frameworks\base\services\java\com\android\server\wm\WindowManagerService.java中,因为其实现了WindowManagerFuncs这个接口,需要在该文件中添加reboot()函数的实现体。
找到shutdown()函数,在其后面添加reboot()函数,函数内容如下:
// Called by window manager policy. Not exposed externally.
@Override
public void reboot(boolean confirm) {
ShutdownThread.reboot(mContext, confirm);
}