[TUTORIAL][JB/KK] how to add reboot , recovery and bootloader options in Power menu

Search This thread

sandy7

Inactive Recognized Developer
May 28, 2012
6,214
6,843
34
bangalore
So lets Start

Required
1-apktool
2-notepad++
3-some brains







REBOOT OPTIONS KK 4.4.2

USE THE RESOURCES ATTACHED BELOW (IF U HAVE ANY PROBLEMS DE/RECOMPILING ANDROID.POLICY.JAR USE THE smali.jar and backsmali.jar attached in the below resources)

framework-res.apk
-----------------

1 - Add to strings.xml:
Code:
	<string name="reboot">@string/factorytest_reboot</string>
    <string name="reboot_normal">@string/factorytest_reboot</string>
	<string name="reboot_recovery">Recovery</string>
    <string name="reboot_bootloader">Bootloader</string>



2 - Add to arrays.xml:

Code:
	<string-array name="reboot_options">
        <item>@string/reboot_normal</item>
        <item>@string/reboot_recovery</item>
        <item>@string/reboot_bootloader</item>
    </string-array>
    <string-array name="reboot_actions">
        <item>now</item>
        <item>recovery</item>
        <item>bootloader</item>
    </string-array>


3 - Add under \res\drawable-xxhdpi\ folder:

ic_lock_reboot.png


4 - Compile framework-res.apk



android.policy.jar
------------------

1 - Edit:

\com\android\internal\policy\impl\GlobalActions.smali

...LOOK FOR...

Code:
	.line 252
    .local v9, "quickbootEnabled":Z
    :goto_3d
    iget-object v0, p0, Lcom/android/internal/policy/impl/GlobalActions;->mItems:Ljava/util/ArrayList;

    new-instance v1, Lcom/android/internal/policy/impl/GlobalActions$2;

    const v2, 0x1080030

    const v3, 0x10400cb

    invoke-direct {v1, p0, v2, v3, v9}, Lcom/android/internal/policy/impl/GlobalActions$2;-><init>(Lcom/android/internal/policy/impl/GlobalActions;IIZ)V

    invoke-virtual {v0, v1}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
	
[COLOR="Red"]
    .line 282
    iget-object v0, p0, Lcom/android/internal/policy/impl/GlobalActions;->mItems:Ljava/util/ArrayList;

    new-instance v1, Lcom/android/internal/policy/impl/GlobalActions$12;

    const v2, 0x108094c           ----- HEX ID OF ic_lock_reboot.png ( make sure to change the hex id comparing ur Public xml  )
    const v3, 0x10407e8          ----- HEX ID OF reboot STRING ( make sure to change the hex id comparing ur Public xml  )

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

    invoke-virtual {v0, v1}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z[/COLOR]

    .line 283
    iget-object v0, p0, Lcom/android/internal/policy/impl/GlobalActions;->mItems:Ljava/util/ArrayList;

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

    invoke-virtual {v0, v1}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
2 - Add these three new files:

GlobalActions$12$1.smali
GlobalActions$12$2.smali
GlobalActions$12.smali


3 - Done !!




FOR JB 4.3​




Before u decompile anything see this Guide by @erorcun for how to compile a JB framework without bootloop..
http://xdaforums.com/showthread.php?t=2321207



STEP-1

Decompile Framework-res.apk

goto to res/vlaues/arrays.xml

and add these lines at the end

Code:
    <string-array name="reboot_options">
        <item>@string/reboot_normal</item>
        <item>@string/reboot_recovery</item>
        <item>@string/reboot_bootloader</item>
    </string-array>
    <string-array name="reboot_actions">
        <item>now</item>
        <item>recovery</item>
        <item>bootloader</item>
    </string-array>


now goto res/values/strings
and add these lines at the end


Code:
    <string name="reboot">Reboot</string>
    <string name="reboot_normal">Reboot</string>
    <string name="reboot_recovery">Recovery</string>
    <string name="reboot_bootloader">Bootloader</string>


