我可以: 邀请好友来看>>
ZOL星空(中国) > 手机星空(中国) > 联想手机星空(中国) > 联想A668t星空(中国) > 教你如何在关机菜单里添加重启键
帖子很冷清,卤煮很失落!求安慰
返回列表
签到
手机签到经验翻倍!
快来扫一扫!

教你如何在关机菜单里添加重启键

369浏览 / 4回复

a668ta

a668ta

1
精华
24
帖子

等  级:Lv.1
经  验:234
  • Z金豆: 0

    千万礼品等你来兑哦~快点击这里兑换吧~

  • 城  市:
  • 注  册:2012-08-24
  • 登  录:2015-01-10
发表于 2013-07-25 22:48:08
电梯直达 确定
楼主
回复赚个金币啊

第一步



添加字符串


首先反编译framework-res.apk


打开valuesstrings.xml,然后在里面加上



  • Recovery
  • Download
  • Reboot

复制代码



保存,关闭



第二步



打开valuespublic.xml,分配刚刚加上去的字符串id



具体做法是,翻到文件最后,查看最后一个字符串的id,假设为10403c2,搜索10403c3,看看是否已经有此id了,没有的话,添加代码





复制代码



如果有,可以继续搜10403c4······



第三步



现在可以在图片资源文件夹(resdrawable-hdpi,resdrawable-mdpi,resdrawable-ldpi)加上自己喜欢的图标了


为了方便,以下规定图标名字为reboot.png recovery.png download.png


实际上,大家可以自己命名图标名字



然后



为刚刚加上的图标和刚刚分配的id连接起来



打开valuespublic.xml,继续添加代码




复制代码



保存,关闭



现在framework-res.apk文件弄好了,剩下的编译就不用多说了



接下来弄另外一个文件framework.jar


目的是使关机选项有作用,能重启



