New: XDA launches forum for app developers. Discuss coding, tools, marketing, and more.
XDA Developers Android and Mobile Development Forum
Forgot your password?
 
Post Reply+
Tip us?
 
tdunham
Old
(Last edited by tdunham; 15th March 2013 at 11:45 AM.)
#1  
tdunham's Avatar
Recognized Contributor - OP
Thanks Meter 8771
Posts: 5,285
Join Date: Jun 2008
Location: TampaBay
Cool [GUIDE][How-to] New Power Menu JB

This is based off of FL16/GB08 JB 4.1.2.

This will allow you to have Recovery and Bootloader (download mode) right in the Power Menu selections. I grew tired of the extended restart menu so I wrote this.

Framework-res.apk changes:

Add these lines to res/values/strings.xml

Code:
    <string name="download">Bootloader</string>
    <string name="recovery">Recovery</string>
Add the two png files in the attachment to:
res/drawable-hdpi

Recompile framework-res.apk.
Decompile the new framework-res.apk and open res/values/public.xml.
We need to write down these values because we need them later. Yours will probably be different. Leave off the leading zero:

Code:
    <public type="drawable" name="tw_ic_download" id="0x01080ad6" />
    <public type="drawable" name="tw_ic_recovery" id="0x01080ad7" />
    <public type="string" name="download" id="0x01040843" />
    <public type="string" name="recovery" id="0x01040844" />
Android.policy.jar changes:
Add the two smali files in the attachment to com\android\internal\policy\impl

Smali edit:
com\android\internal\policy\impl\GlobalActions.sma li

New line before:

Code:
.field private mDialog:Landroid/app/AlertDialog;

.field private mHandler:Landroid/os/Handler;
After:

Code:
.field private mDialog:Landroid/app/AlertDialog;

.field private mDownload:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;

.field private mHandler:Landroid/os/Handler;


New line before:

Code:
.field private mPowerOff:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;

.field private mRestart:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;
After:

Code:
.field private mPowerOff:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;

.field private mRecovery:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;

.field private mRestart:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;
Find around line 1075:

Code:
    .line 372
    new-instance v1, Lcom/android/internal/policy/impl/GlobalActions$4;

    const v2, 0x10808ee

    const v3, 0x1040192

    move-object/from16 v0, p0

    invoke-direct {v1, v0, v2, v3}, Lcom/android/internal/policy/impl/GlobalActions$4;-><init>(Lcom/android/internal/policy/impl/GlobalActions;II)V

    move-object/from16 v0, p0

    iput-object v1, v0, Lcom/android/internal/policy/impl/GlobalActions;->mPowerOff:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;
    .line 399
Add new lines after this section:
***NOTE THE LINES IN BLUE, THESE MUST MATCH THE VALUES WE GOT FROM FRAMEWORK (without the leading zero)***

Code:
    .line 372
    new-instance v1, Lcom/android/internal/policy/impl/GlobalActions$4;

    const v2, 0x10808ee

    const v3, 0x1040192

    move-object/from16 v0, p0

    invoke-direct {v1, v0, v2, v3}, Lcom/android/internal/policy/impl/GlobalActions$4;-><init>(Lcom/android/internal/policy/impl/GlobalActions;II)V

    move-object/from16 v0, p0

    iput-object v1, v0, Lcom/android/internal/policy/impl/GlobalActions;->mPowerOff:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;

    .line 399
    new-instance v1, Lcom/android/internal/policy/impl/GlobalActions$Download;

    const v2, 0x1080ad6

    const v3, 0x1040843

    move-object/from16 v0, p0

    invoke-direct {v1, v0, v2, v3}, Lcom/android/internal/policy/impl/GlobalActions$Download;-><init>(Lcom/android/internal/policy/impl/GlobalActions;II)V

    move-object/from16 v0, p0

    iput-object v1, v0, Lcom/android/internal/policy/impl/GlobalActions;->mDownload:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;

    .line 400
    new-instance v1, Lcom/android/internal/policy/impl/GlobalActions$Recovery;

    const v2, 0x1080ad7

    const v3, 0x1040844

    move-object/from16 v0, p0

    invoke-direct {v1, v0, v2, v3}, Lcom/android/internal/policy/impl/GlobalActions$Recovery;-><init>(Lcom/android/internal/policy/impl/GlobalActions;II)V

    move-object/from16 v0, p0

    iput-object v1, v0, Lcom/android/internal/policy/impl/GlobalActions;->mRecovery:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;

    .line 401
    new-instance v1, Lcom/android/internal/policy/impl/GlobalActions$5;
Now we are going to expand the existing array to include 2 more entries.

Around line 1138:

Before:

Code:
    .line 428
    const/4 v1, 0x5
After:

Code:
    .line 428
    const/4 v1, 0x7
