Android 关机界面添加重启菜单功能

来源:互联网 发布:gta5怎么优化 编辑:程序博客网 时间:2024/06/06 19:14

前言
         欢迎大家我分享和推荐好用的代码段~~
声明
         欢迎转载,但请保留文章原始出处:
         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);

    }


0 0