goto add the ic_lock_reboot.png which i have i provided in the resources attached below this post to drawablw-hdpi folder

so before compiling the framework-res.apk follow erorcun's guide to properly recompile framework-res.apk

once recompile is done ....decompile again to get the HEX ID's

STEP-2

decompile android.policy.jar

goto classout\com\android\internal\policy\impl

and add the 3 smali's files which i provided in the resources attached below

Now option classout\com\android\internal\policy\impl\GlobalActions.smali

and find these lines and add the red marked lines between them

Code:
    .line 235
    iget-object v0, p0, Lcom/android/internal/policy/impl/GlobalActions;->mItems:Ljava/util/ArrayList;

    new-instance v1, Lcom/android/internal/policy/impl/GlobalActions$2;

    const v2, 0x1080030

    const v3, 0x10400fa

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

    invoke-virtual {v0, v1}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z

[COLOR="Red"]    .line 213
    move-object/from16 v0, p0

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

    new-instance v2, Lcom/android/internal/policy/impl/GlobalActions$11;

    const v3, 0x1080827

    const v4, 0x104060b

    move-object/from16 v0, p0

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

    invoke-virtual {v1, v2}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z[/COLOR]

    .line 260
    iget-object v0, p0, Lcom/android/internal/policy/impl/GlobalActions;->mItems:Ljava/util/ArrayList;

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

    invoke-virtual {v0, v1}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z


now we need to assign the Hex id's as per ur Public.xml

NOTE: the hex id's might be different from mine and yours so be careful while comparing

new as per the above changes in GlobalActions.xml

assign the id's as below

<public type="drawable" name="ic_lock_reboot" id="0x01080827" />

Code:
 new-instance v2, Lcom/android/internal/policy/impl/GlobalActions$11;

    const v3, 0x[COLOR="red"]1080827[/COLOR]


<public type="string" name="reboot" id="0x0104060b" />

Code:
new-instance v2, Lcom/android/internal/policy/impl/GlobalActions$11;

    const v3, 0x1080827

    const v4, 0x[COLOR="red"]104060b[/COLOR]



Now option up classout\com\android\internal\policy\impl\GlobalActions$11.smali

find and replace the following

@line 70
<public type="string" name="reboot" id="0x0104060b" />


Code:
const v3, 0x[COLOR="red"]104060b[/COLOR]


@line 90
<public type="array" name="reboot_options" id="0x0107003b" />


Code:
const v3, 0x[COLOR="red"]107003b[/COLOR]


@line 105
<public type="string" name="ok" id="0x0104000a" />



Code:
  const v2, 0x[COLOR="red"]104000a[/COLOR]


@line 147
<public type="bool" name="config_sf_slowBlur" id="0x0111000b" />


Code:
const v3, 0x[COLOR="red"]111000b[/COLOR]


now open up classout\com\android\internal\policy\impl\GlobalActions$11$2.smali

@line 59
<public type="array" name="reboot_actions" id="0x0107003c" />


Code:
const v2, 0x[COLOR="red"]107003c[/COLOR]


save it and recompile android.policy.jar


now push all the files into ut phone...will have the new Advanced reboot options


CREDITS

@serajr --- my smali teacher :D
@auras76 -- for testing this method will work or not​
 

Attachments

  • reboot_option_resources.rar
    4.5 KB · Views: 887
  • Jar_Decompile_Compile.zip
    1.5 MB · Views: 442
Last edited:

Pangkoy08

Senior Member
Mar 2, 2013
439
162
Deep South
Inquiry...

I've tried and followed this instructions to a reboot to recovery.

I was able to recompile it after i've added the strings in strings.xml and the hdpi and xhdpi, However, when I decompiled it again to get the hex id it is giving me an error would you mind telling me what i've missed out?

Here is the log.

Decompiling "framework-res.apk"
With Tickle My Android
(tinyurl.com\ticklemyandroid)

----------------