Find around line 1137:

Code:
    iget-object v3, v0, Lcom/android/internal/policy/impl/GlobalActions;->mAirplaneModeOn:Lcom/android/internal/policy/impl/GlobalActions$ToggleAction;

    aput-object v3, v1, v2

    const/4 v2, 0x4

    move-object/from16 v0, p0

    iget-object v3, v0, Lcom/android/internal/policy/impl/GlobalActions;->mRestart:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;

    aput-object v3, v1, v2

    invoke-static {v1}, Lcom/google/android/collect/Lists;->newArrayList([Ljava/lang/Object;)Ljava/util/ArrayList;
Replace with:

Code:
    iget-object v3, v0, Lcom/android/internal/policy/impl/GlobalActions;->mAirplaneModeOn:Lcom/android/internal/policy/impl/GlobalActions$ToggleAction;

    aput-object v3, v1, v2

    const/4 v2, 0x4

    move-object/from16 v0, p0

    iget-object v3, v0, Lcom/android/internal/policy/impl/GlobalActions;->mDownload:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;

    aput-object v3, v1, v2

    const/4 v2, 0x5

    move-object/from16 v0, p0

    iget-object v3, v0, Lcom/android/internal/policy/impl/GlobalActions;->mRecovery:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;

    aput-object v3, v1, v2

    const/4 v2, 0x6

    move-object/from16 v0, p0

    iget-object v3, v0, Lcom/android/internal/policy/impl/GlobalActions;->mRestart:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;

    aput-object v3, v1, v2

    invoke-static {v1}, Lcom/google/android/collect/Lists;->newArrayList([Ljava/lang/Object;)Ljava/util/ArrayList;
How to remove menu items:
Smali edit:
com\android\internal\policy\impl\GlobalActions.sma li


We need to reconfigure the array that displays the options.

Before:

Code:
.line 428
    const/4 v1, 0x7

    new-array v1, v1, [Lcom/android/internal/policy/impl/GlobalActions$Action;

    const/4 v2, 0x0

    move-object/from16 v0, p0

    iget-object v3, v0, Lcom/android/internal/policy/impl/GlobalActions;->mAccessiblityShortcut:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;

    aput-object v3, v1, v2

    const/4 v2, 0x1

    move-object/from16 v0, p0

    iget-object v3, v0, Lcom/android/internal/policy/impl/GlobalActions;->mPowerOff:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;

    aput-object v3, v1, v2

    const/4 v2, 0x2

    move-object/from16 v0, p0

    iget-object v3, v0, Lcom/android/internal/policy/impl/GlobalActions;->mDataModeToggle:Lcom/android/internal/policy/impl/GlobalActions$ToggleAction;

    aput-object v3, v1, v2

    const/4 v2, 0x3

    move-object/from16 v0, p0

    iget-object v3, v0, Lcom/android/internal/policy/impl/GlobalActions;->mAirplaneModeOn:Lcom/android/internal/policy/impl/GlobalActions$ToggleAction;

    aput-object v3, v1, v2

    const/4 v2, 0x4

    move-object/from16 v0, p0

    iget-object v3, v0, Lcom/android/internal/policy/impl/GlobalActions;->mDownload:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;

    aput-object v3, v1, v2

    const/4 v2, 0x5

    move-object/from16 v0, p0

    iget-object v3, v0, Lcom/android/internal/policy/impl/GlobalActions;->mRecovery:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;

    aput-object v3, v1, v2

    const/4 v2, 0x6

    move-object/from16 v0, p0

    iget-object v3, v0, Lcom/android/internal/policy/impl/GlobalActions;->mRestart:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;

    aput-object v3, v1, v2

    invoke-static {v1}, Lcom/google/android/collect/Lists;->newArrayList([Ljava/lang/Object;)Ljava/util/ArrayList;

    move-result-object v1

    move-object/from16 v0, p0

    iput-object v1, v0, Lcom/android/internal/policy/impl/GlobalActions;->mItems:Ljava/util/ArrayList;
We need to split up the array so that we can easily see the different sections.
It will make it easier to modify the line you want to remove.

Code:
    .line 428
    const/4 v1, 0x7

    new-array v1, v1, [Lcom/android/internal/policy/impl/GlobalActions$Action;

    #	

    const/4 v2, 0x0

    move-object/from16 v0, p0

    iget-object v3, v0, Lcom/android/internal/policy/impl/GlobalActions;->mAccessiblityShortcut:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;

    aput-object v3, v1, v2

    #

    const/4 v2, 0x1

    move-object/from16 v0, p0

    iget-object v3, v0, Lcom/android/internal/policy/impl/GlobalActions;->mPowerOff:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;

    aput-object v3, v1, v2

    #

    const/4 v2, 0x2

    move-object/from16 v0, p0

    iget-object v3, v0, Lcom/android/internal/policy/impl/GlobalActions;->mDataModeToggle:Lcom/android/internal/policy/impl/GlobalActions$ToggleAction;

    aput-object v3, v1, v2

    #

    const/4 v2, 0x3

    move-object/from16 v0, p0

    iget-object v3, v0, Lcom/android/internal/policy/impl/GlobalActions;->mAirplaneModeOn:Lcom/android/internal/policy/impl/GlobalActions$ToggleAction;

    aput-object v3, v1, v2

    #

    const/4 v2, 0x4

    move-object/from16 v0, p0

    iget-object v3, v0, Lcom/android/internal/policy/impl/GlobalActions;->mDownload:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;

    aput-object v3, v1, v2

    #

    const/4 v2, 0x5

    move-object/from16 v0, p0

    iget-object v3, v0, Lcom/android/internal/policy/impl/GlobalActions;->mRecovery:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;

    aput-object v3, v1, v2

    #

    const/4 v2, 0x6

    move-object/from16 v0, p0

    iget-object v3, v0, Lcom/android/internal/policy/impl/GlobalActions;->mRestart:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;

    aput-object v3, v1, v2

    #

    invoke-static {v1}, Lcom/google/android/collect/Lists;->newArrayList([Ljava/lang/Object;)Ljava/util/ArrayList;

    move-result-object v1

    move-object/from16 v0, p0

    iput-object v1, v0, Lcom/android/internal/policy/impl/GlobalActions;->mItems:Ljava/util/ArrayList;

Now we will remove the Data Network Mode and Airplane Mode choices from the menu. We need to shrink the array by 2 and also renumber the remaining options. Please note the changes in red.

Code:
    .line 428
    const/4 v1, 0x5

    new-array v1, v1, [Lcom/android/internal/policy/impl/GlobalActions$Action;

    #	

    const/4 v2, 0x0

    move-object/from16 v0, p0

    iget-object v3, v0, Lcom/android/internal/policy/impl/GlobalActions;->mAccessiblityShortcut:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;

    aput-object v3, v1, v2

    #

    const/4 v2, 0x1

    move-object/from16 v0, p0

    iget-object v3, v0, Lcom/android/internal/policy/impl/GlobalActions;->mPowerOff:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;

    aput-object v3, v1, v2

    #

    # const/4 v2, 0x2

    # move-object/from16 v0, p0

    # iget-object v3, v0, Lcom/android/internal/policy/impl/GlobalActions;->mDataModeToggle:Lcom/android/internal/policy/impl/GlobalActions$ToggleAction;

    # aput-object v3, v1, v2

    #

    # const/4 v2, 0x3

    # move-object/from16 v0, p0

    # iget-object v3, v0, Lcom/android/internal/policy/impl/GlobalActions;->mAirplaneModeOn:Lcom/android/internal/policy/impl/GlobalActions$ToggleAction;

    # aput-object v3, v1, v2

    #

    const/4 v2, 0x2

    move-object/from16 v0, p0

    iget-object v3, v0, Lcom/android/internal/policy/impl/GlobalActions;->mDownload:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;

    aput-object v3, v1, v2

    #

    const/4 v2, 0x3

    move-object/from16 v0, p0

    iget-object v3, v0, Lcom/android/internal/policy/impl/GlobalActions;->mRecovery:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;

    aput-object v3, v1, v2

    #

    const/4 v2, 0x4

    move-object/from16 v0, p0

    iget-object v3, v0, Lcom/android/internal/policy/impl/GlobalActions;->mRestart:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;

    aput-object v3, v1, v2

    #

    invoke-static {v1}, Lcom/google/android/collect/Lists;->newArrayList([Ljava/lang/Object;)Ljava/util/ArrayList;

    move-result-object v1

    move-object/from16 v0, p0

    iput-object v1, v0, Lcom/android/internal/policy/impl/GlobalActions;->mItems:Ljava/util/ArrayList;
Attached Thumbnails
Click image for larger version

Name:	2013-01-07 06.42.09.jpg
Views:	2313
Size:	27.4 KB
ID:	1689056   Click image for larger version

Name:	2013-01-31 07.43.31.jpg
Views:	1786
Size:	24.4 KB
ID:	1691847  
Attached Files
File Type: zip New Power Menu.zip - [Click for QR Code] (12.9 KB, 648 views)
SPH-D710
Kobridge GB08/GB27 Stock Deodexed ROM and JB Mods
GB27 All in One Mod Thread
(ROM, Tweaks, Mods & additional Links)
The Following 29 Users Say Thank You to tdunham For This Useful Post: [ Click to Expand ]
 
tdunham
Old
#2  
tdunham's Avatar
Recognized Contributor - OP
Thanks Meter 8771
Posts: 5,285
Join Date: Jun 2008
Location: TampaBay
OP updated with new section.
How to remove options from Power Menu. Screenshot attached with modification.
SPH-D710
Kobridge GB08/GB27 Stock Deodexed ROM and JB Mods
GB27 All in One Mod Thread
(ROM, Tweaks, Mods & additional Links)
The Following 5 Users Say Thank You to tdunham For This Useful Post: [ Click to Expand ]
 
Mirko ddd
Old
#3  
Mirko ddd's Avatar
Recognized Contributor / Recognized Developer
Thanks Meter 4496
Posts: 1,394
Join Date: Nov 2010
Location: Piazza Armerina

 
DONATE TO ME
thx buddy, i will look into asap.
NICOLA SAVED ME!

If I helped you and/or you like my rom consider a small donation and/or join Disaster Family on Facebook
I DON'T ANSWER ON PM ABOUT ROM/MODDING STUFFS

 
Zero Night
Old
#4  
Zero Night's Avatar
Senior Member
Thanks Meter 191
Posts: 337
Join Date: May 2012
Location: Under Your Bed
Looks Nice
 
PanchoPlanet
Old
#5  
PanchoPlanet's Avatar
Senior Member
Thanks Meter 527
Posts: 1,930
Join Date: Oct 2011
Location: Crooklyn

 
DONATE TO ME
Default Re: [GUIDE][How-to] New Power Menu JB

So those the zip replace all the script changes in the op?

Not sure, changes to script+zip - or just zip to get new power menu?

Pp.:beer:

sent from a jellybean filled epic touch.
Sent from my Ginger infused Asus G73. (Kobridge GB27Deodex / Tdunham's AIO v.3.0).
 
tdunham
Old
#6  
tdunham's Avatar
Recognized Contributor - OP
Thanks Meter 8771
Posts: 5,285
Join Date: Jun 2008
Location: TampaBay
Default Re: [GUIDE][How-to] New Power Menu JB

Quote:
Originally Posted by PanchoPlanet View Post
So those the zip replace all the script changes in the op?

Not sure, changes to script+zip - or just zip to get new power menu?

Pp.:beer:

sent from a jellybean filled epic touch.
The zip contains extra support files that need to be added to the classes.dex file before it gets recompiled. So yes, the last part of what you said.
And also a couple files for the framework edit are in the zip too.
Sent from my SPH-D710 using xda premium
SPH-D710
Kobridge GB08/GB27 Stock Deodexed ROM and JB Mods
GB27 All in One Mod Thread
(ROM, Tweaks, Mods & additional Links)
The Following 2 Users Say Thank You to tdunham For This Useful Post: [ Click to Expand ]
 
Samsung Fanboy
Old
#7  
Samsung Fanboy's Avatar
Senior Member
Thanks Meter 34
Posts: 105
Join Date: Dec 2012
Default Re: [GUIDE][How-to] New Power Menu JB

This thread got mentioned on Google+, keep up the good work!



Sent from my SPH-D710 using Xparent Skyblue Tapatalk 2
The Following 2 Users Say Thank You to Samsung Fanboy For This Useful Post: [ Click to Expand ]
 
Dzol Cp
Old
#8  
Dzol Cp's Avatar
Recognized Contributor
Thanks Meter 1338
Posts: 937
Join Date: Jan 2012
Location: TB/BF Penang
Great Job!!
Gonna try this awesomenesssss..



 

>>>>>MY WORK'S LINK<<<<<
>>>>>MY DEV-HOST<<<<<
>>>>>MY MEDIAFIRE<<<<<
>>>>>MY DROPBOX<<<<<
 
tdunham
Old
#9  
tdunham's Avatar
Recognized Contributor - OP
Thanks Meter 8771
Posts: 5,285
Join Date: Jun 2008
Location: TampaBay
Quote:
Originally Posted by Samsung Fanboy View Post
This thread got mentioned on Google+, keep up the good work!


Thanks for keeping an eye out for me.
Yes, another very well written writeup by Egzthunder1.

http://www.xda-developers.com/androi...epic-4g-touch/
SPH-D710
Kobridge GB08/GB27 Stock Deodexed ROM and JB Mods
GB27 All in One Mod Thread
(ROM, Tweaks, Mods & additional Links)
The Following User Says Thank You to tdunham For This Useful Post: [ Click to Expand ]
 
Benzonat0r
Old
#10  
Benzonat0r's Avatar
Senior Member
Thanks Meter 638
Posts: 813
Join Date: Sep 2009
Very nice, I did that on my Galaxy S3 Mini and works great.
It's harder to understand women than Android and Kernels.

My devices: GT-I9100, GT-I8190, GT-S5570

Just call me Benz