[MOD][HOW-TO][GT_19500]Enable Call Recording + no inc ring + EPM + MMS Android 4.2.2 - Galaxy S 4 i9500 Android Development

This is how to enable Call recording on the Galaxy S4 -I9500 (tested on this) on Based Samsung Android 4.2.2 Roms
1. Decompile SecPhone.apk
2. Open smali\com\android\phone\PhoneFeature.smali, go to "makeFeatureForCommon()V" method, and make the changes:
PHP:
.line 1002
sget-object v0, Lcom/android/phone/PhoneFeature;->mFeatureList:Ljava/util/HashMap;
const-string v5, "support_merge_call"
invoke-static {v2}, Ljava/lang/Boolean;->valueOf(Z)Ljava/lang/Boolean;
move-result-object v6
invoke-virtual {v0, v5, v6}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
++ .line 1003
++ sget-object v0, Lcom/android/phone/PhoneFeature;->mFeatureList:Ljava/util/HashMap;
++ const-string v5, "voice_call_recording"
++ const/4 v2, 0x1
++ invoke-static {v2}, Ljava/lang/Boolean;->valueOf(Z)Ljava/lang/Boolean;
++ move-result-object v6
++ invoke-virtual {v0, v5, v6}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
++ .line 1004
3. This mod is tested & working on latest I9500 FW - I9500UBUAMDK
4. All the recorded calls will be stored on sdcard under sounds folder
5. Flash at your own risk
No Increasing ringtone
TARGET FILE: secphone/smali/com/android/phone/Ringer$1.smali and following changes:
PHP:
iget-object v1, v1, Lcom/android/phone/Ringer;->mAudioManager:Landroid/media/AudioManager;
- invoke-virtual {v1, v6, v4, v5}, Landroid/media/AudioManager;->setStreamVolume(III)V
-
.line 804
const/4 v1, 0x7
and
PHP:
goto/16 :goto_0
.line 756
+ nop
+
nop
:pswitch_data_0
EXTENDED POWER MENU MOD
TARGET FILE: android.policy.jar
First Copy attached GlobalActions$99$1.smali, GlobalActions$99$2.smali, GlobalActions$99.smali from the atatchments to android.policy_ori.jar.out\smali\com\android\internal\policy\impl
2. Open the GlobalActions$99.smali using any notepad editor and change the following to whatever name you want :
PHP:
const-string v2, "Rebooot Menu"
3. Open the following file : /smali/com/android/internal/policy/impl/GlobalActions$SinglePressAction.smali and make the following changes:
PHP:
.end annotation
+# static fields
+.field protected static rebootMode:I
+
+.field protected static final rebootOptions:[Ljava/lang/String;
+
+
PHP:
# direct methods
+.method static constructor <clinit>()V
+ .locals 3
+
+ const/4 v0, 0x4
+
+ new-array v0, v0, [Ljava/lang/String;
+
+ const/4 v1, 0x0
+
+ const-string v2, "Reboot"
+
+ aput-object v2, v0, v1
+
+ const/4 v1, 0x1
+
+ const-string v2, "Hot Boot"
+
+ aput-object v2, v0, v1
+
+ const/4 v1, 0x2
+
+ const-string v2, "Download"
+
+ aput-object v2, v0, v1
+
+ const/4 v1, 0x3
+
+ const-string v2, "Recovery"
+
+ aput-object v2, v0, v1
+
+ sput-object v0, Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;->rebootOptions:[Ljava/lang/String;
+
+ return-void
+.end method
+
.method protected constructor <init>(II)V
.locals 1
.parameter "iconResId"
4. Open the following file : smali/com/android/internal/policy/impl/GlobalActions.smali and male following changes:
PHP:
iput-object v0, p0, Lcom/android/internal/policy/impl/GlobalActions;->mPowerOff:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;
.line 566
- new-instance v0, Lcom/android/internal/policy/impl/GlobalActions$5;
+ new-instance v0, Lcom/android/internal/policy/impl/GlobalActions$99;
const v1, 0x108097f
PHP:
const v2, 0x1040199
- invoke-direct {v0, p0, v1, v2}, Lcom/android/internal/policy/impl/GlobalActions$5;-><init>(Lcom/android/internal/policy/impl/GlobalActions;II)V
+ invoke-direct {v0, p0, v1, v2}, Lcom/android/internal/policy/impl/GlobalActions$99;-><init>(Lcom/android/internal/policy/impl/GlobalActions;II)V
iput-object v0, p0, Lcom/android/internal/policy/impl/GlobalActions;->mRestart:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;
5. Compile and then flash
No MMS Conversion & Increase Recipient Limit
Target File: Secmms.apk
1. Open the following file: /res/xml/mms_config.xml and make following changes:
PHP:
<int name="mMaxTextViewSize">5000</int>
- <int name="recipientLimit">10</int>
- <int name="smsToMmsTextThreshold">4</int>
+ <int name="recipientLimit">999</int>
+ <int name="smsToMmsTextThreshold">999</int>
<bool name="disableEndterKey">false</bool>
<bool name="composeMaxLengthLimit">false</bool>
- <bool name="inputModeAuto">false</bool>
+ <bool name="inputModeAuto">true</bool>
<bool name="smsExpiryDate">false</bool>
<bool name="sendAnimationJpn">false</bool>
<bool name="wapPush">true</bool>
2. Open the following file: smali/com/android/mms/MmsConfig.smali and make following changes:
PHP:
sput v0, Lcom/android/mms/MmsConfig;->mMaxImageWidthRestrictedMode:I
.line 163
- sput v7, Lcom/android/mms/MmsConfig;->mRecipientLimit:I
+ const/16 v0, 0x3e7
- .line 164
- const/16 v0, 0xc8
+ sput v0, Lcom/android/mms/MmsConfig;->mRecipientLimit:I
+ .line 164
sput v0, Lcom/android/mms/MmsConfig;->mDefaultSMSMessagesPerThread:I
.line 165
PHP:
.prologue
.line 2510
- sget v0, Lcom/android/mms/MmsConfig;->mMaxRecipientLength:I
+ const/16 v0, 0x3e7
return v0
.end method
PHP:
.prologue
.line 2751
- sget v0, Lcom/android/mms/MmsConfig;->mMmsRecipientLimit:I
+ const/16 v0, 0x3e7
return v0
.end method
PHP:
.prologue
.line 759
- sget v0, Lcom/android/mms/MmsConfig;->mRecipientLimit:I
+ const/16 v0, 0x3e7
return v0
.end method
PHP:
.prologue
.line 688
- sget v0, Lcom/android/mms/MmsConfig;->mSmsToMmsTextThreshold:I
+ const/16 v0, 0x3e7
return v0
.end method
PHP:
move-result v11
+ const/16 v11, 0x3e7
+
sput v11, Lcom/android/mms/MmsConfig;->mMaxRecipientLength:I
.line 1768
PHP:
move-result v1
+ const/16 v1, 0x3e7
+
sput v1, Lcom/android/mms/MmsConfig;->mSmsToMmsTextThreshold:I
.line 2045
PHP:
invoke-interface {v0, v1, v4}, Landroid/content/SharedPreferences;->getInt(Ljava/lang/String;I)I
move-result v1
+
+ const/16 v1, 0x3e7
sput v1, Lcom/android/mms/MmsConfig;->mRecipientLimit:I
Increasing SMS hour limit
Navigate and open \com\android\mms\util\RateController.smali
Search for
PHP:
.field private static final RATE_LIMIT:I = 0x64
This value is in hexadecimal format, so we see that 0x64 = 100. So, to increase this to 1000 simply change 0x64 to 0x3e8
I am including the mod here. If you are on deodexed rom, then delete the secphone.odex and then flash the zip from recovery. I will release the odex one in few hours as i am in hurry now.
Download - I9500UBUAMDK- DEODEXED
I completed with almost all the mods and i will release it later i a day as i am on business trip!
Credits
-------------
Wanam
mythtrandyr

thanks for your effort. waiting for custom roms with your mod.

Once we do this how do we enable call recording? Do you have a screenshot?

Thanks
Sent from my GT-I9500 using Tapatalk 2

You are one of the best when it comes to smali codes mate.
Thanks for your contribution.
《posted from s3》

Coding king.....
When Android comes to picture :thumbup::thumbup:
Welldone bro

Thanks a lot.
Line 1003 exists in MDN i9505 (LTE) (fdn_contact_search).
Created new line .1004 and write all code there.
You are the man :good:

cybdani said:
Thanks a lot.
Line 1003 exists in MDN i9505 (LTE) (fdn_contact_search).
Created new line .1004 and write all code there.
You are the man :good:
Click to expand...
Click to collapse
Does this mean the download it's not working yet with MDN firmware?

thanks man. can you make it for stock mdc I9505 aswell??
thanks

Yes . Post the secphone.apk
Sent from my GT-I9500 using Tapatalk 2

grgsiocl said:
Yes . Post the secphone.apk
Sent from my GT-I9500 using Tapatalk 2
Click to expand...
Click to collapse
thanks i really appreciate that
https://www.dropbox.com/s/b5o7dzqxyf0jflz/SecPhone.apk

Hi all!
Here's SecPhone.apk from i9505 MDN ROM, deodexed and zipaligned https://www.box.com/s/6y7oqkz3ksadyj12wjop
Regards!

Hello, can You make ODEX for MDN i9505??
Big thanks

We have this awesome guy at every flagship phones .Welcome to S4 now then to note III .

cybdani said:
Hi all!
Here's SecPhone.apk from i9505 MDN ROM, deodexed and zipaligned https://www.box.com/s/6y7oqkz3ksadyj12wjop
Regards!
Click to expand...
Click to collapse
will this work on my stock mdc I9505 i gave you?

tvhak said:
will this work on my stock mdc I9505 i gave you?
Click to expand...
Click to collapse
It's from mdn deodexed, not tested with mdc, but you can test it:
Backup secphone.apk and secphone.odex to sd card.
Copy my secphone.apk into /system/app, give permissions to this file, delete secphone.odex and reboot.
If it doesn't works, you can restore your backup files.

cybdani said:
It's from mdn deodexed, not tested with mdc, but you can test it:
Backup secphone.apk and secphone.odex to sd card.
Copy my secphone.apk into /system/app, give permissions to this file, delete secphone.odex and reboot.
If it doesn't works, you can restore your backup files.
Click to expand...
Click to collapse
thanks going to try that now
---------- Post added at 10:05 AM ---------- Previous post was at 09:53 AM ----------
cybdani said:
It's from mdn deodexed, not tested with mdc, but you can test it:
Backup secphone.apk and secphone.odex to sd card.
Copy my secphone.apk into /system/app, give permissions to this file, delete secphone.odex and reboot.
If it doesn't works, you can restore your backup files.
Click to expand...
Click to collapse
okay have a problem...
i see the record button when i make a call. but it does nothing
also wanted to ask if there is an option to have it enabled that it records all calls.
there is no settings menu like i had in my s3.
thanks

Until the person you're calling does not pick up the phone you can not record. Button is disabled.
If it doesn't works fine, then maybe the problem is that you have mdc rom and not mdn.
Sorry.
tvhak said:
thanks going to try that now
---------- Post added at 10:05 AM ---------- Previous post was at 09:53 AM ----------
okay have a problem...
i see the record button when i make a call. but it does nothing
also wanted to ask if there is an option to have it enabled that it records all calls.
there is no settings menu like i had in my s3.
thanks
Click to expand...
Click to collapse

Yes i know. But when i am calling the button lights up. But thats all it does
Can you make one for my phone with the apk i gave you ???
Sent from my GT-I9505 using xda premium

tvhak said:
Yes i know. But when i am calling the button lights up. But thats all it does
Can you make one for my phone with the apk i gave you ???
Sent from my GT-I9505 using xda premium
Click to expand...
Click to collapse
And doesn't shows "recording"?
Check sd-->sound folder. Any file there?
I can't make changes in your file because you upload only apk file and you have stock odex rom. Odex file is needed to baksmali.

Related

[HOW TO] Remove leading zero from digital clock widgets

Do you dislike the leading zero from the digital clock widget or dual clock widget? If so, you can now remove them with the following guide.
A) DigitalClock.apk
1. Decompile DigitalClock.odex with baksmali
2. Edit the file com/sec/android/widgetapp/digitalclock/DigitalClockWidgetProvider.smali
3. Search for the method drawHour()
Code:
.method private static drawHour(Landroid/content/Context;Landroid/widget/RemoteViews;Ljava/util/Date;Z)V
...
.end method
4. Add the following lines in red to the drawHour() method.
Code:
...
const v3, 0x7f070007
const/4 v4, 0x4
invoke-virtual {p1, v3, v4}, Landroid/widget/RemoteViews;->setViewVisibility(II)V
.line 202
:goto_13
const v3, 0x7f070002
invoke-static {v0}, Lcom/sec/android/widgetapp/digitalclock/DigitalClockWidgetProvider;->getClockNumberResourceId(I)I
move-result v4
[COLOR="Red"][b]#if hour1 is zero then draw transparent image (0x106000d)
if-nez v0, :cond_1f
const v4, 0x106000d
:cond_1f[/b][/COLOR]
invoke-virtual {p1, v3, v4}, Landroid/widget/RemoteViews;->setImageViewResource(II)V
.line 203
const v3, 0x7f070003
invoke-static {v1}, Lcom/sec/android/widgetapp/digitalclock/DigitalClockWidgetProvider;->getClockNumberResourceId(I)I
move-result v4
invoke-virtual {p1, v3, v4}, Landroid/widget/RemoteViews;->setImageViewResource(II)V
...
5. Recompile and push to /system/app
6. Restart phone.
B) DualClock.apk
1. Decompile DualClock.odex with baksmali
2. Edit the file com/sec/android/widgetapp/dualclock/DigitalDualClockView$DigitalClockView.smali
3. Search for the method update()
Code:
.method public update(Z)V
...
.end method
4. Add the following lines in red to the update() method.
Code:
...
iget-object v11, p0, Lcom/sec/android/widgetapp/dualclock/DigitalDualClockView$DigitalClockView;->iv_hour01:Landroid/widget/ImageView;
iget-object v12, p0, Lcom/sec/android/widgetapp/dualclock/DigitalDualClockView$DigitalClockView;->numbers:[I
aget v12, v12, v2
[COLOR="Red"][b]#if hour1 is zero then draw transparent image (0x106000d)
if-nez v2, :cond_b4
const v12, 0x106000d
:cond_b4[/b][/COLOR]
invoke-virtual {v11, v12}, Landroid/widget/ImageView;->setImageResource(I)V
.line 932
iget-object v11, p0, Lcom/sec/android/widgetapp/dualclock/DigitalDualClockView$DigitalClockView;->iv_hour02:Landroid/widget/ImageView;
iget-object v12, p0, Lcom/sec/android/widgetapp/dualclock/DigitalDualClockView$DigitalClockView;->numbers:[I
aget v12, v12, v3
...
5. Recompile and push to /system/app
6. Restart phone.
C) Lock screen
1. Decompile android.policy.odex with baksmali
2. Edit the file com/android/internal/policy/impl/UnlockClockGB.smali
3. Search for the method transformHourData()
Code:
.method private transformHourData(I)Ljava/lang/String;
...
.end method
4. In the transformHourData() method:
Find the line: (x2)
Code:
invoke-direct {p0, p1}, Lcom/android/internal/policy/impl/UnlockClockGB;->checkTimeValue(I)Ljava/lang/String;
Replace with this line: (x2)
Code:
[COLOR="Red"][b]#don't check time value (add zero prefix), convert to string directly
invoke-static {p1}, Ljava/lang/Integer;->toString(I)Ljava/lang/String;[/b][/COLOR]
5. Recompile and push to /system/framework
(if using dexopt-wrapper to convert back to odex, remember to add the last argument $BOOTCLASSPATH to the wrapper call)
6. Restart phone.
Enjoy!

[MOD] [LIH/LJ1/LJ2/LJ4/LJ5/LK4/LKC deodex] back/menu long press kills foreground app

Thanks to Sorg, Poppuri, Pako, Wanam.
2 level reboot menu from Wanam also included.
The mod actually developed by sorg and implemented into poppuri ROM with 2 another mods. One of them is too complicated idnd changes whole logic of hard buttons behavior. I just separated it from another ones.
Warning:
Installing of this mod will:
1. Remove another hard keys related mods like volume long press etc.
2. Remove old TV effect.
I dislike this mods, so they are not implemented.
3. Replace power menu with one from WanamLite ROM.
If you need tis mods, please ask autors of mod or ROM for implementing this one or do it yourself.
v2 Update.
Always vibrate, also if nothing killed.
Kills launchers.
Excluded App list:
com.android.providers.applications
com.sec.android.app.clockpackage
com.sec.android.widgetapp.alarmclock
com.sec.phone
com.android.settings
com.android.defcontainer
com.android.contacts
com.sec.android.app.factorymode
v3 - Will not kill launchers, but always provide feedback
To implement into another ROM/file:
1. Decompile android.policy.jar (both from attachment and from your ROM).
2. Copy PhoneWindowManager$BackLongPress.smali into
\android.policy.jar.out\com\android\internal\policy\impl\
3. Merge changes from \android.policy.jar.out\com\android\internal\policy\impl\PhoneWindowManager.smali to your file.
You can use original file from LIH ROM to find differences.
4. Recompile.
hi, just flash the zip in cwm? Criskelo I LIH.?
You can.
Make backup first.
Better - ask Kriskello for implementing this mod.
It simple.
I hope that will work.
---------- Post added at 08:17 PM ---------- Previous post was at 08:13 PM ----------
So I already have and it seems fully functional, many thanks for your work, it's ok
Doesn't work in my custom LIH rom.
well i don.t have a notebook or a desktop system in the next few days,and i really like this feature...so can someone compile one for wanam 4.0 XXDLJ1?tx
Work in omega 29
Enviado desde mi GT-I9300 usando Tapatalk 2
Work on hyper light DLJ1 1.1.5
finally I don't need to install jkay
Tap talk killed now with kill back key
Envoyé depuis mon GT-I9300 avec Tapatalk
You may name my babies
Insert coin 2.0.0 XDLID. works perfectly, wanted this so long. if i could thousand thank i would
akelon said:
Work in omega 29
Enviado desde mi GT-I9300 usando Tapatalk 2
Click to expand...
Click to collapse
I tried on omega 29 and its not worked any solution will be appriciated. Thanks..
There is no differences in android.policy.jar between LIH and LJ1.
So, the mod should work on LJ1.
akelon said:
Work in omega 29
Enviado desde mi GT-I9300 usando Tapatalk 2
Click to expand...
Click to collapse
Have you recompiled it or just flashed it directly?
I am on Omega v29 and it didn't work after flashing. Could you please share the modded file? Thanks in advance.
tczhang said:
Have you recompiled it or just flashed it directly?
I am on Omega v29 and it didn't work after flashing. Could you please share the modded file? Thanks in advance.
Click to expand...
Click to collapse
Worked here on v29. Just flashed
Sent from my GT-I9300 using Xparent Green Tapatalk 2
d8389 said:
To implement into another ROM/file:
1. Decompile android.policy.jar (both from attachment and from your ROM).
2. Copy PhoneWindowManager$BackLongPress.smali into
\android.policy.jar.out\com\android\internal\policy\impl\
3. Merge changes from \android.policy.jar.out\com\android\internal\policy\impl\PhoneWindowManager.smali to your file.
You can use original file from LIH ROM to find differences.
4. Recompile.
Click to expand...
Click to collapse
Plz give us the guide about "the changes of PhoneWindowManager.smali"
androidphone2012 said:
Plz give us the guide about "the changes of PhoneWindowManager.smali"
Click to expand...
Click to collapse
You should add
Code:
.field private final mBackLongPress:Ljava/lang/Runnable;
.field public mBackLongPressed:I
somewhere in
# instance fields
---
Code:
new-instance v0, Lcom/android/internal/policy/impl/PhoneWindowManager$BackLongPress;
invoke-direct {v0, p0}, Lcom/android/internal/policy/impl/PhoneWindowManager$BackLongPress;-><init>(Lcom/android/internal/policy/impl/PhoneWindowManager;)V
iput-object v0, p0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mBackLongPress:Ljava/lang/Runnable;
in
Code:
.method public constructor <init>()V
i do it in another similar group
---
in
Code:
.method public interceptKeyBeforeDispatching(Landroid/view/WindowManagerPolicy$WindowState;Landroid/view/KeyEvent;I)J
I increased number of registers by 1 (not sure it's necessary)
and after something like
Code:
const-string v41, "RemoteException when showing recent apps"
move-object/from16 v0, v40
move-object/from16 v1, v41
invoke-static {v0, v1, v10}, Landroid/util/Slog;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
goto :goto_521
.line 3110
.end local v10 #e:Landroid/os/RemoteException;
:cond_532
add
Code:
const/16 v40, 0x4
move/from16 v0, v21
move/from16 v1, v40
if-ne v0, v1, :cond_569
.line 2281
if-eqz v9, :cond_556
if-nez v30, :cond_55f
move-object/from16 v0, p0
const v1, 0x0
iput v1, v0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mBackLongPressed:I
if-nez v22, :cond_569
iget-object v1, v0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mBackLongPress:Ljava/lang/Runnable;
iget-object v0, v0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mHandler:Landroid/os/Handler;
invoke-static {}, Landroid/view/ViewConfiguration;->getGlobalActionKeyTimeout()J
move-result-wide v2
const-wide/16 v4, 0x5
mul-long/2addr v2, v4
invoke-virtual {v0, v1, v2, v3}, Landroid/os/Handler;->postDelayed(Ljava/lang/Runnable;J)Z
goto :goto_569
:cond_556
move-object/from16 v0, p0
iget-object v1, v0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mBackLongPress:Ljava/lang/Runnable;
iget-object v0, v0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mHandler:Landroid/os/Handler;
invoke-virtual {v0, v1}, Landroid/os/Handler;->removeCallbacks(Ljava/lang/Runnable;)V
:cond_55f
move-object/from16 v0, p0
iget v1, v0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mBackLongPressed:I
if-eqz v1, :cond_569
const-wide/16 v40, -0x1
goto/16 :goto_ad
:cond_569
:goto_569
check also for conflicting goto & cond
d8389 said:
You should add
Code:
.field private static final LONG_PRESS_TIMEOUT:I = 0x190
somewhere in
# static fields
---
Code:
.field private final mBackLongPress:Ljava/lang/Runnable;
.field public mBackLongPressed:I
somewhere in
# instance fields
---
Code:
new-instance v0, Lcom/android/internal/policy/impl/PhoneWindowManager$BackLongPress;
invoke-direct {v0, p0}, Lcom/android/internal/policy/impl/PhoneWindowManager$BackLongPress;-><init>(Lcom/android/internal/policy/impl/PhoneWindowManager;)V
iput-object v0, p0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mBackLongPress:Ljava/lang/Runnable;
in
Code:
.method public constructor <init>()V
i do it in another similar group
---
in
Code:
.method public interceptKeyBeforeDispatching(Landroid/view/WindowManagerPolicy$WindowState;Landroid/view/KeyEvent;I)J
I increased number of registers by 1 (not sure it's necessary)
and after something like
Code:
const-string v41, "RemoteException when showing recent apps"
move-object/from16 v0, v40
move-object/from16 v1, v41
invoke-static {v0, v1, v10}, Landroid/util/Slog;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
goto :goto_521
.line 3110
.end local v10 #e:Landroid/os/RemoteException;
:cond_532
add
Code:
const/16 v40, 0x4
move/from16 v0, v21
move/from16 v1, v40
if-ne v0, v1, :cond_569
.line 2281
if-eqz v9, :cond_556
if-nez v30, :cond_55f
move-object/from16 v0, p0
const v1, 0x0
iput v1, v0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mBackLongPressed:I
if-nez v22, :cond_569
iget-object v1, v0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mBackLongPress:Ljava/lang/Runnable;
iget-object v0, v0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mHandler:Landroid/os/Handler;
invoke-static {}, Landroid/view/ViewConfiguration;->getGlobalActionKeyTimeout()J
move-result-wide v2
const-wide/16 v4, 0x5
mul-long/2addr v2, v4
invoke-virtual {v0, v1, v2, v3}, Landroid/os/Handler;->postDelayed(Ljava/lang/Runnable;J)Z
goto :goto_569
:cond_556
move-object/from16 v0, p0
iget-object v1, v0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mBackLongPress:Ljava/lang/Runnable;
iget-object v0, v0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mHandler:Landroid/os/Handler;
invoke-virtual {v0, v1}, Landroid/os/Handler;->removeCallbacks(Ljava/lang/Runnable;)V
:cond_55f
move-object/from16 v0, p0
iget v1, v0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mBackLongPressed:I
if-eqz v1, :cond_569
const-wide/16 v40, -0x1
goto/16 :goto_ad
:cond_569
:goto_569
check also for conflicting goto & cond
Click to expand...
Click to collapse
Thanks, but PhoneWindowManager.smali in Nexus S differs from SGS III Could you give me some tips?
d8389 said:
Thanks to Sorg, Poppuri, Pako, Wanam.
2 level reboot menu from Wanam also included.
The mod actually developed by sorg and implemented into poppuri ROM with 2 another mods. One of them is too complicated idnd changes whole logic of hard buttons behavior. I just separated it from another ones.
Click to expand...
Click to collapse
also working on CheckROM 5.5 DLIB!
@D8329,can you make Pin Code Unlock without pressing OK button mod too ?
works perfectly on foxhound 1.0

[HOW TO] AOSP Lock + Toggle| 3 Way Ext. Power Menu| CRT-OFF| Long Menu Press to Kill

Hy Guys! in my request to isolate all the codes in Smali files to enable Extended Power Menu, CRT-OF, Long Menu Press To Kill and AOSP Lockscreen working separately to implement in my ROM (crDroid ROM) i manage to found how to do it!
Updated 19.01.2013 = Working in latest XXELLC
Requirements :
- You need to know how to work with apktool, smali and baksmali stuffs.
- Notepad++
- 7-zip
WE WILL USE FOLLOING STEPS IN ALL 4 MODS
1 - You need to extract from inside the stock framework/ a file called android.policy.jar;
2 - Open android.policy.jar with 7-zip;
3 - Extract classes.dex from it;
2 - Decompile using baksmail commands;
3 - Once it's done Recompile using smali commands:
Click to expand...
Click to collapse
== AOSP Lockscreen with Toggle ==
Decompile android.policy.jar
Go to: com\android\internal\policy\impl\LockPatternKeyguardView.smali
Click to expand...
Click to collapse
Find this method
Code:
.method createLockScreen()Landroid/view/View;
And switch completely with this (Same method with new codes inside)
Code:
[left][color="blue"].method createLockScreen()Landroid/view/View;
.registers 7
.prologue
.line 1254
iget-object v0, p0, Lcom/android/internal/policy/impl/LockPatternKeyguardView;->mContext:Landroid/content/Context;
invoke-virtual {v0}, Landroid/content/Context;->getContentResolver()Landroid/content/ContentResolver;
move-result-object v0
const-string v1, "aosp_lock"
const/4 v2, 0x0
invoke-static {v0, v1, v2}, Landroid/provider/Settings$System;->getInt(Landroid/content/ContentResolver;Ljava/lang/String;I)I
move-result v0
if-nez v0, :cond_1f
new-instance v0, Lcom/android/internal/policy/impl/sec/CircleLockScreen;
iget-object v1, p0, Lcom/android/internal/policy/impl/LockPatternKeyguardView;->mContext:Landroid/content/Context;
iget-object v2, p0, Lcom/android/internal/policy/impl/LockPatternKeyguardView;->mConfiguration:Landroid/content/res/Configuration;
iget-object v3, p0, Lcom/android/internal/policy/impl/LockPatternKeyguardView;->mLockPatternUtils:Lcom/android/internal/widget/LockPatternUtils;
iget-object v4, p0, Lcom/android/internal/policy/impl/LockPatternKeyguardView;->mUpdateMonitor:Lcom/android/internal/policy/impl/KeyguardUpdateMonitor;
iget-object v5, p0, Lcom/android/internal/policy/impl/LockPatternKeyguardView;->mKeyguardScreenCallback:Lcom/android/internal/policy/impl/KeyguardScreenCallback;
invoke-direct/range {v0 .. v5}, Lcom/android/internal/policy/impl/sec/CircleLockScreen;-><init>(Landroid/content/Context;Landroid/content/res/Configuration;Lcom/android/internal/widget/LockPatternUtils;Lcom/android/internal/policy/impl/KeyguardUpdateMonitor;Lcom/android/internal/policy/impl/KeyguardScreenCallback;)V
goto :goto_2e
.line 1260
:cond_1f
new-instance v0, Lcom/android/internal/policy/impl/LockScreen;
iget-object v1, p0, Lcom/android/internal/policy/impl/LockPatternKeyguardView;->mContext:Landroid/content/Context;
iget-object v2, p0, Lcom/android/internal/policy/impl/LockPatternKeyguardView;->mConfiguration:Landroid/content/res/Configuration;
iget-object v3, p0, Lcom/android/internal/policy/impl/LockPatternKeyguardView;->mLockPatternUtils:Lcom/android/internal/widget/LockPatternUtils;
iget-object v4, p0, Lcom/android/internal/policy/impl/LockPatternKeyguardView;->mUpdateMonitor:Lcom/android/internal/policy/impl/KeyguardUpdateMonitor;
iget-object v5, p0, Lcom/android/internal/policy/impl/LockPatternKeyguardView;->mKeyguardScreenCallback:Lcom/android/internal/policy/impl/KeyguardScreenCallback;
invoke-direct/range {v0 .. v5}, Lcom/android/internal/policy/impl/LockScreen;-><init>(Landroid/content/Context;Landroid/content/res/Configuration;Lcom/android/internal/widget/LockPatternUtils;Lcom/android/internal/policy/impl/KeyguardUpdateMonitor;Lcom/android/internal/policy/impl/KeyguardScreenCallback;)V
.local v0, lockView:Landroid/view/View;
:goto_2e
invoke-direct {p0, v0}, Lcom/android/internal/policy/impl/LockPatternKeyguardView;->initializeTransportControlView(Landroid/view/View;)V
.line 1261
return-object v0
.end method[/color][/left]
It will create the AOSP lockscreen but with one issue. Adding only this "new" method will made the lockscreen unlockable using menu button;
So let's made some changes to fix this. There are 2 ways to fix it
1st way
Go to: com\android\internal\policy\impl\LockScreen.smali
Click to expand...
Click to collapse
Find and delete the red one
Code:
.field private mCreationOrientation:I
[color="red"]--- .field private mEnableMenuKeyInLockScreen:Z[/color]
.field private mEnableRingSilenceFallback:Z
Find and delete the red ones
Code:
[left].line 447
iput-object p5, p0, Lcom/android/internal/policy/impl/LockScreen;->mCallback:Lcom/android/internal/policy/impl/KeyguardScreenCallback;
.line 448
[color="red"]--- invoke-direct {p0}, Lcom/android/internal/policy/impl/LockScreen;->shouldEnableMenuKey()Z
--- move-result v0
--- iput-boolean v0, p0, Lcom/android/internal/policy/impl/LockScreen;->mEnableMenuKeyInLockScreen:Z[/color]
.line 449
iget v0, p2, Landroid/content/res/Configuration;->orientation:I[/left]
Find the method and delete completely
Code:
[left][color="red"].method public onKeyDown(ILandroid/view/KeyEvent;)Z
.registers 4
.parameter "keyCode"
.parameter "event"
.prologue
.line 541
const/16 v0, 0x52
if-ne p1, v0, :cond_d
iget-boolean v0, p0, Lcom/android/internal/policy/impl/LockScreen;->mEnableMenuKeyInLockScreen:Z
if-eqz v0, :cond_d
.line 542
iget-object v0, p0, Lcom/android/internal/policy/impl/LockScreen;->mCallback:Lcom/android/internal/policy/impl/KeyguardScreenCallback;
invoke-interface {v0}, Lcom/android/internal/policy/impl/KeyguardScreenCallback;->goToUnlockScreen()V
.line 544
:cond_d
const/4 v0, 0x0
return v0
.end method[/color][/left]
Recompile android.policy.jar and it's done!
AOSP Lockscreen Properly working
2nd way (Thanks to jimbo77)
Using this method we will need to decompile framework-res.apk
Go to: res/values/bools
Click to expand...
Click to collapse
Find and switch
Code:
[color="red"]--- <bool name="config_disableMenuKeyInLockScreen">false</bool>[/color]
[color="blue"]+++ <bool name="config_disableMenuKeyInLockScreen">true</bool>[/color]
Recompile framework-res.apk and it's done.
Lets put toggle in SecSettings.apk
decompile SecSettings.apk
Go to:res/values/strings
Click to expand...
Click to collapse
Add this at the end of the file, before close resources</resources>.
This 2 string bellow will be shown in settings, so feel free to change.
Code:
[left][color="blue"]+++ <string name="aosp">Jelly Bean (AOSP) Lockscreen</string>
+++ <string name="aosp_summary">Enable Original Jelly Bean Lockscreen</string>[/color]
[/left]
Go to: res/xml/Lockscreen_Settings.xml
Click to expand...
Click to collapse
Find and add
Code:
[left]<SwitchPreferenceScreen android:title="@string/lock_screen_shortcut_title" android:key="lock_screen_shortcut" android:summary="@string/lock_screen_shortcut_summary">
<intent android:targetPackage="com.android.settings" android:action="android.intent.action.MAIN" android:targetClass="com.android.settings.lockscreenshortcut.LockScreenShortcutSettings" />
</SwitchPreferenceScreen>
[color="blue"]+++ <CheckBoxPreference android:title="@string/aosp" android:key="say_your_wakeup" android:summary="@string/aosp_summary" />[/color]
<SwitchPreferenceScreen android:title="@string/information_ticker" android:key="information_ticker" android:summary="@string/information_ticker_summary" android:fragment="com.android.settings.InformationTicker" />
[/left]
Go to: smali\com\android\settings\LockScreenSettings.smali
Click to expand...
Click to collapse
Find and add
Code:
[left].field private isWeatherEnabled:Z
[color="blue"]+++ .field private mAospLock:Landroid/preference/CheckBoxPreference;[/color]
.field private mCameraShortCut:Landroid/preference/SwitchPreferenceScreen;[/left]
Find and Switch
Code:
[left]iput-object v0, p0, Lcom/android/settings/LockScreenSettings;->mMotionDialog:Landroid/app/AlertDialog;
[color="red"]--- const/16 v0, 0x8[/color]
[color="blue"]+++ const/16 v0, 0x11[/color]
new-array v0, v0, [I[/left]
Find and Switch
Code:
[left]invoke-virtual {v6, v3}, Landroid/preference/CheckBoxPreference;->setChecked(Z)V
.line 294
:cond_3
[color="red"]--- iget-object v3, p0, Lcom/android/settings/LockScreenSettings;->mSayCommand:Landroid/preference/CheckBoxPreference;[/color]
[color="blue"]+++ iget-object v3, p0, Lcom/android/settings/LockScreenSettings;->mAospLock:Landroid/preference/CheckBoxPreference;[/color]
if-eqz v3, :cond_4
.line 295
[color="red"]--- iget-object v6, p0, Lcom/android/settings/LockScreenSettings;->mSayCommand:Landroid/preference/CheckBoxPreference;[/color]
[color="blue"]+++ iget-object v6, p0, Lcom/android/settings/LockScreenSettings;->mAospLock:Landroid/preference/CheckBoxPreference;[/color]
invoke-virtual {p0}, Lcom/android/settings/LockScreenSettings;->getContentResolver()Landroid/content/ContentResolver;
move-result-object v3
[color="red"]--- const-string v7, "wake_up_lock_screen"[/color]
[color="blue"]+++ const-string v7, "aosp_lock"[/color]
invoke-static {v3, v7, v5}, Landroid/provider/Settings$System;->getInt(Landroid/content/ContentResolver;Ljava/lang/String;I)I[/left]
Find and Switch
Code:
[left]const-string v8, "say_your_wakeup"
invoke-virtual {p0, v8}, Lcom/android/settings/LockScreenSettings;->findPreference(Ljava/lang/CharSequence;)Landroid/preference/Preference;
move-result-object v8
check-cast v8, Landroid/preference/CheckBoxPreference;
[color="red"]--- iput-object v8, p0, Lcom/android/settings/LockScreenSettings;->mSayCommand:Landroid/preference/CheckBoxPreference;[/color]
[color="blue"]+++ iput-object v8, p0, Lcom/android/settings/LockScreenSettings;->mAospLock:Landroid/preference/CheckBoxPreference;[/color]
.line 212
iget-object v8, p0, Lcom/android/settings/LockScreenSettings;->mRippleEffect:Landroid/preference/CheckBoxPreference;
if-eqz v8, :cond_8[/left]
Find and Switch
Code:
[left]goto :goto_4
:cond_9
[color="red"]--- iget-object v4, p0, Lcom/android/settings/LockScreenSettings;->mSayCommand:Landroid/preference/CheckBoxPreference;[/color]
[color="blue"]+++ iget-object v4, p0, Lcom/android/settings/LockScreenSettings;->mAospLock:Landroid/preference/CheckBoxPreference;[/color]
invoke-virtual {p2, v4}, Ljava/lang/Object;->equals(Ljava/lang/Object;)Z
move-result v4
if-eqz v4, :cond_0
invoke-virtual {p0}, Lcom/android/settings/LockScreenSettings;->getContentResolver()Landroid/content/ContentResolver;
move-result-object v4
[color="red"]--- const-string v5, "wake_up_lock_screen"[/color]
[color="blue"]+++ const-string v5, "aosp_lock"[/color]
[color="red"]---iget-object v6, p0, Lcom/android/settings/LockScreenSettings;->mSayCommand:Landroid/preference/CheckBoxPreference;[/color]
[color="blue"]+++iget-object v6, p0, Lcom/android/settings/LockScreenSettings;->mAospLock:Landroid/preference/CheckBoxPreference;[/color]
invoke-virtual {v6}, Landroid/preference/CheckBoxPreference;->isChecked()Z
move-result v6
if-eqz v6, :cond_a[/left]
Find Switch and delete
Code:
[left]
invoke-interface {v1}, Ljava/util/List;->size()I
move-result v8
if-ge v8, v9, :cond_f
.line 240
[color="red"]--- iget-object v8, p0, Lcom/android/settings/LockScreenSettings;->mSayCommand:Landroid/preference/CheckBoxPreference;[/color]
[color="blue"]+++ iget-object v8, p0, Lcom/android/settings/LockScreenSettings;->mAospLock:Landroid/preference/CheckBoxPreference;[/color]
if-eqz v8, :cond_e
[color="red"]--- invoke-virtual {p0}, Lcom/android/settings/LockScreenSettings;->getPreferenceScreen()Landroid/preference/PreferenceScreen;[/color]
[color="red"]--- move-result-object v8[/color]
[color="red"]--- iget-object v9, p0, Lcom/android/settings/LockScreenSettings;->mSayCommand:Landroid/preference/CheckBoxPreference;[/color]
[color="red"]--- invoke-virtual {v8, v9}, Landroid/preference/PreferenceScreen;->removePreference(Landroid/preference/Preference;)Z[/color]
:cond_e
if-eqz v6, :cond_f
invoke-virtual {p0}, Lcom/android/settings/LockScreenSettings;->getPreferenceScreen()Landroid/preference/PreferenceScreen;[/left]
Recompile SecSettings.apk and it's done!
== 3 Way Extended Power Menu ==
Go to: com/android/internal/policy/impl/GlobalActions.smali
Click to expand...
Click to collapse
Find this
Code:
[LEFT].line 368
new-instance v1, Lcom/android/internal/policy/impl/GlobalActions$5;[/LEFT]
And switch with this
Code:
[LEFT][COLOR="Blue"].line 368
new-instance v1, Lcom/android/internal/policy/impl/GlobalActions$99;[/COLOR][/LEFT]
Find this
Code:
[LEFT]invoke-direct {v1, v0, v2, v3}, Lcom/android/internal/policy/impl/GlobalActions$5;-><init>(Lcom/android/internal/policy/impl/GlobalActions;II)V[/LEFT]
And switch with this
Code:
[LEFT][COLOR="Blue"]invoke-direct {v1, v0, v2, v3}, Lcom/android/internal/policy/impl/GlobalActions$99;-><init>(Lcom/android/internal/policy/impl/GlobalActions;II)V[/COLOR][/LEFT]
Now go to
com/android/internal/policy/impl/GlobalActions$SinglePressAction.smali
Click to expand...
Click to collapse
Find this
Code:
[LEFT].end annotation
# instance fields
.field private final mIconResId:I
.field private final mMessage:Ljava/lang/CharSequence;
.field private final mMessageResId:I
[/LEFT]
And between .end annotation and # instance fields, add this
Code:
[LEFT][COLOR="Blue"]# static fields
.field protected static rebootMode:I
.field protected static final rebootOptions:[Ljava/lang/String;[/COLOR][/LEFT]
Find this
Code:
[LEFT]# direct methods
.method protected constructor <init>(II)V
.registers 4
.parameter "iconResId"
.parameter "messageResId"
[/LEFT]
And between # direct methods and .method protected constructor <init>(II)V, add this
Code:
[LEFT][COLOR="Blue"].method static constructor <clinit>()V
.registers 3
const/4 v0, 0x3
new-array v0, v0, [Ljava/lang/String;
const/4 v1, 0x0
const-string v2, "Reboot"
aput-object v2, v0, v1
const/4 v1, 0x1
const-string v2, "Download"
aput-object v2, v0, v1
const/4 v1, 0x2
const-string v2, "Recovery"
aput-object v2, v0, v1
sput-object v0, Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;->rebootOptions:[Ljava/lang/String;
return-void
.end method[/COLOR][/LEFT]
To finalize Extended Power Menu you need to copy tree smali files (GlobalActions$99$1.smali, GlobalActions$99$2, and GlobalActions$1.smali) and paste then inside -> com/android/internal/policy/impl/
Recompile android.policy.jar using smali commands it's DONE!
== CRT OFF Animation ==
Follow the same procedure as android.policy.jar to decompile and extract classes.dex
Go to
Go to: com/android/internal/policy/impl/PhoneWindowManager.smali
Click to expand...
Click to collapse
find this
Code:
[LEFT]# interfaces
.implements Landroid/view/WindowManagerPolicy;
# annotations
[/LEFT]
Between .implements Landroid/view/WindowManagerPolicy and # annotations, add this
Code:
[LEFT][COLOR="Blue"].implements Ljava/lang/Runnable;[/COLOR][/LEFT]
find this
Code:
[LEFT].line 5938
.end local v9 #isAllowed:Z
.end local v16 #kioskMode:Landroid/app/enterprise/kioskmode/KioskMode;
:cond_66
:goto_66
return v19[/LEFT]
Between :goto_66 and return v19, add this
Code:
[LEFT][COLOR="Blue"]and-int/lit8 v0, v19, 0x4
if-eqz v0, :cond_71
and-int/lit8 v19, v19, -0x5
move-object/from16 v0, p0
invoke-virtual {v0}, Lcom/android/internal/policy/impl/PhoneWindowManager;->sleepDelay()V
:cond_71[/COLOR][/LEFT]
Go to the Bottom of the file and add this hole code
Code:
[LEFT][COLOR="Blue"].method public sleepDelay()V
.locals 10
iget-object v0, p0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mHandler:Landroid/os/Handler;
const-wide v2, 0x64
check-cast p0, Ljava/lang/Runnable;
invoke-virtual {v0, p0, v2, v3}, Landroid/os/Handler;->postDelayed(Ljava/lang/Runnable;J)Z
return-void
.end method
.method public run()V
.locals 10
.prologue
iget-object v0, p0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mContext:Landroid/content/Context;
const-string v1, "power"
invoke-virtual {v0, v1}, Landroid/content/Context;->getSystemService(Ljava/lang/String;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Landroid/os/PowerManager;
invoke-static {}, Landroid/os/SystemClock;->uptimeMillis()J
move-result-wide v2
const-wide/16 v6, 0x3e8
add-long/2addr v2, v6
invoke-virtual {v0, v2, v3}, Landroid/os/PowerManager;->goToSleep(J)V
return-void
.end method[/COLOR][/LEFT]
Now you can recompile android.policy.jar using smali commands.
Now
Extract services.jar from inside framework folder and follow the same procedure extract classes.dex and decompile it.
Go to
Go to: com/android/server/PowerMangerService$ScreenBrightnessAnimator.smali
Click to expand...
Click to collapse
find this
Code:
[LEFT]#getter for: Lcom/android/server/PowerManagerService;->mScreenBrightnessHandler:Landroid/os/Handler;
invoke-static {v7}, Lcom/android/server/PowerManagerService;->access$7300(Lcom/android/server/PowerManagerService;)Landroid/os/Handler;
move-result-object v7
const/16 v9, 0xa[/LEFT]
Between move-result-object v7 and const/16 v9, 0xa, add this
Code:
[LEFT][COLOR="Blue"]if-eqz p2, :cond_75
const/16 v9, 0xb
const/4 v10, 0x0
const v2, 0x10
invoke-virtual {v7, v9, v2, v10}, Landroid/os/Handler;->obtainMessage(III)Landroid/os/Message;
move-result-object v9
invoke-virtual {v9}, Landroid/os/Message;->sendToTarget()V
:cond_75[/COLOR][/LEFT]
Now you can recompile services.jar using apktool and smali commands
== Long Menu Press to Kill App ==
Follow the same procedure as android.policy.jar and services.jar to decompile and extract classes.dex again from android.policy.jar
Go to: com/android/internal/policy/impl/PhoneWindowManager.smali
Click to expand...
Click to collapse
find this
Code:
.line 1455
[COLOR="Red"]new-instance v0, Lcom/android/internal/policy/impl/PhoneWindowManager$8;
invoke-direct {v0, p0}, Lcom/android/internal/policy/impl/PhoneWindowManager$8;-><init (Lcom/android/internal/policy/impl/PhoneWindowManager;)V[/COLOR]
iput-object v0, p0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mMenuLongPress:Ljava/lang/Runnable;
change the red ones for blues under
Code:
[COLOR="Blue"]+ new-instance v0, Lcom/android/internal/policy/impl/PhoneWindowManager$MenuLongPress;
+ invoke-direct {v0, p0}, Lcom/android/internal/policy/impl/PhoneWindowManager$MenuLongPress;-><init>(Lcom/android/internal/policy/impl/PhoneWindowManager;)V[/COLOR]
Extract the PhoneWindowManager-file.zip attached, extract the file int it and copy to com/android/internal/policy/impl/
Recompile android.policy.jar using smali commands and it's done!
With this we will be able to add or remove this 4 mods from inside any other
CREDITS
For CRT OFF Animation method all the credits goes to Sorg. I've just follow his tutorial.
For part Extended Power Menu i like to thanks mgn2o
For part of AOSP Lockscreen i like to thanks Didact74
Nice, an EPM whitout Hot Reboot (mgn2o) thanks for reference ....
Enviado de meu GT-I9300 usando o Tapatalk 2
Excellent guide! Would love one for lockscreen media skip !! I cant find the source/guide anywhere !
Great guide.
It will be great:
Can you add how to decompile .odex such that we obtain .smali for editing ??
Thanks in advance mate.
Post updated with Long Menu Press to Kill for XXELK4
Akshay (Aky) said:
Great guide.
It will be great:
Can you add how to decompile .odex such that we obtain .smali for editing ??
Thanks in advance mate.
Click to expand...
Click to collapse
You can try to deodex a file, made the changes and re-odex.
I never try with odex. I only use roms deodexed and my (crDroid) in development is surely deodexed.
Take a look in here: CLICK
how to Inkeffect tutorial
One more thing, how to add the function "Long press volume key to jump muisc" in lockscreen mode? Thanks.
I'll definitely use this to add crt animation to the 4.1.2 ROM I have for the Sprint S2. Thanks!
Sent from my SPH-D710 using xda premium
Great job, Hoping this will become a central hub for source code ! Bookmarked for future use.. looking forward to future sources!
Would you please also add the mod for "long press volume key to skip song"? Thanks.
dongfangri said:
Would you please also add the mod for "long press volume key to skip song"? Thanks.
Click to expand...
Click to collapse
I'm working on this. Trying some kind of "reverse engineering" to spot the codes.
Great tutorial, for my first attempt at these types of edits, it made life very easy. Although i have a small problem. Ive made the edits so i can have extended power menu, crt off and any app multi window in my rom. Everything went smoothly but it seems that crt off is erratic. Sometimes it works and sometimes it does not. Any ideas?
Sent from my GT-I9300 using Tapatalk 2
anaraxia said:
Great tutorial, for my first attempt at these types of edits, it made life very easy. Although i have a small problem. Ive made the edits so i can have extended power menu, crt off and any app multi window in my rom. Everything went smoothly but it seems that crt off is erratic. Sometimes it works and sometimes it does not. Any ideas?
Sent from my GT-I9300 using Tapatalk 2
Click to expand...
Click to collapse
Well a never had this kind of problem.
Using Kernle Perseus, by the way? It seems to broke CRT.
Cristiano Matos said:
Well a never had this kind of problem.
Using Kernle Perseus, by the way? It seems to broke CRT.
Click to expand...
Click to collapse
No... Stock kernel. Keeping in simple
Sent from my GT-I9300 using Tapatalk 2
anaraxia said:
No... Stock kernel. Keeping in simple
Sent from my GT-I9300 using Tapatalk 2
Click to expand...
Click to collapse
There's a problem with the Stock kernel on the newest JB update (For both leak and official)
Try using Siyah's 1.8.3 and use the CRT Fix in the STweaks application.
---------- Post added at 11:15 AM ---------- Previous post was at 10:29 AM ----------
Thanks alot for this tutorial, very simple and straight to the point!
Lost.soul said:
There's a problem with the Stock kernel on the newest JB update (For both leak and official)
Try using Siyah's 1.8.3 and use the CRT Fix in the STweaks application.
Thanks for the help. Downloaded, flashed and tested. Works perfectly now. Will have to add it to my next release. Thanks again :thumbup:
Sent from my GT-I9300 using Tapatalk 2
Click to expand...
Click to collapse
Loved your post, but i have a question: is it possible to do this with gingerbread rom? is it the same procedure?
Também sou brasileiro, hehehe. Tem como tu me ajudar com algumas coisas?
Click to expand...
Click to collapse
Note II InkEffect Lockscreen
It is not compatible with Note II InkEffect Lockscreen Mod.
When I flash this mod (extended menu) the ink effect lockscreen stop working
thank you
anaraxia said:
Great tutorial, for my first attempt at these types of edits, it made life very easy. Although i have a small problem. Ive made the edits so i can have extended power menu, crt off and any app multi window in my rom. Everything went smoothly but it seems that crt off is erratic. Sometimes it works and sometimes it does not. Any ideas?
Sent from my GT-I9300 using Tapatalk 2
Click to expand...
Click to collapse
Can you confirm it works ONLY with Wifi On ? Seams like that on my try
in the service.jar...i have 2 times those codes...234, 264 something, so how do you choose where to insert your part ?
later edit:
Makes no diff where i add those it seams. Still CRT only works with WIFI on, its like a CRT SWICH haha...suppose "stuff" should be inserted differently on 4.1.2.

[How to] smart rotation + 4 Shortcuts on the Lock for all ROM

hi ...
how to add a 4 shortcut on lock screen.
How to
-Decompile SecSettings.apk and go to smali/com/android/settings/lockscreenshortcut/LockScreenShortcutSettings.smali
-Open this file with a text editor and look for
Code:
# direct methods
.method static constructor <clinit>()V
.locals 2
.prologue
const/4 v1, 0x0
.line 79
- const/4 v0, 0x3
[COLOR="Red"]+ const/4 v0, 0x4[/COLOR]
sput v0, Lcom/android/settings/lockscreenshortcut/LockScreenShortcutSettings;->MAX_SHORTCUT_ICON:I
-Recompile and enjoy
Thanks for the Recognized Developer Training
[HOW-TO]Activation Smart Rotation in JB
How to:
-Decompile SecSettings.apk and go to smali/com/android/settings/DisplaySettings
-Open this smali file with a text editor and look for
Code:
.line 404
- invoke-virtual {p0}, Lcom/android/settings/DisplaySettings;->getPreferenceScreen()Landroid/preference/PreferenceScreen;
-
- move-result-object v12
-
- iget-object v13, p0, Lcom/android/settings/DisplaySettings;->mSmartRotation:Landroid/preference/CheckBoxPreference;
-
- invoke-virtual {v12, v13}, Landroid/preference/PreferenceScreen;->removePreference(Landroid/preference/Preference;)Z
And just delete these lines
-Recompile and enjoy
Thanks - Credits:
Author sorg took of his firmware hope he does not mind.
Thx for manual. Works like a charm.
I have used latest SecSettings.apk from D4Mod.
For me, SmartRotation lines was here:
Code:
.line 404
invoke-virtual {p0}, Lcom/android/settings/DisplaySettings;->getPreferenceScreen()Landroid/preference/PreferenceScreen;
move-result-object v10
iget-object v11, p0, Lcom/android/settings/DisplaySettings;->mSmartRotation:Landroid/preference/CheckBoxPreference;
invoke-virtual {v10, v11}, Landroid/preference/PreferenceScreen;->removePreference(Landroid/preference/Preference;)Z
Will share this file with Dario to add it to next release
try this with 4 shortcuts later when i instal enox rom 2.2 thanks
p_a_r_s_a7 said:
How to:
Code:
.line 404
- invoke-virtual {p0}, Lcom/android/settings/DisplaySettings;->getPreferenceScreen()Landroid/preference/PreferenceScreen;
-
- move-result-object v12
-
- iget-object v13, p0, Lcom/android/settings/DisplaySettings;->mSmartRotation:Landroid/preference/CheckBoxPreference;
-
- invoke-virtual {v12, v13}, Landroid/preference/PreferenceScreen;->removePreference(Landroid/preference/Preference;)Z
And just delete these lines
Click to expand...
Click to collapse
It's mean delete 4 line script, is it correct?
i.wahyudi said:
It's mean delete 4 line script, is it correct?
Click to expand...
Click to collapse
And just delete these lines
p_a_r_s_a7 said:
And just delete these lines
Click to expand...
Click to collapse
Yes already done and tested and worked d(^.^)b

[GUIDE] [HOW-TO] [MOD] New Power Menu with Screenshot TW 4.3 MK3/MK5

New Power Menu with Screenshot TW 4.3 MK3/MK5​
Create a Backup First​
For Stock TW 4.3 SPH-L710 MK3/MK5 Builds Only!​Do not flash this on a custom ROM, it replaces important framework files​
Notes:
I know the extended restart menu has been around for quite a while but I really prefer the simplicity and ease of access to the standard Power Menu without that extra keypress.
Features:
- Reboot to Recovery (instant - no prompt)
- Reboot to Download Mode (instant - no prompt)
- Screenshot
Update:
Added a second New Power Menu with Airplane Mode toggle removed.
Just flash over the other one if you want to try it.
[Guide How-to] Power Menu
Download the support files located at the bottom of the post.
framework-res.apk edits:
Add the 3 icons (from the support file) to framework-res/res/drawable-xhdpi
Add 3 new lines to framework-res/res/values/strings:
Code:
<string name="download">Bootloader</string>
<string name="recovery">Recovery</string>
<string name="global_action_screenshot_txt">Screenshot</string>
</resources>
Compile then De-compile the new framework-res.apk. We will need to view the public.xml file later to get a few values for the next section.
android.policy.jar edits:
Add the 6 new smali files (from the support file) to android.policy/com/android/internal/policy/impl.
(In the same path) edit GlobalActions.smali (or diff the stock and modified GlobalActions.smali included in the support file):
Before:
Code:
.field private final mDreamManager:Landroid/service/dreams/IDreamManager;
.field private mHandler:Landroid/os/Handler;
After:
Code:
.field private final mDreamManager:Landroid/service/dreams/IDreamManager;
[COLOR="Blue"].field private mDownload:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;
.field private mRecovery:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;
[/COLOR].field private mHandler:Landroid/os/Handler;
Before:
Code:
.field private mRingerModeReceiver:Landroid/content/BroadcastReceiver;
.field private final mShowSilentToggle:Z
After:
Code:
.field private mRingerModeReceiver:Landroid/content/BroadcastReceiver;
[COLOR="Blue"].field mScreenshot:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;
.field mScreenshotConnection:Landroid/content/ServiceConnection;
.field final mScreenshotLock:Ljava/lang/Object;
.field final mScreenshotTimeout:Ljava/lang/Runnable;
[/COLOR].field private final mShowSilentToggle:Z
Before:
Code:
iput-object v4, p0, Lcom/android/internal/policy/impl/GlobalActions;->mAirplaneState:Lcom/android/internal/policy/impl/GlobalActions$ToggleAction$State;
sget-object v4, Lcom/android/internal/policy/impl/GlobalActions$ToggleAction$State;->Off:Lcom/android/internal/policy/impl/GlobalActions$ToggleAction$State;
iput-object v4, p0, Lcom/android/internal/policy/impl/GlobalActions;->mDataNetworkState:Lcom/android/internal/policy/impl/GlobalActions$ToggleAction$State;
iput-boolean v6, p0, Lcom/android/internal/policy/impl/GlobalActions;->mIsWaitingForEcmExit:Z
iput-boolean v5, p0, Lcom/android/internal/policy/impl/GlobalActions;->mDisplayConfirm:Z
const/4 v4, 0x0
After:
Code:
iput-object v4, p0, Lcom/android/internal/policy/impl/GlobalActions;->mAirplaneState:Lcom/android/internal/policy/impl/GlobalActions$ToggleAction$State;
sget-object v4, Lcom/android/internal/policy/impl/GlobalActions$ToggleAction$State;->Off:Lcom/android/internal/policy/impl/GlobalActions$ToggleAction$State;
iput-object v4, p0, Lcom/android/internal/policy/impl/GlobalActions;->mDataNetworkState:Lcom/android/internal/policy/impl/GlobalActions$ToggleAction$State;
[COLOR="Blue"] new-instance v4, Ljava/lang/Object;
invoke-direct {v4}, Ljava/lang/Object;-><init>()V
iput-object v4, p0, Lcom/android/internal/policy/impl/GlobalActions;->mScreenshotLock:Ljava/lang/Object;
const/4 v4, 0x0
iput-object v4, p0, Lcom/android/internal/policy/impl/GlobalActions;->mScreenshotConnection:Landroid/content/ServiceConnection;
new-instance v4, Lcom/android/internal/policy/impl/GlobalActions$29;
invoke-direct {v4, p0}, Lcom/android/internal/policy/impl/GlobalActions$29;-><init>(Lcom/android/internal/policy/impl/GlobalActions;)V
iput-object v4, p0, Lcom/android/internal/policy/impl/GlobalActions;->mScreenshotTimeout:Ljava/lang/Runnable;
[/COLOR]
iput-boolean v6, p0, Lcom/android/internal/policy/impl/GlobalActions;->mIsWaitingForEcmExit:Z
iput-boolean v5, p0, Lcom/android/internal/policy/impl/GlobalActions;->mDisplayConfirm:Z
const/4 v4, 0x0
New method:
Before:
Code:
.method static synthetic access$1700(Lcom/android/internal/policy/impl/GlobalActions;)Z
.locals 1
iget-boolean v0, p0, Lcom/android/internal/policy/impl/GlobalActions;->mKeyguardShowing:Z
return v0
.end method
.method static synthetic access$1800(Lcom/android/internal/policy/impl/GlobalActions;)Lcom/android/internal/policy/impl/GlobalActions$ConfirmDialogReceiver;
.locals 1
iget-object v0, p0, Lcom/android/internal/policy/impl/GlobalActions;->mConfirmDialogReceiver:Lcom/android/internal/policy/impl/GlobalActions$ConfirmDialogReceiver;
return-object v0
.end method
After:
Code:
.method static synthetic access$1700(Lcom/android/internal/policy/impl/GlobalActions;)Z
.locals 1
iget-boolean v0, p0, Lcom/android/internal/policy/impl/GlobalActions;->mKeyguardShowing:Z
return v0
.end method
[COLOR="Blue"].method static synthetic access$1701(Lcom/android/internal/policy/impl/GlobalActions;)V
.locals 0
invoke-direct {p0}, Lcom/android/internal/policy/impl/GlobalActions;->takeScreenshot()V
return-void
.end method
[/COLOR]
.method static synthetic access$1800(Lcom/android/internal/policy/impl/GlobalActions;)Lcom/android/internal/policy/impl/GlobalActions$ConfirmDialogReceiver;
.locals 1
iget-object v0, p0, Lcom/android/internal/policy/impl/GlobalActions;->mConfirmDialogReceiver:Lcom/android/internal/policy/impl/GlobalActions$ConfirmDialogReceiver;
return-object v0
.end method
Before:
Code:
new-instance v0, Lcom/android/internal/policy/impl/GlobalActions$6;
const v1, 0x1080a60
const v2, 0x10401c8
invoke-direct {v0, p0, v1, v2}, Lcom/android/internal/policy/impl/GlobalActions$6;-><init>(Lcom/android/internal/policy/impl/GlobalActions;II)V
iput-object v0, p0, Lcom/android/internal/policy/impl/GlobalActions;->mPowerOff:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;
new-instance v0, Lcom/android/internal/policy/impl/GlobalActions$7;
const v1, 0x1080a61
const v2, 0x10401c9
invoke-direct {v0, p0, v1, v2}, Lcom/android/internal/policy/impl/GlobalActions$7;-><init>(Lcom/android/internal/policy/impl/GlobalActions;II)V
iput-object v0, p0, Lcom/android/internal/policy/impl/GlobalActions;->mRestart:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;
After:
Code:
new-instance v0, Lcom/android/internal/policy/impl/GlobalActions$6;
const v1, 0x1080a60
const v2, 0x10401c8
invoke-direct {v0, p0, v1, v2}, Lcom/android/internal/policy/impl/GlobalActions$6;-><init>(Lcom/android/internal/policy/impl/GlobalActions;II)V
iput-object v0, p0, Lcom/android/internal/policy/impl/GlobalActions;->mPowerOff:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;
[COLOR="Blue"] new-instance v0, Lcom/android/internal/policy/impl/GlobalActions$Download;
const v1, 0x1081088
const v2, 0x1040a0b
invoke-direct {v0, p0, v1, v2}, Lcom/android/internal/policy/impl/GlobalActions$Download;-><init>(Lcom/android/internal/policy/impl/GlobalActions;II)V
iput-object v0, p0, Lcom/android/internal/policy/impl/GlobalActions;->mDownload:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;
new-instance v0, Lcom/android/internal/policy/impl/GlobalActions$Recovery;
const v1, 0x1081089
const v2, 0x1040a0c
invoke-direct {v0, p0, v1, v2}, Lcom/android/internal/policy/impl/GlobalActions$Recovery;-><init>(Lcom/android/internal/policy/impl/GlobalActions;II)V
iput-object v0, p0, Lcom/android/internal/policy/impl/GlobalActions;->mRecovery:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;
new-instance v0, Lcom/android/internal/policy/impl/GlobalActions$28;
const v1, 0x108108a
const v2, 0x1040a0d
invoke-direct {v0, p0, v1, v2}, Lcom/android/internal/policy/impl/GlobalActions$28;-><init>(Lcom/android/internal/policy/impl/GlobalActions;II)V
iput-object v0, p0, Lcom/android/internal/policy/impl/GlobalActions;->mScreenshot:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;
[/COLOR]
new-instance v0, Lcom/android/internal/policy/impl/GlobalActions$7;
const v1, 0x1080a61
const v2, 0x10401c9
invoke-direct {v0, p0, v1, v2}, Lcom/android/internal/policy/impl/GlobalActions$7;-><init>(Lcom/android/internal/policy/impl/GlobalActions;II)V
iput-object v0, p0, Lcom/android/internal/policy/impl/GlobalActions;->mRestart:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;
Edit above section
Before continuing, go back to the new DECOMPILED framework-res.apk and open res/values/public.xml with notepad++.
Search for <public type="drawable" name="tw_ic_download"
- All 3 of our new public drawable values for the png images will be listed together.
Search for <public type="string" name="download"
- All 3 of our new public string values will be listed together.
Now, using these we will edit the 3 new sections above for the these new public values. Instead of jumping back and forth in the public.xml, I do the drawables (V1 values) all at once and then go to the strings section and do the strings (V2 values) next.
Code:
<public type="drawable" name="tw_ic_download" id="0x01081088" />
<public type="drawable" name="tw_ic_recovery" id="0x01081089" />
<public type="drawable" name="tw_ic_screenshot" id="0x0108108a" />
Code:
<public type="string" name="download" id="0x01040a0b" />
<public type="string" name="recovery" id="0x01040a0c" />
<public type="string" name="global_action_screenshot_txt" id="0x01040a0d" />
For instance, we are editing these values:
Download:
const v1, 0x1081088 (V1 = DRAWABLE)
const v2, 0x1040a0b (V2 = STRING)
Important Note:
Please note that the leading zero is not used from the public value.
Next, search for const/16 v0, 0x8
Replace this entire section:
Before:
Code:
[COLOR="Red"] const/16 v0, 0x8
new-array v0, v0, [Lcom/android/internal/policy/impl/GlobalActions$Action;
const/4 v1, 0x0
iget-object v2, p0, Lcom/android/internal/policy/impl/GlobalActions;->mAccessiblityShortcut:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;
aput-object v2, v0, v1
const/4 v1, 0x1
iget-object v2, p0, Lcom/android/internal/policy/impl/GlobalActions;->mTalkBack:Lcom/android/internal/policy/impl/GlobalActions$ToggleAction;
aput-object v2, v0, v1
const/4 v1, 0x2
iget-object v2, p0, Lcom/android/internal/policy/impl/GlobalActions;->mPowerOff:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;
aput-object v2, v0, v1
const/4 v1, 0x3
iget-object v2, p0, Lcom/android/internal/policy/impl/GlobalActions;->mDataModeToggle:Lcom/android/internal/policy/impl/GlobalActions$ToggleAction;
aput-object v2, v0, v1
const/4 v1, 0x4
iget-object v2, p0, Lcom/android/internal/policy/impl/GlobalActions;->mAirplaneModeOn:Lcom/android/internal/policy/impl/GlobalActions$ToggleAction;
aput-object v2, v0, v1
const/4 v1, 0x5
iget-object v2, p0, Lcom/android/internal/policy/impl/GlobalActions;->mRestart:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;
aput-object v2, v0, v1
const/4 v1, 0x6
iget-object v2, p0, Lcom/android/internal/policy/impl/GlobalActions;->mBugReport:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;
aput-object v2, v0, v1
const/4 v1, 0x7
iget-object v2, p0, Lcom/android/internal/policy/impl/GlobalActions;->mLonglife:Lcom/android/internal/policy/impl/GlobalActions$ToggleAction;
aput-object v2, v0, v1
[/COLOR]
After:
Code:
[COLOR="Blue"] const/16 v0, 0x8
new-array v0, v0, [Lcom/android/internal/policy/impl/GlobalActions$Action;
const/4 v1, 0x0
iget-object v2, p0, Lcom/android/internal/policy/impl/GlobalActions;->mPowerOff:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;
aput-object v2, v0, v1
const/4 v1, 0x1
iget-object v2, p0, Lcom/android/internal/policy/impl/GlobalActions;->mAccessiblityShortcut:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;
aput-object v2, v0, v1
const/4 v1, 0x2
iget-object v2, p0, Lcom/android/internal/policy/impl/GlobalActions;->mTalkBack:Lcom/android/internal/policy/impl/GlobalActions$ToggleAction;
aput-object v2, v0, v1
const/4 v1, 0x3
iget-object v2, p0, Lcom/android/internal/policy/impl/GlobalActions;->mAirplaneModeOn:Lcom/android/internal/policy/impl/GlobalActions$ToggleAction;
aput-object v2, v0, v1
const/4 v1, 0x4
iget-object v2, p0, Lcom/android/internal/policy/impl/GlobalActions;->mScreenshot:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;
aput-object v2, v0, v1
const/4 v1, 0x5
iget-object v2, p0, Lcom/android/internal/policy/impl/GlobalActions;->mDownload:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;
aput-object v2, v0, v1
const/4 v1, 0x6
iget-object v2, p0, Lcom/android/internal/policy/impl/GlobalActions;->mRecovery:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;
aput-object v2, v0, v1
const/4 v1, 0x7
iget-object v2, p0, Lcom/android/internal/policy/impl/GlobalActions;->mRestart:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;
aput-object v2, v0, v1
[/COLOR]
New method. Search for # virtual methods and insert this method BEFORE that line:
Code:
[COLOR="Blue"].method private takeScreenshot()V
.locals 8
iget-object v4, p0, Lcom/android/internal/policy/impl/GlobalActions;->mScreenshotLock:Ljava/lang/Object;
monitor-enter v4
:try_start_0
iget-object v3, p0, Lcom/android/internal/policy/impl/GlobalActions;->mScreenshotConnection:Landroid/content/ServiceConnection;
if-eqz v3, :cond_0
monitor-exit v4
:goto_0
return-void
:cond_0
new-instance v0, Landroid/content/ComponentName;
const-string v3, "com.android.systemui"
const-string v5, "com.android.systemui.screenshot.TakeScreenshotService"
invoke-direct {v0, v3, v5}, Landroid/content/ComponentName;-><init>(Ljava/lang/String;Ljava/lang/String;)V
new-instance v2, Landroid/content/Intent;
invoke-direct {v2}, Landroid/content/Intent;-><init>()V
invoke-virtual {v2, v0}, Landroid/content/Intent;->setComponent(Landroid/content/ComponentName;)Landroid/content/Intent;
new-instance v1, Lcom/android/internal/policy/impl/GlobalActions$30;
invoke-direct {v1, p0}, Lcom/android/internal/policy/impl/GlobalActions$30;-><init>(Lcom/android/internal/policy/impl/GlobalActions;)V
iget-object v3, p0, Lcom/android/internal/policy/impl/GlobalActions;->mContext:Landroid/content/Context;
const/4 v5, 0x1
sget-object v6, Landroid/os/UserHandle;->CURRENT:Landroid/os/UserHandle;
invoke-virtual {v3, v2, v1, v5, v6}, Landroid/content/Context;->bindServiceAsUser(Landroid/content/Intent;Landroid/content/ServiceConnection;ILandroid/os/UserHandle;)Z
move-result v3
if-eqz v3, :cond_1
iput-object v1, p0, Lcom/android/internal/policy/impl/GlobalActions;->mScreenshotConnection:Landroid/content/ServiceConnection;
iget-object v3, p0, Lcom/android/internal/policy/impl/GlobalActions;->mHandler:Landroid/os/Handler;
iget-object v5, p0, Lcom/android/internal/policy/impl/GlobalActions;->mScreenshotTimeout:Ljava/lang/Runnable;
const-wide/16 v6, 0x2710
invoke-virtual {v3, v5, v6, v7}, Landroid/os/Handler;->postDelayed(Ljava/lang/Runnable;J)Z
:cond_1
monitor-exit v4
goto :goto_0
:catchall_0
move-exception v3
monitor-exit v4
:try_end_0
.catchall {:try_start_0 .. :try_end_0} :catchall_0
throw v3
.end method
[/COLOR]
[Guide How-to] Remove a Menu Item
Search for const/16 v0, 0x8
Each menu item of this array is only 3 lines. We will remove the Airplane Mode toggle. Delete or comment out these 3 lines.
Code:
const/4 v1, 0x3
iget-object v2, p0, Lcom/android/internal/policy/impl/GlobalActions;->mAirplaneModeOn:Lcom/android/internal/policy/impl/GlobalActions$ToggleAction;
aput-object v2, v0, v1
Since we have removed a menu item, the array constructor const/16 v0, 0x8
needs to be changed to const/16 v0, 0x7 (one less item 8-1=7 ).
Also, all the construct lines after the item you have just deleted need to be renumbered so they remain sequential. Here is the code changed after the item has been removed.
Code:
const/4 v1, 0x[COLOR="Red"]3[/COLOR]
iget-object v2, p0, Lcom/android/internal/policy/impl/GlobalActions;->mScreenshot:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;
aput-object v2, v0, v1
const/4 v1, 0x[COLOR="Red"]4[/COLOR]
iget-object v2, p0, Lcom/android/internal/policy/impl/GlobalActions;->mDownload:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;
aput-object v2, v0, v1
const/4 v1, 0x[COLOR="Red"]5[/COLOR]
iget-object v2, p0, Lcom/android/internal/policy/impl/GlobalActions;->mRecovery:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;
aput-object v2, v0, v1
const/4 v1, 0x[COLOR="Red"]6[/COLOR]
iget-object v2, p0, Lcom/android/internal/policy/impl/GlobalActions;->mRestart:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;
aput-object v2, v0, v1
Credits: Huge credits to @rompnit for the use of the Screenshot method for this mod.
Do you have to be on a deodexed rom? Just flashed this twice on stock MK3 and I'm getting nothin'.
Sent from my SPH-L710 using XDA Premium 4 mobile app
marcran75 said:
Do you have to be on a deodexed rom? Just flashed this twice on stock MK3 and I'm getting nothin'.
Click to expand...
Click to collapse
Yes, 99% of any mods are going to be for deodexed. That is partly why it is extremely difficult to find an odexed custom rom.
tdunham said:
Yes, 99% of any mods are going to be for deodexed. That is partly why it is extremely difficult to find an odexed custom rom.
Click to expand...
Click to collapse
That's what I figured but thought I would ask anyways.
Sent from my SPH-L710 using XDA Premium 4 mobile app
another awesome mod !!! love it - so happy you have started making these - keep em' coming !!!!
VM SIII - jdsingle76's MK5 4.3
decimalman's TW dkp kernel
Between you and @CNexus, I will be killing someone soon with all the extra theming you have me doing. Nice job...
[email protected]'$ [email protected]@XY
marcran75 said:
Do you have to be on a deodexed rom? Just flashed this twice on stock MK3 and I'm getting nothin'.
Sent from my SPH-L710 using XDA Premium 4 mobile app
Click to expand...
Click to collapse
Move android.policy.jar and android.policy.jar.odex to your sdcard (to make a "backup" of them and delete at the same time) then flash this and it will work.
Deodexed mods can be used on odex, but not the other way around. Only catch is you gotta delete the affected odex files or else the system will preload those cache files and ignore the new file
CNexus said:
Move android.policy.jar and android.policy.jar.odex to your sdcard (to make a "backup" of them and delete at the same time) then flash this and it will work.
Deodexed mods can be used on odex, but not the other way around. Only catch is you gotta delete the affected odex files or else the system will preload those cache files and ignore the new file
Click to expand...
Click to collapse
Tried this and got stock at boot screen. Pulled battery and still the same.
marcran75 said:
Tried this and got stock at boot screen. Pulled battery and still the same.
Click to expand...
Click to collapse
Hmm...I've done this tons of times before on stock odexed and it's worked
Check the zip to see what (if any) other files are affected and move the odex files for those, then try flashing again
Is there anyway you could make a guide. ...I would love this on Wicked sensations.
http://i.imgur.com/qrByUGN.jpg
remotehugger said:
VM SIII - jdsingle76's MK5 4.3
decimalman's TW dkp kernel
Click to expand...
Click to collapse
Notice youre running virgin mobile... Thanks to tdunham, I have put together a zip to get the virgin mobile network running on the wicked sensations ROM... I have stock 4.3 android thru my ota update and with the zip it works perfect in VM.
ROM is here --> http://forum.xda-developers.com/showthread.php?t=2581010
Read the second post for the virgin mobile fix..
Just bored and saw that part of your post lol
Sent from my Virgin Mobile Galaxy S3, running Wicked Sensations Rom powered by DKP kernel, using Tapatalk 4.
bigpappags3 said:
Is there anyway you could make a guide. ...I would love this on Wicked sensations.
http://i.imgur.com/qrByUGN.jpg
Click to expand...
Click to collapse
Shut up clown. Don't give that other clown any ideas... Soon i'll have a 10 in 1 power menu and 60 toggles to theme...
[email protected]'$ [email protected]@XY
Confirm working on wicked and is nice. Nice mod
Sent from my SPH-L710 using xda app-developers app
Thanks for this tdunham. I already clicked thanks but this is just awesome. :thumbup:
Awesome mod. Thank you very much!
Update:
Added to the OP a second New Power Menu with Airplane Mode toggle removed.
Just flash over the other one if you want to try it.
I tried this and it force closes my phone settings (sure it is related to something I did to my personal framework-res.apk). So my question is if you could tell me which if any xmls need modified?
notmyepic said:
I tried this and it force closes my phone settings (sure it is related to something I did to my personal framework-res.apk). So my question is if you could tell me which if any xmls need modified?
Click to expand...
Click to collapse
I won't do full guide until later:
Code:
framework-res.apk edits:
Add the 3 icons (from the support file) to framework-res/res/drawable-xhdpi
Add 3 new lines to framework-res/res/values/strings:
<string name="download">Bootloader</string>
<string name="recovery">Recovery</string>
<string name="global_action_screenshot_txt">Screenshot</string>
</resources>
Still no guarantees if other changes were made that alter public values that get generated when framework-res is compiled.
Hey man, I changed he pngs to match the rest of Dandroid. In the 3rd option down instead of saying "download mode" it says "bootloader". Where would I go to change this?
Chad The Pathfinder said:
Hey man, I changed he pngs to match the rest of Dandroid. In the 3rd option down instead of saying "download mode" it says "bootloader". Where would I go to change this?
Click to expand...
Click to collapse
It's in the post before this one.
Edit: Sorry, meant the post above yours.

Categories

Resources