I: Loading resource table...
I: Loaded.
I: Decoding AndroidManifest.xml with resources...
I: Loading resource table from file: C:\Users\Francis\apktool\framework\1.apk
W: Could not decode attr value, using undecoded value instead: ns=android, name=sharedUserId, value=0x00000020
Exception in thread "main" java.lang.NullPointerException
at java.io.Writer.write(Unknown Source)
at brut.androlib.res.util.ExtMXSerializer.writeAttrib uteValue(ExtMXSerializer.java:38)
at org.xmlpull.mxp1_serializer.MXSerializer.attribute (MXSerializer.java:673)
at org.xmlpull.v1.wrapper.classic.XmlSerializerDelega te.attribute(XmlSerializerDelegate.java:106)
at org.xmlpull.v1.wrapper.classic.StaticXmlSerializer Wrapper.writeStartTag(StaticXmlSerializerWrapper.j ava:267)
at org.xmlpull.v1.wrapper.classic.StaticXmlSerializer Wrapper.event(StaticXmlSerializerWrapper.java:211)
at brut.androlib.res.decoder.XmlPullStreamDecoder$1.e vent(XmlPullStreamDecoder.java:80)
at brut.androlib.res.decoder.XmlPullStreamDecoder.dec ode(XmlPullStreamDecoder.java:130)
at brut.androlib.res.decoder.XmlPullStreamDecoder.dec odeManifest(XmlPullStreamDecoder.java:144)
at brut.androlib.res.decoder.ResFileDecoder.decodeMan ifest(ResFileDecoder.java:131)
at brut.androlib.res.AndrolibResources.decode(Androli bResources.java:218)
at brut.androlib.Androlib.decodeResourcesFull(Androli b.java:115)
at brut.androlib.ApkDecoder.decode(ApkDecoder.java:11 4)
at brut.apktool.Main.cmdDecode(Main.java:146)
at brut.apktool.Main.main(Main.java:77)

----------------

Decompile Not Successful!

Thank you for your time. =)
 
  • Like
Reactions: jackarmy13

sandy7

Inactive Recognized Developer
May 28, 2012
6,214
6,843
34
bangalore
I've tried and followed this instructions to a reboot to recovery.

I was able to recompile it after i've added the strings in strings.xml and the hdpi and xhdpi, However, when I decompiled it again to get the hex id it is giving me an error would you mind telling me what i've missed out?

Here is the log.

Decompiling "framework-res.apk"
With Tickle My Android
(tinyurl.com\ticklemyandroid)

----------------

I: Loading resource table...
I: Loaded.
I: Decoding AndroidManifest.xml with resources...
I: Loading resource table from file: C:\Users\Francis\apktool\framework\1.apk
W: Could not decode attr value, using undecoded value instead: ns=android, name=sharedUserId, value=0x00000020
Exception in thread "main" java.lang.NullPointerException
at java.io.Writer.write(Unknown Source)
at brut.androlib.res.util.ExtMXSerializer.writeAttrib uteValue(ExtMXSerializer.java:38)
at org.xmlpull.mxp1_serializer.MXSerializer.attribute (MXSerializer.java:673)
at org.xmlpull.v1.wrapper.classic.XmlSerializerDelega te.attribute(XmlSerializerDelegate.java:106)
at org.xmlpull.v1.wrapper.classic.StaticXmlSerializer Wrapper.writeStartTag(StaticXmlSerializerWrapper.j ava:267)
at org.xmlpull.v1.wrapper.classic.StaticXmlSerializer Wrapper.event(StaticXmlSerializerWrapper.java:211)
at brut.androlib.res.decoder.XmlPullStreamDecoder$1.e vent(XmlPullStreamDecoder.java:80)
at brut.androlib.res.decoder.XmlPullStreamDecoder.dec ode(XmlPullStreamDecoder.java:130)
at brut.androlib.res.decoder.XmlPullStreamDecoder.dec odeManifest(XmlPullStreamDecoder.java:144)
at brut.androlib.res.decoder.ResFileDecoder.decodeMan ifest(ResFileDecoder.java:131)
at brut.androlib.res.AndrolibResources.decode(Androli bResources.java:218)
at brut.androlib.Androlib.decodeResourcesFull(Androli b.java:115)
at brut.androlib.ApkDecoder.decode(ApkDecoder.java:11 4)
at brut.apktool.Main.cmdDecode(Main.java:146)
at brut.apktool.Main.main(Main.java:77)