反编译framework.jar(方法自己

百度



打开comandroidinternalappShutdownThread.smali



在第37行添加代码


  • .field public static mReboot:I

复制代码



然后,转到第1463行,注意,此行前一个代码应该是"invoke-static {}, Landroid/os/Power;->shutdown()V"



在此行添加代码



  • sget v1, Lcom/android/internal/app/ShutdownThread;->mReboot:I
  • const/4 v2, 0x1
  • if-eq v1, v2, :reboot
  • const/4 v2, 0x2
  • if-eq v1, v2, :rebootRecovery
  • const/4 v2, 0x3
  • if-eq v1, v2, :rebootDownload

复制代码



然后在1477行


  • .line 531
  • invoke-static {}, Landroid/os/Power;->shutdown()V
  • .line 532
  • return-void

复制代码



继续添加代码



  • :reboot
  • const-string v4, "now"
  • invoke-static {v4}, Landroid/os/Power;->reboot(Ljava/lang/String;)V
  • return-void
  • :rebootRecovery
  • const-string v4, "recovery"
  • invoke-static {v4}, Landroid/os/Power;->reboot(Ljava/lang/String;)V
  • return-void
  • :rebootDownload
  • const-string v4, "download"
  • invoke-static {v4}, Landroid/os/Power;->reboot(Ljava/lang/String;)V
  • return-void

复制代码



保存,关闭



之后将framework.jar编译回来(方法百度)



接下来我们要在电源菜单中添加选项



反编译android.policy.jar



打开comandroidinternalpolicyimplGlobalActions.smali



第一件事就是将数组长度增加3



方法是将第431行的代码



  • const/4 v0, 0x3
  • new-array v0, v0, [Lcom/android/internal/policy/impl/GlobalActions$Action;

复制代码



改为


  • const/4 v0, 0x6
  • new-array v0, v0, [Lcom/android/internal/policy/impl/GlobalActions$Action;

复制代码



然后,在第457行,也就是在 aput-object v2, v0, v1 之后



添加代码



  •     const/4 v1, 0x3
  •     new-instance v2, Lcom/android/internal/policy/impl/GlobalActions$7;
  •     const v3, 0x10803aa # reboot icon resource id
  •     const v4, 0x10403c5 # reboot string resource id
  •     invoke-direct {v2, p0, v3, v4}, Lcom/android/internal/policy/impl/GlobalActions$7;->(Lcom/android/internal/policy/impl/GlobalActions;II)V
  •     aput-object v2, v0, v1
  •     const/4 v1, 0x4
  •     new-instance v2, Lcom/android/internal/policy/impl/GlobalActions$8;
  •     const v3, 0x10803ab # recovery icon resource id
  •     const v4, 0x10403c3 # recovery string resource id
  •     invoke-direct {v2, p0, v3, v4}, Lcom/android/internal/policy/impl/GlobalActions$8;->(Lcom/android/internal/policy/impl/GlobalActions;II)V
  •     aput-object v2, v0, v1
  •     const/4 v1, 0x5
  •     new-instance v2, Lcom/android/internal/policy/impl/GlobalActions$9;
  •     const v3, 0x10803ac # download icon resource id
  •     const v4, 0x10403c4 # download string resource id
  •     invoke-direct {v2, p0, v3, v4}, Lcom/android/internal/policy/impl/GlobalActions$9;->(Lcom/android/internal/policy/impl/GlobalActions;II)V
  •     aput-object v2, v0, v1

复制代码



确保id与刚刚在framework-res.apk中添加的id名称一致



保存,关闭



接下来确保你添加的重启选项可用



复制GlobalActions$3.smali 并且重命名为GlobalActions$7.smali


打开GlobalActions$7.smali 替换所有GlobalActions$3.smali 的实例



然后转到52行,52行前面的代码应该是


"invoke-static {v0, v1}, Lcom/android/internal/app/ShutdownThread;->shutdown(Landroid/content/Context;Z)V"



添加代码


  • const/4 v2, 0x1
  • sput v2, Lcom/android/internal/app/ShutdownThread;->mReboot:I

复制代码



保存,关闭



接下来


复制GlobalActions$3.smali 并命名为GlobalActions$9.smali


打开GlobalActions$9.smali 替换所有GlobalActions$3.smali 实例


同样转到第52行,52行前面应该是"invoke-static {v0, v1}, Lcom/android/internal/app/ShutdownThread;->shutdown(Landroid/content/Context;Z)V



添加代码


  • const/4 v2, 0x3
  • sput v2, Lcom/android/internal/app/ShutdownThread;->mReboot:I

复制代码



保存,关闭



将android.policy.jar编译回来



ok,试试效果吧

联想A668t

参考价: ¥550.00

19

14

7

1

3

1

20

评分:+Z金豆 10  已有 1人参与评分

a668ta

a668ta


精华

帖子

等  级:Lv.1
经  验:234
发表于 2013-07-25 22:57:25 1楼
第一步


添加字符串

首先反编译framework-res.apk

打开valuesstrings.xml,然后在里面加上


Recovery
Download
Reboot

复制代码


保存,关闭


第二步


打开valuespublic.xml,分配刚刚加上去的字符串id


具体做法是,翻到文件最后,查看最后一个字符串的id,假设为10403c2,搜索10403c3,看看是否已经有此id了,没有的话,添加代码






复制代码


如果有,可以继续搜10403c4······


第三步


现在可以在图片资源文件夹(resdrawable-hdpi,resdrawable-mdpi,resdrawable-ldpi)加上自己喜欢的图标了

为了方便,以下规定图标名字为reboot.png recovery.png download.png

实际上,大家可以自己命名图标名字


然后


为刚刚加上的图标和刚刚分配的id连接起来


打开valuespublic.xml,继续添加代码





复制代码


保存,关闭


现在framework-res.apk文件弄好了,剩下的编译就不用多说了


接下来弄另外一个文件framework.jar

目的是使关机选项有作用,能重启


反编译framework.jar(方法自己
百度



打开comandroidinternalappShutdownThread.smali


在第37行添加代码

.field public static mReboot:I

复制代码


然后,转到第1463行,注意,此行前一个代码应该是"invoke-static {}, Landroid/os/Power;->shutdown()V"


在此行添加代码


sget v1, Lcom/android/internal/app/ShutdownThread;->mReboot:I
const/4 v2, 0x1
if-eq v1, v2, :reboot
const/4 v2, 0x2
if-eq v1, v2, :rebootRecovery
const/4 v2, 0x3
if-eq v1, v2, :rebootDownload

复制代码


然后在1477行

.line 531
invoke-static {}, Landroid/os/Power;->shutdown()V
.line 532
return-void

复制代码


继续添加代码


:reboot
const-string v4, "now"
invoke-static {v4}, Landroid/os/Power;->reboot(Ljava/lang/String;)V
return-void
:rebootRecovery
const-string v4, "recovery"
invoke-static {v4}, Landroid/os/Power;->reboot(Ljava/lang/String;)V
return-void
:rebootDownload
const-string v4, "download"
invoke-static {v4}, Landroid/os/Power;->reboot(Ljava/lang/String;)V
return-void

复制代码


保存,关闭


之后将framework.jar编译回来(方法百度)


接下来我们要在电源菜单中添加选项


反编译android.policy.jar


打开comandroidinternalpolicyimplGlobalActions.smali


第一件事就是将数组长度增加3


方法是将第431行的代码


const/4 v0, 0x3
new-array v0, v0, [Lcom/android/internal/policy/impl/GlobalActions$Action;

复制代码


改为

const/4 v0, 0x6
new-array v0, v0, [Lcom/android/internal/policy/impl/GlobalActions$Action;

复制代码


然后,在第457行,也就是在 aput-object v2, v0, v1 之后


添加代码


const/4 v1, 0x3
new-instance v2, Lcom/android/internal/policy/impl/GlobalActions$7;
const v3, 0x10803aa # reboot icon resource id
const v4, 0x10403c5 # reboot string resource id
invoke-direct {v2, p0, v3, v4}, Lcom/android/internal/policy/impl/GlobalActions$7;->(Lcom/android/internal/policy/impl/GlobalActions;II)V
aput-object v2, v0, v1
const/4 v1, 0x4
new-instance v2, Lcom/android/internal/policy/impl/GlobalActions$8;
const v3, 0x10803ab # recovery icon resource id
const v4, 0x10403c3 # recovery string resource id
invoke-direct {v2, p0, v3, v4}, Lcom/android/internal/policy/impl/GlobalActions$8;->(Lcom/android/internal/policy/impl/GlobalActions;II)V
aput-object v2, v0, v1
const/4 v1, 0x5
new-instance v2, Lcom/android/internal/policy/impl/GlobalActions$9;
const v3, 0x10803ac # download icon resource id
const v4, 0x10403c4 # download string resource id
invoke-direct {v2, p0, v3, v4}, Lcom/android/internal/policy/impl/GlobalActions$9;->(Lcom/android/internal/policy/impl/GlobalActions;II)V
aput-object v2, v0, v1

复制代码


确保id与刚刚在framework-res.apk中添加的id名称一致


保存,关闭


接下来确保你添加的重启选项可用


复制GlobalActions$3.smali 并且重命名为GlobalActions$7.smali

打开GlobalActions$7.smali 替换所有GlobalActions$3.smali 的实例


然后转到52行,52行前面的代码应该是

"invoke-static {v0, v1}, Lcom/android/internal/app/ShutdownThread;->shutdown(Landroid/content/Context;Z)V"


添加代码

const/4 v2, 0x1
sput v2, Lcom/android/internal/app/ShutdownThread;->mReboot:I

复制代码


保存,关闭


接下来

复制GlobalActions$3.smali 并命名为GlobalActions$9.smali

打开GlobalActions$9.smali 替换所有GlobalActions$3.smali 实例

同样转到第52行,52行前面应该是"invoke-static {v0, v1}, Lcom/android/internal/app/ShutdownThread;->shutdown(Landroid/content/Context;Z)V


添加代码

const/4 v2, 0x3
sput v2, Lcom/android/internal/app/ShutdownThread;->mReboot:I

复制代码


保存,关闭


将android.policy.jar编译回来


ok,试试效果吧















































































































































kulein

kulein


精华

帖子

等  级:Lv.2
经  验:487
发表于 2013-07-26 14:28:07 2楼
太复杂了。。所以我只看看。。

qq1055240780

qq1055240780


精华

帖子

等  级:Lv.1
经  验:182
发表于 2013-10-20 21:58:18 3楼
有成品吗 ~ 好复杂啊

z275176629

z275176629


精华

帖子

等  级:Lv.1
经  验:62
发表于 2014-02-06 20:02:37 4楼
太有深度了,完全不懂原理,只知道改法
高级模式
星空(中国)精选大家都在看24小时热帖7天热帖大家都在问最新回答

针对ZOL星空(中国)您有任何使用问题和建议 您可以 联系星空(中国)管理员查看帮助  或  给我提意见

快捷回复 APP下载 返回列表