在关机dialog添加reboot功能

本文深入分析了Android手机第三方固件中reboot功能的实现方式,通过修改GlobalActions.java文件,添加了reboot功能,并详细解释了其代码逻辑。在dialog的最后一项实现了reboot功能,当用户按下该选项时,系统将执行重启操作,支持在锁定屏幕和预安装阶段显示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

android手机有很多的第三方固件,其中有不少固件中有reboot的功能,这个功能是如何实现的呢?我这里会做一个简单的示例。先看一个效果图吧!

 

 

     如图在dialog中的最后一项是reboot功能。下面看看代码是怎么修改的:

文件路径: frameworks/policies/base/phone/com/android/internal/policy/impl/GlobalActions.java   


private AlertDialog createDialog() {
        ....
        mItems = Lists.newArrayList(
                // silent mode
                mSilentModeToggle,
                // next: airplane mode
                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 ;
                    }
                },
              // this is add code
              // last: reboot
              new SinglePressAction(
                    com.android.internal.R.drawable.ic_lock_power_off,
                    R.string.global_action_reboot) {

                    public void onPress() {
                        // shutdown by making sure radio and power are handled accordingly.
                        ShutdownThread.reboot(mContext, "" , true );
                    }

                    public boolean showDuringKeyguard() {
                        return true ;
                    }

                    public boolean showBeforeProvisioning() {
                        return true ;
                    }
                });

        mAdapter = new MyAdapter();

        ....
        return dialog;
    }


      代码中ShutdownThread.reboot()方法有三个参数其中第二个参数是一个String,如果这个String是NULL的话,就是正常重启,如果是recovery,系统重启进入recovery mode。R.string.global_action_reboot是我在系统资源文件中添加的字符串。呵呵是不是很简单阿!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值