----------------

Decompile Not Successful!

Thank you for your time. =)
as i mentioned u need to recompile ur framework using erorcun's guide...the link is in OP.....that y u getting this error
 

whalesplaho

Senior Member
Feb 1, 2012
10,694
2,670
Treasure Island
Code:
 .line 235
    iget-object v0, p0, Lcom/android/internal/policy/impl/GlobalActions;->mItems:Ljava/util/ArrayList;

    new-instance v1, Lcom/android/internal/policy/impl/GlobalActions$2;

    const v2, 0x1080030

    const v3, 0x10400fa

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

    invoke-virtual {v0, v1}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z

cant find dat brov..... please help!!!
 

sandy7

Inactive Recognized Developer
May 28, 2012
6,214
6,843
34
bangalore
Code:
 .line 235
    iget-object v0, p0, Lcom/android/internal/policy/impl/GlobalActions;->mItems:Ljava/util/ArrayList;

    new-instance v1, Lcom/android/internal/policy/impl/GlobalActions$2;

    const v2, 0x1080030

    const v3, 0x10400fa

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

    invoke-virtual {v0, v1}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z

cant find dat brov..... please help!!!
u need to add this line to GlobalActions.smali

EDIT: follow the tut properly....below this line u need to add the RED lines showed in OP
 
Last edited:

NuriJ

Senior Member
Nov 25, 2011
1,188
1,069
Nice guide.. Thanks.
Would the 'bootloader' option reboot into fastboot then?

I've tried and followed this instructions to a reboot to recovery.

I was able to recompile it after i've added the strings in strings.xml and the hdpi and xhdpi, However, when I decompiled it again to get the hex id it is giving me an error would you mind telling me what i've missed out?

Here is the log.

Decompiling "framework-res.apk"
With Tickle My Android
(tinyurl.com\ticklemyandroid)

----------------

I: Loading resource table...
I: Loaded.
I: Decoding AndroidManifest.xml with resources...
I: Loading resource table from file: C:\Users\Francis\apktool\framework\1.apk
W: Could not decode attr value, using undecoded value instead: ns=android, name=sharedUserId, value=0x00000020
Exception in thread "main" java.lang.NullPointerException
at java.io.Writer.write(Unknown Source)
at brut.androlib.res.util.ExtMXSerializer.writeAttrib uteValue(ExtMXSerializer.java:38)
at org.xmlpull.mxp1_serializer.MXSerializer.attribute (MXSerializer.java:673)
at org.xmlpull.v1.wrapper.classic.XmlSerializerDelega te.attribute(XmlSerializerDelegate.java:106)
at org.xmlpull.v1.wrapper.classic.StaticXmlSerializer Wrapper.writeStartTag(StaticXmlSerializerWrapper.j ava:267)
at org.xmlpull.v1.wrapper.classic.StaticXmlSerializer Wrapper.event(StaticXmlSerializerWrapper.java:211)
at brut.androlib.res.decoder.XmlPullStreamDecoder$1.e vent(XmlPullStreamDecoder.java:80)
at brut.androlib.res.decoder.XmlPullStreamDecoder.dec ode(XmlPullStreamDecoder.java:130)
at brut.androlib.res.decoder.XmlPullStreamDecoder.dec odeManifest(XmlPullStreamDecoder.java:144)
at brut.androlib.res.decoder.ResFileDecoder.decodeMan ifest(ResFileDecoder.java:131)
at brut.androlib.res.AndrolibResources.decode(Androli bResources.java:218)
at brut.androlib.Androlib.decodeResourcesFull(Androli b.java:115)
at brut.androlib.ApkDecoder.decode(ApkDecoder.java:11 4)
at brut.apktool.Main.cmdDecode(Main.java:146)
at brut.apktool.Main.main(Main.java:77)

