[REF] How to add Reboot to power menu (updated 10/21/2010)

this is the final method that will add reboot,recovery and download options
to the power menu updated 10/21/2010

================================================== ==========
Step 1.

the first thing we need to do is add string and image resources to framwork-res
for this example I am using a stock JI6 ROM your resource id's will be different
if on another ROM


use apk_manager to decompile framework-res

open "values\strings.xml" and add our string resources

Code:
Recovery

Download

Reboot
save and close

open "values\public.xml" and assign our strings resource id's

scroll until you get to the end of the " note the id of the last string, in this example it is "10403c2" sometimes
the id's are out of order so search for "10403c2 + 1" or "10403c3"
if the next id is unused then we can start assigning id's to the strings
we added.

Code:




now is a good time to add the image resources so add your icons to
"res\drawable-hdpi"
and assign id's to them the same way we did for the strings
in this example, using the example icons in the zip file I had

Code:




save and close

now framework-res has the resources needed for this mod use
apk_manager to compile.

================================================== ==========
Step 2.

next we need to modify Samsung's shutdown method to accept 3 more options
so decompile framework and open "com\android\internal\app\ShutdownThread.smali "

since we are going to pass an integer to ShutdownThread and then evaluate
that integer when the code runs we have to have a spot for the integer so
add this to line 37

Code:
.field public static mReboot:I
then in method run at line 1463 add this code before "invoke-static {}, Landroid/os/Power;->shutdown()V"

Code:
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
then after this code on about line 1477

Code:
.line 531

invoke-static {}, Landroid/os/Power;->shutdown()V



.line 532

return-void
add this code

Code:
: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
save and close

compile framework

================================================== ==========
Step 3.

now we are going to add the extra options to the power menu

decompile android.policy

open "com\android\internal\policy\impl\GlobalActions.sm ali"

the first thing that we need to do is increase the array length by 3
so in method createDialog on line 431 change this

Code:
const/4 v0, 0x3



new-array v0, v0, [Lcom/android/internal/policy/impl/GlobalActions$Action;
to this

Code:
const/4 v0, 0x6



new-array v0, v0, [Lcom/android/internal/policy/impl/GlobalActions$Action;
now add the new menu items this is where the resource id's that we added
to framework-res com into play so on line 457 after "aput-object v2, v0, v1"
add this code

Code:
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
make sure to change the resource id's to match what you added to to framework-res

save and close

next add the code that runs when the menu item is pressed

copy GlobalActions$3.smali and name it GlobalActions$7.smali
open GlobalActions$7 and replace all instances of GlobalActions$3
with GlobalActions$7 then add this code to line 52 before
"invoke-static {v0, v1}, Lcom/android/internal/app/ShutdownThread;->shutdown(Landroid/content/Context;Z)V"

Code:
const/4 v2, 0x1



sput v2, Lcom/android/internal/app/ShutdownThread;->mReboot:I
save and close

copy GlobalActions$3.smali and name it GlobalActions$8.smali
open GlobalActions$8 and replace all instances of GlobalActions$3
with GlobalActions$8 then add this code to line 52 before
"invoke-static {v0, v1}, Lcom/android/internal/app/ShutdownThread;->shutdown(Landroid/content/Context;Z)V"

Code:
const/4 v2, 0x2



sput v2, Lcom/android/internal/app/ShutdownThread;->mReboot:I
save and close

copy GlobalActions$3.smali and name it GlobalActions$9.smali
open GlobalActions$9 and replace all instances of GlobalActions$3
with GlobalActions$9 then add this code to line 52 before
"invoke-static {v0, v1}, Lcom/android/internal/app/ShutdownThread;->shutdown(Landroid/content/Context;Z)V"

Code:
const/4 v2, 0x3



sput v2, Lcom/android/internal/app/ShutdownThread;->mReboot:I
save and close

compile android.policy

done test on the phone.

flash the attached update.zip with the stock updater.

0 comments:

Post a Comment

Open Panel

Blogroll

counter