[MOD][Guide][How to] Translatable 4-way reboot - outsource hard code to resources - Galaxy S 5 Android Development (Snapdragon)

Hello guys!
This guide is a small addendum to the popular mod that's included in almost every tw rom today - 4 way reboot.
As you all know for now the 4 way reboot has an array of items that are hard coded into the smali. So... no matter what locale you're on, it will always be in english. You can of course translate it in the smali (let's say to italian), but then in all the locales it will be in italian.
I don't like hard coding. So I will share with you an easy and elegant way to bring this mod to the way android is intended to be. We will outsource the char sequence back where those items belong - to strings in resources. So when you switch to a different locale, your reboot menu will show in that locale's language. Provided you modified that locale like we will do now...
Preliminary requiremtns:
1. Basic knowledge in compiling and decompiling of apks
2. Text/xml editor
3. About 10 mins of your time
4. Working 4-way reboot for tw roms (use this guide for example)
5. A deodexed TW rom
So let's get cracking:
1. Decompile framework-res.apk for your build. Navigate to res/values/strings.xml
Scroll to the bottom and right before the line that says </resources> add a new line. We will add a new string.
(btw really no need to do that at the bottom of the screen - you can add anywhere).
I just like all the strings I am adding to be at the bottom - easier to find
2. So we do something like this...
Code:
<string name="reboot_title">Advanced reboot menu</string>
This will be the title of our reboot menu. You can choose any name for the string and have any content. Like "Bob's rom reboot menu"...
Save strings.xml
3. Navigate back to values folder and open arrays.xml
Scroll down and just like we did with strings.xml, we will add a new array of strings.
Like so...
Code:
<string-array name="restart_menu">
<item>Reboot Phone</item>
<item>Fast Boot</item>
<item>Download Mode</item>
<item>Recovery Mode</item>
</string-array>
You can choose any other name for your array or change the names of the items. BUT YOU CANNOT CHANGE THEIR ORDER!!!
Save arrays.xml
4. Now, we did all that so we can have it translatable to different locales. So lets do that. We will use Italian language as an example.
5. Navigate to res/values-it/strings.xml and copy the string you created in values/strings.xml to the end of the file.
Change the content of the string to the one in Italian. Like so...
Code:
<string name="reboot_title">Menu riavvio avanzato</string>
Note that the name of the string should remain THE SAME as in values/strings.xml
Save the italian strings.xml
6. Now we do the same to values-it/arrays.xml
Code:
<string-array name="restart_menu">
<item>Riavviare il dispositivo</item>
<item>Riavvio Rapido</item>
<item>Modalità Recovery</item>
<item>Modalità Download</item>
</string-array>
7. Save all your modified files and compile framework-res.apk
8. We're not done with it yet. Now decompile it and navigate to values/public.xml.
Open it in the text/xml editor and leave it open. We will use it in a little while.
9. Decompile (or backsmali) android.policy.jar
You should already have the 4 way reboot incorporated. (see requirements for the guide!!!)
Navigate to smali/com/android/internal/policy/impl/GlobalActions$99.smali
10. Search ro the following line:
invoke-direct {v1, v2}, Landroid/app/AlertDialog$Builder;-><init>(Landroid/content/ContextV
Right underneath it you will see the following:
const-string v2, "Reboot Menu"
This initializes the string builder for our dialog. This will send the string "Reboot Menu" to the register v2.
This is the "Hard Coding" that we want to avoid. So we change it. Instead we will send an integer to the register v2.
And that integer will be the public id for the string we created in strings.xml.
So go to your open public.xml file and search for the public id that the compiler created for our new string.
The easiest way to search would be by the name of the string. In this case would be reboot_title
Now what I find is this <public type="string" name="reboot_title" id="0x01040b8a" />
Your number could be different from mine... You use yours...
Copy ONLY the public id (in my case 0x01040b8a) and go back to your GlobalActions$99.smali file
Change
Code:
const[COLOR="Blue"][I][B]-string v2, "Reboot Menu"[/B][/I][/COLOR]
To
Code:
const [COLOR="Red"]v2, 0x01040b8a[/COLOR]
11. Now that we "fed" the public id to our register, we need to make sure the methos is USING it.
So The next line we change
From
Code:
invoke-virtual {v1, v2}, Landroid/app/AlertDialog$Builder;->setTitle([COLOR="Blue"]Ljava/lang/CharSequence;[/COLOR])Landroid/app/AlertDialog$Builder;
To
Code:
invoke-virtual {v1, v2}, Landroid/app/AlertDialog$Builder;->setTitle([COLOR="Red"]I[/COLOR])Landroid/app/AlertDialog$Builder;
So basically we said: do not use the char sequence, use the resources and find by ID that we fed into the register.
12. Now we do the same for the items in our reboot options.
Go back to the public.xml and find the public id for the array of strings we created in arrays.xml.
Search by name. I gave it a name restart_menu.
So I find this:
<public type="array" name="restart_menu" id="0x0107005e" />
We copy the public id 0x0107005e (remember - you use YOURS) and we go back to the smali.
13. Find this line and delete it:
Code:
sget-object v2, Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;->rebootOptions:[Ljava/lang/String;
Instead we put:
Code:
const v2, 0x0107005e
14. Now about 9 lines later you will see this monstrosity:
invoke-virtual {v1, v2, v3, v4}, Landroid/app/AlertDialog$Builder;->setSingleChoiceItems([Ljava/lang/CharSequence;ILandroid/content/DialogInterface$OnClickListenerLandroid/app/AlertDialog$Builder;
Basically it goes like this:
"We're gonna set the choice items for our reboot dialog.
We're gonna take them from the object called char sequence that we specified earlier
and assign it a function of doing something on click and use a function called Alert dialog builder"
Well, we don't want to use the char sequence. We want to use an integer we wrote into the v2 register.
So we change this:
Code:
invoke-virtual {v1, v2, v3, v4}, Landroid/app/AlertDialog$Builder;->setSingleChoiceItems([COLOR="Blue"][Ljava/lang/CharSequence;[/COLOR]ILandroid/content/DialogInterface$OnClickListener;)Landroid/app/AlertDialog$Builder;
To:
Code:
invoke-virtual {v1, v2, v3, v4}, Landroid/app/AlertDialog$Builder;->setSingleChoiceItems([COLOR="Red"]I[/COLOR]ILandroid/content/DialogInterface$OnClickListener;)Landroid/app/AlertDialog$Builder;
15. That's it. Save the edited smali and comlpile (or smali) android.policy.jar
MAKE BACKUP!!! Either nandroid or just have your working framework-res.apk and android.policy.jar in a flashable zip on your phone!!!!!!!​
16. Install both your modified framework-res.apk and your modified android.policy.jar into your device.
Flashing in recovery is recommended for framework jars.
If it reboots in the middle of you copying it into the system/framework you're in for alot of pain...
Well not actually pain but it will be either adb push, or rom reflash or backup framework files reflash in recovery.
Well, that's all!!! If you guys find it useful - use it and enjoy!
You can now translate your 4-way reboot to as many locales as you want.
Ask your users for help. Ask people from all around the world to translate those strings for you and put them in their locale in framework-res.
Most importantly - HAVE FUN!
No credit needed, no need to ask for permission to use it.
You can modify and redistribute and include in your rom - whatever!!! It's based on open source. It belongs to everyone!!!
As you can see - no flashable zips or ready made smali files are included. This is a "How-to" guide. Means - DO IT YOURSELF!!!
Cheers!!!

Hy mate ! Thanks for sharing this ! :good:

Great work Thanks for sharing girl.

That' s awesome!!! Thanks a lot

You are the best. All 4-way mods should be made this way . Clean, non hard coded, the way android is supposed to be ! Loved your mod since you did it on our beloved S2. Thanks for an excellent guide.
Thomas

DaOldMan said:
You are the best. All 4-way mods should be made this way . Clean, non hard coded, the way android is supposed to be ! Loved your mod since you did it on our beloved S2. Thanks for an excellent guide.
Thomas
Click to expand...
Click to collapse
A student can only be as good as their mentor! Thank YOU! For everything! ???
Inviato dal mio SM-G900F utilizzando Tapatalk

Thanks for sharing this guide my friend, good job :good:

Hi Dax! Awesome job you´ve done! Thx from me and the Echoe Members! :good::highfive::good:
Claudia! ​

YukiChan456 said:
Hi Dax! Awesome job you´ve done! Thx from me and the Echoe Members! :good::highfive::good:
Claudia! ​
Click to expand...
Click to collapse
thank you, Claudia! Great to see you here, my dear!!!

Offtopic: I was never gone. I 'm just always busy with the new forum and working! :silly:

I'm gonna try tomorrow, but if think it's too much for me. Gracie mille

Ajenaton1968 said:
I'm gonna try tomorrow, but if think it's too much for me. Gracie mille
Click to expand...
Click to collapse
Good luck let me know how it goes.
E di niente

daxgirl said:
Good luck let me know how it goes.
E di niente
Click to expand...
Click to collapse
Io sono spagnolo[emoji12] [emoji12] my english is poor [emoji23] [emoji23]

Ajenaton1968 said:
Io sono spagnolo[emoji12] [emoji12] my english is poor [emoji23] [emoji23]
Click to expand...
Click to collapse
Yeah, I got that. Well I don't speak Spanish (nor do I speak italian btw LOL). But on xda english is required

pleas moding for android 5 lolibop framework-res.apk & android.policy.jar
I tried for many but Commenting on the logo samsung
http://d-h.st/B9Tg

amro habib said:
pleas moding for android 5 lolibop framework-res.apk & android.policy.jar
I tried for many but Commenting on the logo samsung
http://d-h.st/B9Tg
Click to expand...
Click to collapse
I am sorry mate I really didn't understand the question
Sent from my SM-G900F using Tapatalk

daxgirl said:
I am sorry mate I really didn't understand the question
Sent from my SM-G900F using Tapatalk
Click to expand...
Click to collapse
ok
Possible you adjust the button on the attached link because I tried did not work

amro habib said:
ok
Possible you adjust the button on the attached link because I tried did not work
Click to expand...
Click to collapse
I will try. But what device is it?
Sent from my SM-G900F using Tapatalk

daxgirl said:
I will try. But what device is it?
Sent from my SM-G900F using Tapatalk
Click to expand...
Click to collapse
Thank you very much
my device note 3 N9005

Thanks man your fantastic it's done by me
The problem that because smali & baksmali...java

Related

Baksmali??

Can any one help me out with how to use baksmali so i can edit systemui to get rid of full bat notification.
Sent from my Haxsung Dark Infuse 4G powered by Infusion
Use APK Tool or APK Manager. The APK Manager gives you a menu to choose from.
Also posted in i9000 dev section:
http://forum.xda-developers.com/showthread.php?t=1295748
You may want to clear the battery fully charged notification when phone is on dock, or it doesn't go away even if unplugged. This mod fixes these.
NOTE: I didn't remove the notification, because I think it a better solution to leave the user this option rather than completely removing it.
* baksmali classes.dex in SystemUI.apk
* open com\android\systemui\statusbar\policy\StatusBarPolicy.smali
* search for "iget v3, v2, Landroid/app/Notification;->flags:I" at around line 1824, under
.method private addFullChargeNotification()V
* remove the following 3 lines:
iget v3, v2, Landroid/app/Notification;->flags:I
or-int/lit8 v3, v3, 0x2
iput v3, v2, Landroid/app/Notification;->flags:I
* save, smali, and update apk
Now you know the trick. SystemUI would make the full charge notification as on-going (flags = flags|0x2), and we simply convert it back to default.
Feel free to add in your ROM but please give proper credits.
Sent from my SAMSUNG-SGH-I997 using Tapatalk
Use apktool..much easier...i posted rey on general thread you posted....but very important...you cant just decompile and recompile systemUI.apk..it wont work...you have to install the proper framework files..ie framework-res.apk...systemUI uses it as its base.... In apktool type "apktool if framework-res.apk ", and it will install the framework
Sent from my SAMSUNG-SGH-I997 using xda premium

[How To] Fix Phantom Voicemail For Most ROMs

The main post has several older ROMs that are not likely to change. If you are looking for newer ROMS like Decks ICS, CM9, AOKP, and MIUIv4 look at the end of the thread and work your way back. Most are fixes uploaded as attachments after request are made. Since there are so many updates I am not even going to try to keep the main thread current becuase of time constrants.
Thanks for your understanding,
JusticeAA
***********************************************************************
I know there are several Sprint users that are plagued with the native voicemail notification icon and message "New Voicemail (2) Dial ..." which is commonly referred to as the "phantom voicemail."
There is a "fix" in which you can call Sprint and activate an old phone but for some with government contacts and such that is not an option. I found a fix that should work with almost all ROMs since it changes the android side not the HTC side.
I have attached a flashable zip for several popular rom's to this post. For the DIY I will leave the walk through.
Basic knowledge and tools about decompiling and compiling apk's is required, do a search it will be helpful. For some reason I decompile with apkmultitool and recompile with apktool and have the best luck, your results may vary.
**Standard Disclaimer: Know what you are doing and backup anything before you change things. Google search is your friend.**
Here are the steps:
1. Extract the Phone.apk from your ROM and decompile.
2. Open \smali\com\android\phone\CallNotifier$1.smali if you are using a sense rom, I use Notepad++
3. Other roms you may have to search for it, MIUI has the section needed in CallNotifier$2.smali
3. Near the bottom of the small file you will see something like this:
.method public onMessageWaitingIndicatorChangedEnhanced(I)V
.locals 1
.parameter "count"
.prologue
.line 638
iget-object v0, p0, Lcom/android/phone/CallNotifier$1;->this$0:Lcom/android/phone/CallNotifier;
#calls: Lcom/android/phone/CallNotifier;->onMwiChanged(I)V
invoke-static {v0, p1}, Lcom/android/phone/CallNotifier;->access$000(Lcom/android/phone/CallNotifier;I)V
.line 639
return-void
.end method
Click to expand...
Click to collapse
If you can't find it use Notepad++ and search in multiple files for "onMessageWaitingIndicatorChanged"
In that section (between .method public... and .end method), change the line:
invoke-static {v0, p1}, Lcom/android/phone/CallNotifier;->access$000(Lcom/android/phone/CallNotifier;I)V
Click to expand...
Click to collapse
to:
return-void
Click to expand...
Click to collapse
Now it should look like this:
.method public onMessageWaitingIndicatorChangedEnhanced(I)V
.locals 1
.parameter "count"
.prologue
.line 638
iget-object v0, p0, Lcom/android/phone/CallNotifier$1;->this$0:Lcom/android/phone/CallNotifier;
#calls: Lcom/android/phone/CallNotifier;->onMwiChanged(I)V
return-void
.line 639
return-void
.end method
Click to expand...
Click to collapse
4. Save your smali and recompile, if you did it right there should be no errors (I always get errors in apkmultitool ,that is why I use apktool.)
5. Copy the classes.dex from your new apk build into the original apk to keep the original signature.
5. Push your modified Phone.apk back into /system/app and you should be good to go.
This is a much cleaner method then what I used before. This should reduce battery drain and prevent sudden closing of the Phone.apk.
THEY ARE FLASHABLE ZIPs. Make sure you wipe cache and dalvik first to be on the safe side.
Thanks for passing this on man. Imma have to try this.
I've called my phone, left a message. Dialed vm, erased message and the vm icon is gone after this.
Sent from my PC36100 using Tapatalk
Any chance of getting this fix in a zip file, or apk for us less techknow furtunate ?
Thanks
lionedas said:
Any chance of getting this fix in a zip file, or apk for us less techknow furtunate ?
Thanks
Click to expand...
Click to collapse
I uploaded the two that I have, what rom are you using? I obliviously won't have time to do every request but I can do some.
JusticeAA said:
I uploaded the two that I have, what rom are you using? I obliviously won't have time to do every request but I can do some.
Click to expand...
Click to collapse
Radiance RC4
so I think the rcmix you posted should work right ?
Edit: after looking at them I dont think they are the same, I am post phone.akp from RC4
incase you get time to mod it.
Thanks again
lionedas said:
Radiance RC4
so I think the rcmix you posted should work right ?
Click to expand...
Click to collapse
Its based off the same build so it should, fyi Radiance RC5 is out now.
Make a nandroid first so you can go back if it doesn't work.
sizes are different posted apk above
RC4 and RC5 use the same phone.apk so it should be good for guys needing it for both..
lionedas said:
sizes are different posted apk above
RC4 and RC5 use the same phone.apk so it should be good for guys needing it for both..
Click to expand...
Click to collapse
I just upload the modded Radiance Phone.apk. The archive was giving me trouble in 7zip but I think I got it straightened out.
Please let me know if it works.
Anyone have any how to links, or ? on getting system apk's installed
Thanks
Nice job.Thank you
Any chance you can do CyanogenMod 7.2?
nydriek said:
Any chance you can do CyanogenMod 7.2?
Click to expand...
Click to collapse
There should already be a setting in CM7 for that. If you go into settings, then phone settings, one of the options is something like display voicemail notifications. Make sure that is off and they should be gone.
lionedas said:
Anyone have any how to links, or ? on getting system apk's installed
Thanks
Click to expand...
Click to collapse
Sorry about being so lazy, I am testing out making flashable zips and will upload them as soon as they are done.
Flashable zips are up, the only one I have test is for RCMix3D, so please let me know.
lionedas said:
Radiance RC4
so I think the rcmix you posted should work right ?
Edit: after looking at them I dont think they are the same, I am post phone.akp from RC4
incase you get time to mod it.
Thanks again
Click to expand...
Click to collapse
4 and 5 are up, in case you want to update!
Hey, think you can make one for nrg energy Rom? I was tryin your method but screwed up a few times. A flashable zip would be awesome
Sent from my PC36100 using xda premium
Steven 1 said:
Hey, think you can make one for nrg energy Rom? I was tryin your method but screwed up a few times. A flashable zip would be awesome
Sent from my PC36100 using xda premium
Click to expand...
Click to collapse
Done, please report back on how it works.
AOSP?
ive tried to decompile this using apktool for miui and it keeps telling me that it cant decode attr value like 487536705398 times its crazy any solutions?
dvickers said:
ive tried to decompile this using apktool for miui and it keeps telling me that it cant decode attr value like 487536705398 times its crazy any solutions?
Click to expand...
Click to collapse
MIUI is totally different, I was able to decompile it with apkmultitool by using the framework as a dependency.
The code is in a totally different place too and it already used the (Z) value. I did a small modification and it compiled without errors but that doesn't mean it will work.
(removed)

[HOW-TO][4.1.2] Proper home button lagfix

Hello xda'ers,
someone reading the title may say: but we still have no home button lag!
You could link me Oliwe's mod but this is a different thing.
His fix or mod consist to disable mHomeKeyDoubleClickConcept launching directly launchHomeFromHotKey()V method.
Nothing bad until you hate to have double click feature to launch vlingo (or voice commands).
If you want NO LAG and keep the double click feature?
Now there s a real fix to the home button lag, no workaround, no disabling samsung features! :victory:
We need to place a single line into a .smali file inside our android.policy.jar called PhoneWindowManager.smali.
This mod it s really simple to do, there s no :cond_xx to replace, add or remove.
Simply add green part
Code:
.line 3267
.end local v38 #statusbar:Lcom/android/internal/statusbar/IStatusBarService;
:cond_304
:goto_304
const/16 v46, 0x0
move/from16 v0, v46
move-object/from16 v1, p0
iput-boolean v0, v1, Lcom/android/internal/policy/impl/PhoneWindowManager;->mHomePressed:Z
[COLOR="DarkGreen"]invoke-virtual/range {p0 .. p0}, Lcom/android/internal/policy/impl/PhoneWindowManager;->launchHomeFromHotKey()V[/COLOR]
Now we launch home before double click is recognized, but.. we re doing this twice, so we need to delete the second launch.
In fact if we take a look at PhoneWindowManager$HomeKeyDoubleClickConcept.smali we can see, at the end of singleClickJob()V method (red lines)
Code:
[COLOR="Red"]if-eqz v7, :cond_93[/COLOR]
const-string v7, "HomeKeyDoubleClick"
const-string v8, " in singleClickJob(), mSentHomeDownToApp is false. Now call launchHomeFromHotKey()"
invoke-static {v7, v8}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I
.line 8201
[COLOR="Red"] :cond_93
iget-object v7, p0, Lcom/android/internal/policy/impl/PhoneWindowManager$HomeKeyDoubleClickConcept;->this$0:Lcom/android/internal/policy/impl/PhoneWindowManager;
invoke-virtual {v7}, Lcom/android/internal/policy/impl/PhoneWindowManager;->launchHomeFromHotKey()V
[/COLOR] goto :goto_48
.line 8203
:cond_99
iget-boolean v7, p0, Lcom/android/internal/policy/impl/PhoneWindowManager$HomeKeyDoubleClickConcept;->DEBUG:Z
if-eqz v7, :cond_48
const-string v7, "HomeKeyDoubleClick"
const-string v8, " in singleClickJob(), mSentHomeDownToApp is true. now set mSentHomeDownToApp to false and do nothing."
invoke-static {v7, v8}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I
goto :goto_48
.end method
that we re launching again "launchhomefromhotkey" method, so we need to delete the red lines.
This will fix home button lag, won t let u return on default homescreen (but u will get the homescreen u were before) and no more problem with apex or other non touchwiz launchers.
it s so easy that maybe samsung someday will implement it this way lol
that s all.
Easy to do
recompile and enjoy your no lag home button with double click feature.
need a zip? Send me your android.policy.jar or request this mod to your rom maker.
download for phoenix v5
HERE
in case of problems restore your old android.policy, u can get it on 3rd post, Androssama's courtesy
Mirko ddd said:
recompile and enjoy your no lag home button with double click feature.
Click to expand...
Click to collapse
I would've loved to be able to do so . Problem is I don't know what to use to edit apk files. Care to share what a begginer should have in his android tool-case?
Mirko ddd said:
need a zip? Send me your android.policy.jar or request this mod to your rom maker.
Click to expand...
Click to collapse
I attached the file from Phoenix v5 (ZSDMA6 base)
Androssama said:
I would've loved to be able to do so . Problem is I don't know what to use to edit apk files. Care to share what a begginer should have in his android tool-case?
I attached the file from Phoenix v5 (ZSDMA6 base)
Click to expand...
Click to collapse
Thanks, i ll zip asap. I m not home now
EDIT: got it on 2nd post, cheers
can tis work on stock rooted?? MA6..
Same for me, I don't know how to compile. Maybe my android.policy.jar is the same than Androssama's. I'm from Android Revolution HD 10.0.
Thanks.
Edit : When we have the zip, we have to flash it or just extract and replace android.policy. jar in /system/framework ?
Could you do this with Xposed framework. ....?
That would be easier...
Sent from my GT-N7100 using Tapatalk HD
Mirko, can I ask what do you use to decompile/recompile smali?
Every time I try (granted it was ages ago) I always get errors
Uvoguine said:
Same for me, I don't know how to compile. Maybe my android.policy.jar is the same than Androssama's. I'm from Android Revolution HD 10.0.
Thanks.
Edit : When we have the zip, we have to flash it or just extract and replace android.policy. jar in /system/framework ?
Click to expand...
Click to collapse
i just needed one to test if worked, source is in OP, tutorial is easy, so every rom maker can include it with proper credits.
amg009 said:
Could you do this with Xposed framework. ....?
That would be easier...
Sent from my GT-N7100 using Tapatalk HD
Click to expand...
Click to collapse
yes i can, but it s not my buisness since i have no roms here. u can ask it to your rom maker, source is in OP
CitizenLee said:
Mirko, can I ask what do you use to decompile/recompile smali?
Every time I try (granted it was ages ago) I always get errors
Click to expand...
Click to collapse
probably because u do it with apktool.best way is to use smali/baksmali directly from the SDK.
Hi Mirko,
Could you modify it for me? I'm using Wanamlite 2.8 MA3 rom, attached is the android.policy.jar
Thanks!!
amg009 said:
Could you do this with Xposed framework. ....?
That would be easier...
Sent from my GT-N7100 using Tapatalk HD
Click to expand...
Click to collapse
Yep, it would be gr8 if someone could implement this through Xposed framework....
Sorry to dig this up but I couldnt find another proper solution.
How can I achieve this on 4.3 (DN3 ROM)?

[Guide] Long press menu button to kill app

This mod will make you able to instantly kill app activity by long press on menu button​
The original mod is done by maskerwsk, who modifies Mirko_ddd method
Click to expand...
Click to collapse
Needed tools:
1) Backsmali/Smali program from here
2) Notepad++ program from here
3) WinRAR or 7-zip archiver
The procedure:
- Backsmali android.policy.jar
- Navigate to classout/com/android/internal/policy/impl/ folder and open PhoneWindowManager.smali file
- Locate the following code by tracking "mMenuLongPress" and do the following changes:
before:
Code:
.line 1674
new-instance v0, Lcom/android/internal/policy/impl/PhoneWindowManager$[B][COLOR="Red"]9[/COLOR][/B];
invoke-direct {v0, p0}, Lcom/android/internal/policy/impl/PhoneWindowManager$[B][COLOR="Red"]9[/COLOR][/B];-><init>(Lcom/android/internal/policy/impl/PhoneWindowManager;)V
iput-object v0, p0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mMenuLongPress:Ljava/lang/Runnable;
after:
Code:
.line 1674
new-instance v0, Lcom/android/internal/policy/impl/PhoneWindowManager$[B][COLOR="Blue"]KillConcept[/COLOR][/B];
invoke-direct {v0, p0}, Lcom/android/internal/policy/impl/PhoneWindowManager$[B][COLOR="Blue"]KillConcept[/COLOR][/B];-><init>(Lcom/android/internal/policy/impl/PhoneWindowManager;)V
iput-object v0, p0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mMenuLongPress:Ljava/lang/Runnable;
N.B: $9 might be differ according to ROM, but track "mMenuLongPress" to locate the wanted code portion
Click to expand...
Click to collapse
- Save changes.
- Now add this new file (PhoneWindowManager$KillConcept.smali) to classout/com/android/internal/policy/impl/ folder. You can download it from here.
You should make sure that the id in PhoneWindowManager$KillConcept.smali is linked to "permlab_forceBack" id in framework-res.apk public.xml. See post #15 to know exactly how it is done.
Click to expand...
Click to collapse
- Now recompile (smali) the classout folder and open android.policy.jar by WinRAR or 7-zip and substitute classes.dex inside android.policy.jar with the new classes.dex file.. now push the modified android.policy.jar to your device and fix permissions to chmod 644.
Extra step:
To adjust timeout delay, backsmali framework.jar and navigate to classout/android/view/ folder and open ViewConfiguration.smali and search for this method and change RED text value:
Code:
.method public static getGlobalActionKeyTimeout()J
.registers 2
.prologue
.line 669
const-wide/16 v0, [B][COLOR="Red"]0x1f4[/COLOR][/B]
return-wide v0
.end method
As you can see, this hex value means 500; i.e, 0.5 second.. So we will change it to which delay we want:
0x1f4 = 0.5 second (default value)
0x2ee = 0.75 second
0x3e8 = 1 second
0x4e2 = 1.25 second
0x5dc = 1.5 second
0x6d6 = 1.75 second
0x7d0 = 2 second
N.B: applying this change, will affect the timeout delay across OS!!
Click to expand...
Click to collapse
Now you can open any app and then long press the menu button to exit instantly..
Is it possible to control delay before an app gets killed?
Sent from my GT-N7000 using Tapatalk HD
ocujos said:
Is it possible to control delay before an app gets killed?
Sent from my GT-N7000 using Tapatalk HD
Click to expand...
Click to collapse
No in the meantime,,, but may be in future, since it involves complicated coding and decompiling other system app..
ocujos said:
Is it possible to control delay before an app gets killed?
Sent from my GT-N7000 using Tapatalk HD
Click to expand...
Click to collapse
majdinj said:
No in the meantime,,, but may be in future, since it involves complicated coding and decompiling other system app..
Click to expand...
Click to collapse
I have found a short way to do that,,, I will update OP soon after I come back home
Edit:
Added extra step
majdinj said:
I have found a short way to do that,,, I will update OP soon after I come back home
Edit:
Added extra step
Click to expand...
Click to collapse
hi guys this mod is fantastic...
is there something same for the Galaxy note II?
thank's to all for the ansewers!
mikempower said:
hi guys this mod is fantastic...
is there something same for the Galaxy note II?
thank's to all for the ansewers!
Click to expand...
Click to collapse
nobody?
Inviato dal mio GT-N7100 con Tapatalk 2
mikempower said:
nobody?
Inviato dal mio GT-N7100 con Tapatalk 2
Click to expand...
Click to collapse
I think it is the same buddy
for galaxy note i flashed a zip wich made all in one step.
where a can i find it for note II? (if it exists?)
Inviato dal mio GT-N7100 con Tapatalk 2
mikempower said:
for galaxy note i flashed a zip wich made all in one step.
where a can i find it for note II? (if it exists?)
Inviato dal mio GT-N7100 con Tapatalk 2
Click to expand...
Click to collapse
Google
(But only if it exists)
projeto56 said:
Google
(But only if it exists)
Click to expand...
Click to collapse
very funny!
but if i could find it on google,i would have not asked for it.
mikempower said:
very funny!
but if i could find it on google,i would have not asked for it.
Click to expand...
Click to collapse
Then it's safe to presume it doesn't exist
You could follow the steps on the OP, then make a flashable zip with the modded files, open a new thread and get a million thanks
yes.. the only problem is that i'm not able to do it..
Inviato dal mio GT-N7100 con Tapatalk 2
nice mod!
is it possible to change long press menu to recent apps?
You should make sure that the id in PhoneWindowManager$KillConcept.smali is linked to "permlab_forceBack" id in framework-res.apk public.xml
Click to expand...
Click to collapse
as I can check this? could you specify a bit more please
Javho said:
as I can check this? could you specify a bit more please
Click to expand...
Click to collapse
Yes..
1. decompile framework-res.apk
2. go to decompiled folder res/values folder and open public.xml file
3. search for permlab_forceBack. It will be something like this:
Code:
<public type="string" name="permlab_forceBack" id="[B][COLOR="Blue"]0x01040245[/COLOR][/B]" />
As you see here our targeted id is 0x01040245
4. now open PhoneWindowManager$KillConcept.smali and locate this portion:
Code:
.line 885
move-object/from16 v0, p0
iget-object v14, v0, Lcom/android/internal/policy/impl/PhoneWindowManager$KillConcept;->this$0:Lcom/android/internal/policy/impl/PhoneWindowManager;
iget-object v14, v14, Lcom/android/internal/policy/impl/PhoneWindowManager;->mContext:Landroid/content/Context;
const v15, [B][COLOR="Blue"]0x1040245[/COLOR][/B]
const/16 v16, 0x0
invoke-static/range {v14 .. v16}, Landroid/widget/Toast;->makeText(Landroid/content/Context;II)Landroid/widget/Toast;
move-result-object v14
invoke-virtual {v14}, Landroid/widget/Toast;->show()V
As you can see, I just match the id to be exactly the same like the one in public.xml of framework-res.apk (you should omit the first 0 digit; i.e, 0x01040245 will be 0x1040245)
..
majdinj said:
Yes..
1. decompile framework-res.apk
2. go to decompiled folder res/values folder and open public.xml file
3. search for permlab_forceBack. It will be something like this:
Code:
<public type="string" name="permlab_forceBack" id="[B][COLOR="Blue"]0x01040245[/COLOR][/B]" />
As you see here our targeted id is 0x01040245
4. now open PhoneWindowManager$KillConcept.smali and locate this portion:
Code:
.line 885
move-object/from16 v0, p0
iget-object v14, v0, Lcom/android/internal/policy/impl/PhoneWindowManager$KillConcept;->this$0:Lcom/android/internal/policy/impl/PhoneWindowManager;
iget-object v14, v14, Lcom/android/internal/policy/impl/PhoneWindowManager;->mContext:Landroid/content/Context;
const v15, [B][COLOR="Blue"]0x1040245[/COLOR][/B]
const/16 v16, 0x0
invoke-static/range {v14 .. v16}, Landroid/widget/Toast;->makeText(Landroid/content/Context;II)Landroid/widget/Toast;
move-result-object v14
invoke-virtual {v14}, Landroid/widget/Toast;->show()V
As you can see, I just match the id to be exactly the same like the one in public.xml of framework-res.apk (you should omit the first 0 digit; i.e, 0x01040245 will be 0x1040245)
..
Click to expand...
Click to collapse
thanks for the reply: D, and the other is whether it is possible that instead of occupying occupy menu button back?
Javho said:
thanks for the reply: D, and the other is whether it is possible that instead of occupying occupy menu button back?
Click to expand...
Click to collapse
I don't know if I understand the question, but menu button will not be affected by the mod,, it will have another function that is long press to kill..
if you mean long press back button to kill, believe me this one is much easier to mod than back to kill since back button has multi-window function as well which you need to deal with during coding as well.
..
Thanks for mod. Do I navigate to PhoneWindowsManager.smali using RootExplorer?
Neutrino22 said:
Thanks for mod. Do I navigate to PhoneWindowsManager.smali using RootExplorer?
Click to expand...
Click to collapse
No.. You need to pull the framework to the pc. Then decompile it using any of the available methods. The navigate to the file you specified. Open it in notepad++ and do the editing.
Sent from my GT-I9500 using xda premium
Neutrino22 said:
Thanks for mod. Do I navigate to PhoneWindowsManager.smali using RootExplorer?
Click to expand...
Click to collapse
No. Use apktool to decompile and then notepad ++ to mod the smalies.

[GUIDE] How to Add REAL Recent Cardstack to You're SystemUI

Hy I'm noobs want to share little guide for you are...
this guide is how to bring recent cardstack to youre ROM... Ok lets to mod.
First Big Thanks to :​
1. Muhammad Bagus Prasetyo (My best friend which first person who can bring cardstack on Samsung Core 2).
2. Lollifox ROM and Paranoid ROM for file comparation.
Click to expand...
Click to collapse
NOTE :​
1. If you get FC use LOGCAT to know the error and fix by youre self.
2. I'm try this on Stock touchwiz Kitkat 4.4.2 (My device use Spreadrum Shark (sc8830) Chipset)
3. In my stock Stock touchwiz Kitkat 4.4.2 UI will Forceclose when Im use Navbar
4. In my stock Stock touchwiz Kitkat 4.4.2 UI will Forceclose when any moddification in android.policy.jar which contain navbar modding.
5. In my heart and my mind Navbar not critical uses so I'M AVOID THE FC WHEN USE NAVBAR AND I'M NOT USE NAVBAR.
6. CONCLUSION : If youre want to fix FC when use Navbar , please compare again with Lollifox ROM file.
7. I DON'T KNOW WILL WORK ON ANOTHER OS BUT JUST TRY IT.
Click to expand...
Click to collapse
BUG : NOT AVAILABLE CLEAR ALL RECENT.
Requirepment :
1. Brain
2. Apktool
3. A cup of tea or cofee
STEP 1 :
1. Decompile Framework-res.apk then marger file on attachment.
2. add this on string.xml
HTML:
<string name="setting_confirmation_ask_me_later">Ask later</string>
<string name="setting_confirmation_yes">Yes</string>
<string name="setting_confirmation_no">No</string>
3. recompile and decompile again to get id public
4. open res/value/public.xml and dont close it.
Click to expand...
Click to collapse
STEP 2 :
1. Decompile framework.jar
2. marger file on attached to Landroid/content/pm/HERE
3. recompile again
STEP 3 :
1. Decompile framework2.jar
2. marger gifview.smali TO Landroid/widget/HERE
3. marger file which have name SettingConfirmationHelper...... TO Landroid/util/HERE
4. Change id public in SettingConfirmationHelper.smali with your id public on framework-res.apk/res/value/public.xml (7 ids which MUST changed)
Code:
- 0x01040bcb ----> <public type="string" name="setting_confirmation_yes" id="0x01040bcb" />
- 0x01040bca ----> <public type="string" name="setting_confirmation_ask_me_later" id="0x01040bca" />
- 0x01040bcc ----> <public type="string" name="setting_confirmation_no" id="0x01040bcc" />
- 0x0109014b (on smali have 2 id like this) ----> <public type="layout" name="setting_confirmation_dialog" id="0x0109014b" />
- 0x01020473 ----> <public type="id" name="setting_confirmation_dialog_visual_hint" id="0x01020473" />
- 0x01020474 ----> <public type="id" name="setting_confirmation_dialog_visual_gif" id="0x01020474" />
5. recompile again
STEP 4 :
1. Decompile SystemUI.apk and merger/replace folder file from me in drawable and drawable-hdpi
2. Delete all file on folder smali\com\android\systemui\recent\ DELETE ALL
3. Merger file which in folder recent in attachment file to smali\com\android\systemui\recent\HERE
4. Merger file which in folder sands in attachment file to smali\com\android\systemui\HERE
5. Merger file in folder Layout to Layout folder ... If exist on youre folder REPLACE IT.
6. Merger file in folder Layout-land to Layout-land folder ... If exist on youre folder REPLACE IT.
7. Change all file status_bar_recent_panel.xml and status_bar_recent_item in youre layout folder with file in folder Layout from ME.
8. Change all file status_bar_recent_panel.xml and status_bar_recent_item from folder Layout-land if you see to youre folder which have name contain land.
9. add this to string.xml
HTML:
<string name="status_bar_recents_card_stack_title">Recents card stack view</string>
<string name="status_bar_recents_card_stack_message">Would you like to enable recents card stack view?</string>
<string name="navbar_recents_clear_all_title">Clear all</string>
<string name="navbar_recents_clear_all_message">Would you like the recents button to clear all apps?</string>
<string name="floating_mode_blacklisted_app">The current app is blacklisted as it may not work as expected in floating mode</string>
<string name="status_bar_recent_floating_item_title">Floating mode</string>
10. add this to values/dimen.xml
HTML:
<dimen name="status_bar_recents_card_margin">15.0dip</dimen>
<dimen name="status_bar_recents_app_color_bar_height">50.0dip</dimen>
<dimen name="status_bar_recents_app_color_bar_label_size">16.0dip</dimen>
<dimen name="status_bar_recents_app_color_bar_icon_size">30.0dip</dimen>
<dimen name="status_bar_recents_app_color_bar_icon_margin">13.0dip</dimen>
<dimen name="status_bar_recents_app_color_bar_button_sep">9.0dip</dimen>
<dimen name="status_bar_recents_app_color_bar_button_margin">18.0dip</dimen>
<dimen name="status_bar_recents_app_color_bar_button_size">14.0dip</dimen>
11. add this to values/ids.xml
HTML:
<item type="id" name="floating_mode_blacklisted_app">false</item>
<item type="id" name="app_top_colored_bar">false</item>
<item type="id" name="app_floating">false</item>
<item type="id" name="app_kill">false</item>
<item type="id" name="app_thumbnail_border">false</item>
<item type="id" name="recent_launch_floating">false</item>
add this to values/color.xml
HTML:
<color name="status_bar_recents_app_bar_color">#ffdcdcdc</color>
<color name="status_bar_recents_app_label_color_dark">#e0181818</color>
<color name="status_bar_recents_app_label_color_light">#e0ffffff</color>
12. recompile and decompile again.
13. Go to smali\com\android\systemui\recent\HERE ... change the ids on smalis ... Because contain a lot off id so Im give my id public off my SystemUI and my Framework... use it to compere ids. Compare in this smali :
--> RecentTasksLoader.smali
--> RecentsVerticalScrollView.smali
--> RecentsPanelView.smali
--> RecentsHorizontalScrollView.smali
--> RecentsCardStackView.smali
--> RecentsActivity.smali
--> Recents.smali
--> FadedEdgeDrawHelper.smali
14. open basestatusbar in Lcom/android/systemui/statusbar/BaseStatusBar.smali
--> add this under # instance fields
Code:
.field protected mImmersiveModeStyle:I
--> search .method public toggleRecentApps()V
change whole method with this :
-->
Code:
.method public toggleRecentApps()V
.locals 2
const/16 v0, 0x3fc
iget-object v1, p0, Lcom/android/systemui/statusbar/BaseStatusBar;->mHandler:Lcom/android/systemui/statusbar/BaseStatusBar$H;
invoke-virtual {v1, v0}, Landroid/os/Handler;->removeMessages(I)V
iget-object v1, p0, Lcom/android/systemui/statusbar/BaseStatusBar;->mHandler:Lcom/android/systemui/statusbar/BaseStatusBar$H;
invoke-virtual {v1, v0}, Landroid/os/Handler;->sendEmptyMessage(I)Z
return-void
.end method
--> next search .method protected toggleRecentsActivity()V
change whole method with this :
-->
Code:
.method protected toggleRecentsActivity()V
.locals 4
iget-object v0, p0, Lcom/android/systemui/statusbar/BaseStatusBar;->mRecents:Lcom/android/systemui/RecentsComponent;
if-eqz v0, :cond_0
iget-boolean v0, p0, Lcom/android/systemui/statusbar/BaseStatusBar;->mBlockRecents:Z
if-nez v0, :cond_0
iget-object v0, p0, Lcom/android/systemui/statusbar/BaseStatusBar;->mRecents:Lcom/android/systemui/RecentsComponent;
iget-object v1, p0, Lcom/android/systemui/statusbar/BaseStatusBar;->mDisplay:Landroid/view/Display;
iget v2, p0, Lcom/android/systemui/statusbar/BaseStatusBar;->mLayoutDirection:I
invoke-virtual {p0}, Lcom/android/systemui/statusbar/BaseStatusBar;->getStatusBarView()Landroid/view/View;
move-result-object v3
iget p0, p0, Lcom/android/systemui/statusbar/BaseStatusBar;->mImmersiveModeStyle:I
invoke-interface {v0, v1, v2, v3, p0}, Lcom/android/systemui/RecentsComponent;->toggleRecents(Landroid/view/Display;ILandroid/view/View;I)V
:cond_0
return-void
.end method
15. go to Lcom/android/systemui/ replace RecentsComponent.smali with my RecentsComponent.smali which Im attachment.
16. All done ... RECOMPILE all edited apk and jar ... AND DONT FORGET TO SIGN THE APK FILE.
17. Put All editted file to flashable.zip and flash it....
Click to expand...
Click to collapse
I has been attached all file and the guide in xml type. Download in attached file.
I'm from Indonesian specially from Central Java and I'm bad in English so I'm so sorry for my bad English in whole text in this guide .
I'm only need a little Credit if you use this guide. Thank you!
DON'T FORGET TO HIT THANKS BUTTON IF YOU LIKE MY WORK AND HELP YOU :good: ​
For Video Recent Cardstact from this guide Go HERE YOUTUBE​
Thanks for this Guide will try it soon. One question: Where can I download Lollifox and Paranoid ROM??
Thank me, by hitting the Thanks Button!
AnDrOiiiD_YT said:
Thanks for this Guide will try it soon. One question: Where can I download Lollifox and Paranoid ROM??
Thank me, by hitting the Thanks Button!
Click to expand...
Click to collapse
For lollifox here XDA
For PA ROM you can download from everywhere use 4.6 beta version
Mantep bro:highfive:
fzn tools said:
Mantep bro:highfive:
Click to expand...
Click to collapse
Hihihi yuph ... try that om
Ih24n said:
Hihihi yuph ... try that om
Click to expand...
Click to collapse
Mumet om
fzn tools said:
Mumet om
Click to expand...
Click to collapse
Wkwkwk this is masih sederhana... all inti is di id2nya... basestatusbar only add instance field. And change method.... plis teliti semua smali kira2 ada id langsung compare... because if not all id changed with youre id ... recent will fc.
Ih24n said:
Wkwkwk this is masih sederhana... all inti is di id2nya... basestatusbar only add instance field. And change method.... plis teliti semua smali kira2 ada id langsung compare... because if not all id changed with youre id ... recent will fc.
Click to expand...
Click to collapse
Ok bro, u very very smart:highfive:
Manteeep om.. suksesss
savixx said:
Manteeep om.. suksesss
Click to expand...
Click to collapse
Sukses nerapin?
Good job mastah, i will try this ASAP :thumbsup:
Ih24n said:
Sukses nerapin?
Click to expand...
Click to collapse
Iyaaa om.
@DSttr said:
Good job mastah, i will try this ASAP :thumbsup:
Click to expand...
Click to collapse
I hope youre success sir om
savixx said:
Iyaaa om.
Click to expand...
Click to collapse
Wkwkwkwk selamat menikmati ...
An error .. while recompiling framework2.jar
Gifview.smali is giving me a recompiling error .. It's saying "Invalid literal value 16384. Low 16 bits must be zeroed out. And 4 other same type of error are there ". Help me ... Sir.
I am using Samsung Star Pro s7262 ROM : 4.1.2 jb
Chinmay.wiz said:
Gifview.smali is giving me a recompiling error .. It's saying "Invalid literal value 16384. Low 16 bits must be zeroed out. And 4 other same type of error are there ". Help me ... Sir.
I am using Samsung Star Pro s7262 ROM : 4.1.2 jb
Click to expand...
Click to collapse
Use apktool v1.5.2 for compile .jar. because smali in guide .jar i use apktool v1.5.2 to decompile it.
Is it work on Android4.3?
Timeral said:
Is it work on Android4.3?
Click to expand...
Click to collapse
I dont know will working on JB(4.3) and lower ... But to know it work or not just try and see work or not sir

Categories

Resources