----------------

Decompile Not Successful!

Thank you for your time. =)

Wrong frameworks installed i guess..
 

whalesplaho

Senior Member
Feb 1, 2012
10,694
2,670
Treasure Island
u need to add this line to GlobalActions.smali

EDIT: follow the tut properly....below this line u need to add the RED lines showed in OP

i dnt know where to place it since i cant tha above line...... should i add it anywhere?

what about here?

Code:
 .line 211
    move-object/from16 v0, p0

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

    new-instance v2, Lcom/android/internal/policy/impl/GlobalActions$2;

    const v3, 0x1080030

    const v4, 0x104018e

    move-object/from16 v0, p0

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

    invoke-virtual {v1, v2}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z

    move-object/from16 v0, p0

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

    new-instance v2, Lcom/android/internal/policy/impl/GlobalActions$11;

    const v3, 0x7f020000

    const v4, 0x7f030000

    move-object/from16 v0, p0

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

    invoke-virtual {v1, v2}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z

    .line 236
    move-object/from16 v0, p0

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

    move-object/from16 v0, p0

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

    invoke-virtual {v1, v2}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z

    .line 239
    move-object/from16 v0, p0

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

    new-instance v2, Lcom/android/internal/policy/impl/GlobalActions$3;

    const v3, 0x10805e8

    const v4, 0x10400c1

    move-object/from16 v0, p0

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

    invoke-virtual {v1, v2}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z

    .line 263
    move-object/from16 v0, p0

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

    move-object/from16 v0, p0

    iget-object v2, v0, Lcom/android/internal/policy/impl/GlobalActions;->mSilentModeAction:Lcom/android/internal/policy/impl/GlobalActions$Action;

    invoke-virtual {v1, v2}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
 

sandy7

Inactive Recognized Developer
May 28, 2012
6,214
6,843
34
bangalore
i dnt know where to place it since i cant tha above line...... should i add it anywhere?

what about here?


as per ur codes the changes will be in RED (note if u ahve my old reboot mod plz start from a fresh android.policy.jar)


Code:
 .line 211
    move-object/from16 v0, p0

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

    new-instance v2, Lcom/android/internal/policy/impl/GlobalActions$2;

    const v3, 0x1080030

    const v4, 0x104018e

    move-object/from16 v0, p0

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

    invoke-virtual {v1, v2}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z

   [COLOR="Red"].line 213
    move-object/from16 v0, p0

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

    new-instance v2, Lcom/android/internal/policy/impl/GlobalActions$11;

    const v3, 0x1080827

    const v4, 0x104060b

    move-object/from16 v0, p0

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

    invoke-virtual {v1, v2}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z[/COLOR]

    .line 239
    move-object/from16 v0, p0

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

    new-instance v2, Lcom/android/internal/policy/impl/GlobalActions$3;

    const v3, 0x10805e8

    const v4, 0x10400c1

    move-object/from16 v0, p0

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

    invoke-virtual {v1, v2}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z

    .line 263
    move-object/from16 v0, p0

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

    move-object/from16 v0, p0

    iget-object v2, v0, Lcom/android/internal/policy/impl/GlobalActions;->mSilentModeAction:Lcom/android/internal/policy/impl/GlobalActions$Action;

    invoke-virtual {v1, v2}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
 
  • Like
Reactions: whalesplaho

whalesplaho

Senior Member
Feb 1, 2012
10,694
2,670
Treasure Island
as per ur codes the changes will be in RED (note if u ahve my old reboot mod plz start from a fresh android.policy.jar)


Code:
 .line 211
    move-object/from16 v0, p0

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

    new-instance v2, Lcom/android/internal/policy/impl/GlobalActions$2;

    const v3, 0x1080030

    const v4, 0x104018e

    move-object/from16 v0, p0

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

    invoke-virtual {v1, v2}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z

   [COLOR="Red"].line 213
    move-object/from16 v0, p0

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

    new-instance v2, Lcom/android/internal/policy/impl/GlobalActions$11;

    const v3, 0x1080827

    const v4, 0x104060b

    move-object/from16 v0, p0

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

    invoke-virtual {v1, v2}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z[/COLOR]

    .line 239
    move-object/from16 v0, p0

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

    new-instance v2, Lcom/android/internal/policy/impl/GlobalActions$3;

    const v3, 0x10805e8

    const v4, 0x10400c1

    move-object/from16 v0, p0

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

    invoke-virtual {v1, v2}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z

    .line 263
    move-object/from16 v0, p0

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

    move-object/from16 v0, p0

    iget-object v2, v0, Lcom/android/internal/policy/impl/GlobalActions;->mSilentModeAction:Lcom/android/internal/policy/impl/GlobalActions$Action;

    invoke-virtual {v1, v2}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z


starting afresh brov.... thanks!!!

ll give it a shot & drop feedback.:good::good:
 

whalesplaho

Senior Member
Feb 1, 2012
10,694
2,670
Treasure Island
yes i does i think...i never tested it my self....lol

reboot tha phone when reboot to bootloader select.....

Sandy i think in tha tut, we only edit for reboot now & recovery.... none for bootloader!

but i notice i dnt have airplane mode in power options anymore!

---------- Post added at 11:51 AM ---------- Previous post was at 11:26 AM ----------

thanks for tut brov..... works fine!


aah8.png

s8xn.png
 
Last edited:

sandy7

Inactive Recognized Developer
May 28, 2012
6,214
6,843
34
bangalore
reboot tha phone when reboot to bootloader select.....

Sandy i think in tha tut, we only edit for reboot now & recovery.... none for bootloader!

but i notice i dnt have airplane mode in power options anymore!

---------- Post added at 11:51 AM ---------- Previous post was at 11:26 AM ----------

thanks for tut brov..... works fine!


aah8.png

s8xn.png
u did something wrong...if any old codes are there it happens...try with a fresh framework-res.apk and android.policy.jar
 

whalesplaho

Senior Member
Feb 1, 2012
10,694
2,670
Treasure Island
Whoa!!!! got it working buddy... yhu removed .line 236 from tha code i sent yhu dats why, dat line is for Airplane mode.

Code:
[color=red]
    .line 236
    move-object/from16 v0, p0

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

    move-object/from16 v0, p0

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

    invoke-virtual {v1, v2}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z[/color]
 
Last edited:

Top Liked Posts

  • There are no posts matching your filters.
  • 23
    So lets Start

    Required
    1-apktool
    2-notepad++
    3-some brains







    REBOOT OPTIONS KK 4.4.2

    USE THE RESOURCES ATTACHED BELOW (IF U HAVE ANY PROBLEMS DE/RECOMPILING ANDROID.POLICY.JAR USE THE smali.jar and backsmali.jar attached in the below resources)

    framework-res.apk
    -----------------

    1 - Add to strings.xml:
    Code:
    	<string name="reboot">@string/factorytest_reboot</string>
        <string name="reboot_normal">@string/factorytest_reboot</string>
    	<string name="reboot_recovery">Recovery</string>
        <string name="reboot_bootloader">Bootloader</string>



    2 - Add to arrays.xml:

    Code:
    	<string-array name="reboot_options">
            <item>@string/reboot_normal</item>
            <item>@string/reboot_recovery</item>
            <item>@string/reboot_bootloader</item>
        </string-array>
        <string-array name="reboot_actions">
            <item>now</item>
            <item>recovery</item>
            <item>bootloader</item>
        </string-array>


    3 - Add under \res\drawable-xxhdpi\ folder:

    ic_lock_reboot.png


    4 - Compile framework-res.apk



    android.policy.jar
    ------------------

    1 - Edit:

    \com\android\internal\policy\impl\GlobalActions.smali

    ...LOOK FOR...

    Code:
    	.line 252
        .local v9, "quickbootEnabled":Z
        :goto_3d
        iget-object v0, p0, Lcom/android/internal/policy/impl/GlobalActions;->mItems:Ljava/util/ArrayList;
    
        new-instance v1, Lcom/android/internal/policy/impl/GlobalActions$2;
    
        const v2, 0x1080030
    
        const v3, 0x10400cb
    
        invoke-direct {v1, p0, v2, v3, v9}, Lcom/android/internal/policy/impl/GlobalActions$2;-><init>(Lcom/android/internal/policy/impl/GlobalActions;IIZ)V
    
        invoke-virtual {v0, v1}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
    	
    [COLOR="Red"]
        .line 282
        iget-object v0, p0, Lcom/android/internal/policy/impl/GlobalActions;->mItems:Ljava/util/ArrayList;
    
        new-instance v1, Lcom/android/internal/policy/impl/GlobalActions$12;
    
        const v2, 0x108094c           ----- HEX ID OF ic_lock_reboot.png ( make sure to change the hex id comparing ur Public xml  )
        const v3, 0x10407e8          ----- HEX ID OF reboot STRING ( make sure to change the hex id comparing ur Public xml  )
    
        invoke-direct {v1, p0, v2, v3}, Lcom/android/internal/policy/impl/GlobalActions$12;-><init>(Lcom/android/internal/policy/impl/GlobalActions;II)V
    
        invoke-virtual {v0, v1}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z[/COLOR]
    
        .line 283
        iget-object v0, p0, Lcom/android/internal/policy/impl/GlobalActions;->mItems:Ljava/util/ArrayList;
    
        iget-object v1, p0, Lcom/android/internal/policy/impl/GlobalActions;->mAirplaneModeOn:Lcom/android/internal/policy/impl/GlobalActions$ToggleAction;
    
        invoke-virtual {v0, v1}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
    2 - Add these three new files:

    GlobalActions$12$1.smali
    GlobalActions$12$2.smali
    GlobalActions$12.smali


    3 - Done !!




    FOR JB 4.3​




    Before u decompile anything see this Guide by @erorcun for how to compile a JB framework without bootloop..
    http://xdaforums.com/showthread.php?t=2321207



    STEP-1

    Decompile Framework-res.apk

    goto to res/vlaues/arrays.xml

    and add these lines at the end

    Code:
        <string-array name="reboot_options">
            <item>@string/reboot_normal</item>
            <item>@string/reboot_recovery</item>
            <item>@string/reboot_bootloader</item>
        </string-array>
        <string-array name="reboot_actions">
            <item>now</item>
            <item>recovery</item>
            <item>bootloader</item>
        </string-array>


    now goto res/values/strings
    and add these lines at the end


    Code:
        <string name="reboot">Reboot</string>
        <string name="reboot_normal">Reboot</string>
        <string name="reboot_recovery">Recovery</string>
        <string name="reboot_bootloader">Bootloader</string>


    goto add the ic_lock_reboot.png which i have i provided in the resources attached below this post to drawablw-hdpi folder

    so before compiling the framework-res.apk follow erorcun's guide to properly recompile framework-res.apk

    once recompile is done ....decompile again to get the HEX ID's

    STEP-2

    decompile android.policy.jar

    goto classout\com\android\internal\policy\impl

    and add the 3 smali's files which i provided in the resources attached below

    Now option classout\com\android\internal\policy\impl\GlobalActions.smali

    and find these lines and add the red marked lines between them

    Code:
        .line 235
        iget-object v0, p0, Lcom/android/internal/policy/impl/GlobalActions;->mItems:Ljava/util/ArrayList;
    
        new-instance v1, Lcom/android/internal/policy/impl/GlobalActions$2;
    
        const v2, 0x1080030
    
        const v3, 0x10400fa
    
        invoke-direct {v1, p0, v2, v3}, Lcom/android/internal/policy/impl/GlobalActions$2;-><init>(Lcom/android/internal/policy/impl/GlobalActions;II)V
    
        invoke-virtual {v0, v1}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
    
    [COLOR="Red"]    .line 213
        move-object/from16 v0, p0
    
        iget-object v1, v0, Lcom/android/internal/policy/impl/GlobalActions;->mItems:Ljava/util/ArrayList;
    
        new-instance v2, Lcom/android/internal/policy/impl/GlobalActions$11;
    
        const v3, 0x1080827
    
        const v4, 0x104060b
    
        move-object/from16 v0, p0
    
        invoke-direct {v2, v0, v3, v4}, Lcom/android/internal/policy/impl/GlobalActions$11;-><init>(Lcom/android/internal/policy/impl/GlobalActions;II)V
    
        invoke-virtual {v1, v2}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z[/COLOR]
    
        .line 260
        iget-object v0, p0, Lcom/android/internal/policy/impl/GlobalActions;->mItems:Ljava/util/ArrayList;
    
        iget-object v1, p0, Lcom/android/internal/policy/impl/GlobalActions;->mAirplaneModeOn:Lcom/android/internal/policy/impl/GlobalActions$ToggleAction;
    
        invoke-virtual {v0, v1}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z


    now we need to assign the Hex id's as per ur Public.xml

    NOTE: the hex id's might be different from mine and yours so be careful while comparing

    new as per the above changes in GlobalActions.xml

    assign the id's as below

    <public type="drawable" name="ic_lock_reboot" id="0x01080827" />

    Code:
     new-instance v2, Lcom/android/internal/policy/impl/GlobalActions$11;
    
        const v3, 0x[COLOR="red"]1080827[/COLOR]


    <public type="string" name="reboot" id="0x0104060b" />

    Code:
    new-instance v2, Lcom/android/internal/policy/impl/GlobalActions$11;
    
        const v3, 0x1080827
    
        const v4, 0x[COLOR="red"]104060b[/COLOR]



    Now option up classout\com\android\internal\policy\impl\GlobalActions$11.smali

    find and replace the following

    @line 70
    <public type="string" name="reboot" id="0x0104060b" />


    Code:
    const v3, 0x[COLOR="red"]104060b[/COLOR]


    @line 90
    <public type="array" name="reboot_options" id="0x0107003b" />


    Code:
    const v3, 0x[COLOR="red"]107003b[/COLOR]


    @line 105
    <public type="string" name="ok" id="0x0104000a" />



    Code:
      const v2, 0x[COLOR="red"]104000a[/COLOR]


    @line 147
    <public type="bool" name="config_sf_slowBlur" id="0x0111000b" />


    Code:
    const v3, 0x[COLOR="red"]111000b[/COLOR]


    now open up classout\com\android\internal\policy\impl\GlobalActions$11$2.smali

    @line 59
    <public type="array" name="reboot_actions" id="0x0107003c" />


    Code:
    const v2, 0x[COLOR="red"]107003c[/COLOR]


    save it and recompile android.policy.jar


    now push all the files into ut phone...will have the new Advanced reboot options


    CREDITS

    @serajr --- my smali teacher :D
    @auras76 -- for testing this method will work or not​
    3
    thx sir, it's work on kitkat 4.4.2 mediatek device.
    But on GlobalActions$12 line 26 and 27 must be deleted.
    If not, it cannot recompile because "error input"
    3
    I use xposed installer / advanced power menu .
    This works fine

    Sent from my C6603 using XDA Premium HD app

    Then use that . You don't need to comment here ..
    2
    hello sir :) , i wanna ask about after i recompile the framework-res the public id has changed into 0x030100a5 the original has 0x01010004 (the original is 0x01 and the recompiled is 0x03), did i doing wrong? cuz the public ids were different with the smalis...i'm using 292 firmware... thanks :)

    The public id from this tutorial and urs should be different.. Public id will be different for every framework-res.apk... Its normal
    2
    Works perfectly on the .101 Android 4.3 stock rom. That's another Xposed module I don't need to have installed. :D

    By the way, I used the latest beta of apktool 2.0 (apktool 2.0.0b9). It can decompile and recompile Xperia framework-res.apk perfectly without any problems. Very cool. :good: