[Manual] Proper CRT-OFF for JB - http://forum.xda-developers.com/showpost.php?p=32761083
How can you do for our phone?
How can you do for our phone?
This means you have mismatched values.. check values in values\strings.xml and pic name in drawable-xhdpi folder/QUOTE]
Ok majdinj, I solved! But I noticed something wrong...sometimes the app that I integrated into settings.apk doesn't work well. After a reboot doesn't work properly. The only way to resolve this is to reinstall the app. Why?
You're probably using its first run activity instead of the one that runs on subsequent opening.This means you have mismatched values.. check values in values\strings.xml and pic name in drawable-xhdpi folder/QUOTE]
Ok majdinj, I solved! But I noticed something wrong...sometimes the app that I integrated into settings.apk doesn't work well. After a reboot doesn't work properly. The only way to resolve this is to reinstall the app. Why?
Sent from my GT-I9100 using Tapatalk 2
In PowerManagerService$ScreenBrightnessAnimator.smali look at this line:[Manual] Proper CRT-OFF for JB - http://forum.xda-developers.com/showpost.php?p=32761083
How can you do for our phone?
# static fields
.field static final ANIMATE_LIGHTS:I = 0xa
[B][COLOR="Blue"].field static final ANIMATE_POWER_OFF:I = 0xb[/COLOR][/B]
.line 3022
iget-object v7, p0, Lcom/android/server/PowerManagerService$ScreenBrightnessAnimator;->this$0:Lcom/android/server/PowerManagerService;
#getter for: Lcom/android/server/PowerManagerService;->mScreenBrightnessHandler:Landroid/os/Handler;
invoke-static {v7}, Lcom/android/server/PowerManagerService;->access$7200(Lcom/android/server/PowerManagerService;)Landroid/os/Handler;
move-result-object v7
[B][COLOR="Red"] const/16 v9, 0xa[/COLOR][/B]
invoke-virtual {v7, v9, p1, v3}, Landroid/os/Handler;->obtainMessage(III)Landroid/os/Message;
move-result-object v2
.line 3022
iget-object v7, p0, Lcom/android/server/PowerManagerService$ScreenBrightnessAnimator;->this$0:Lcom/android/server/PowerManagerService;
#getter for: Lcom/android/server/PowerManagerService;->mScreenBrightnessHandler:Landroid/os/Handler;
invoke-static {v7}, Lcom/android/server/PowerManagerService;->access$7200(Lcom/android/server/PowerManagerService;)Landroid/os/Handler;
move-result-object v7
[B][COLOR="RoyalBlue"]
if-eqz p2, :cond_maj
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_maj[/COLOR][/B]
const/16 v9, 0xa
invoke-virtual {v7, v9, p1, v3}, Landroid/os/Handler;->obtainMessage(III)Landroid/os/Message;
move-result-object v2
+1You're probably using its first run activity instead of the one that runs on subsequent opening.
Sent from my GT-I9100 using Tapatalk 2
Goldieking What should I do in this case?You're probably using its first run activity instead of the one that runs on subsequent opening.
Sent from my GT-I9100 using Tapatalk 2
aapt: warning: string 'lgt_service_global_auto_roaming_call_customcenter_summary_nocall' has no default translation in /home/anit/out/./res; found: fr
aapt: warning: string 'onscreen_keypad' has no default translation in /home/anit/out/./res; found: ar en_US fa fr ko ur
aapt: warning: string 'wifi_scc_diff_notification_dialog_msg' has no default translation in /home/anit/out/./res; found: ar en_US fa fr ur
+1 i got the same problem heretry to add app on setting
Got this warning while compile secsetting.apk..is it normal?
Code:aapt: warning: string 'lgt_service_global_auto_roaming_call_customcenter_summary_nocall' has no default translation in /home/anit/out/./res; found: fr aapt: warning: string 'onscreen_keypad' has no default translation in /home/anit/out/./res; found: ar en_US fa fr ko ur aapt: warning: string 'wifi_scc_diff_notification_dialog_msg' has no default translation in /home/anit/out/./res; found: ar en_US fa fr ur
@ Zai and Adhitya - Ignore the errors. The apk will compile anyway and the new apk would work just fine.+1 i got the same problem here![]()
Hot Reboot depends on the kernel installed (Latest Philz kernels doesn't support this feature unfortunately!!)@ Zai and Adhitya - Ignore the errors. The apk will compile anyway and the new apk would work just fine.
@majdinj - I myself am having a little problem : P
I am on XXLSZ. I edited the SecSettings.apk and android.policy.jar as per the tutorial. I cant seem to get the Smart Rotate and the Hot Reboot to work.
Smart Rotate just doesnt show up and Hot Reboot sticks my phone at the glowing Samsung Logo.
Should I attach my modded SecSettings.apk and android.policy.jar here so you can have a look at it and guide me further?
That worked perfectly fine for my ROM. : )Hot Reboot depends on the kernel installed (Latest Philz kernels doesn't support this feature unfortunately!!)
For Smart Rotation in XXLSZ, you can download modded SecSettings.apk I made for eybee's ROM from here (the one without integrated apps) and you can use it to build up your XXLSZ ROM.
flashlight working on lockscreen will brick long press home button for recent apps... until some developers fixed it, I will not put it here!!That worked perfectly fine for my ROM. : )
Majdin, is it possible to mod to get the flashlight working on lockscreen when you press the home button?
You need to be on deodexed rom..@majdinj
I have flashed SecGallery2_Galaxy. apk and com.sec.feature.hovering_ui.xml files extracted from Ultimate Rom over the stock XXLSZ (odexed).
Though nothing changed
What could be the reason? What can I do?
New gallery works flwalessly....
Found a simpler straight forward method to get the target package name and the activity name.Integrating application in settings menu
This really handy one.. so take care!!
In this tutorial, we will add USB-Mode program to Settings menu as an example
On your PC
1) Decompile SecSettings.apk.
2) Decompile the program that you want to add to settings menu (USB-Mode)
3) Go to \res\drawable-xhdpi folder and add icon for your program that you want to add (you can take it from decompiled wanted program (USBMode folder).
![]()
4) Go to \res\values folder and open strings.xml by NotePad++ and add these lines just before </resources> for your program
Here change “gloryromaddons” with any thing you want to show as a header in the Settings menu. “usbswitcher_text” is your wanted programCode:<string name="gloryromaddons">GloryROM Addons</string> <string name="usbswitcher_text">USB mode switcher</string>
5) Go to \res\xml folder and open settings_headers.xml by NotePad++ and add these lines (the place you put these lines will be the place where added program will be displayed in Settings menu)
The first line reflect the header title in settings menu (So gloryromaddons will be seen as “GloryROM Addons” in the phone, see strings.xml that we edited and you will figure it out!!)Code:<header android:title="@string/gloryromaddons" /> <header android:icon="@drawable/usbswitcher" android:title="@string/usbswitcher_text"> <intent android:targetPackage="in.zatta.USB_switch" android:action="android.intent.action.MAIN" android:targetClass="in.zatta.USB_switch.USB_switcherActivity" /> </header>
The 2nd line is for added program:
- android:[email protected]/name of icon you put in drawable-xhdpi folder (here we put usbswitcher as the icon name inside drawable-xhdpi)
- android:[email protected]/name of string put for added program in strings.xml (here we put usbswitcher_text as in strings.xml)
The 3rd line is the functionality and is the most difficult one:
- android:targetPackage=package of wanted program inside its own AndroidManifest.xml (here it is “in.zatta.USB_switch”)
- android:action=first action of wanted program inside its own AndroidManifest.xml (here it is “android.intent.action.MAIN”)
![]()
On your phone:
- androidtargetClass= android:targetPackage.Activity (we have android:targetPackage from previous step but we need also .Activity how to get it??) This is the tricky one so do the following:
install the program you want to add (USB mode switcher) and ADW launcher from Google play and make ADW launcher as your phone launcher. Find a blank area on your homescreen(s), long press, then select custom shortcut --> pick your activity --> activities --> browse down until you find USB switcher app and expand with the arrow on the left of USB switcher, you will see several activities (some may have only one). The first one in the list is usually its opening class; it is in between the ( )'s. In this example it is .USB_switcherActivity
![]()
Go back to your PC:
So now androidtargetClass= android:targetPackage.Activity will be:
androidtargetClass= in.zatta.USB_switch.USB_switcherActivity
6) Now compile SecSettings and push it to your phone.
![]()

It is also the first activity in the android manifest xml you are already usingFound a simpler straight forward method to get the target package name and the activity name.
You should have a screen displaying the info you need.
- Install xShortcut Free from the market.
- Open and click the settings icon in xShortcut
- Enable "Permanent Capture"
- You should have an icon of the app in the notification bar.
- Run the app whose details you need.
- Click on the xShortcut icon on the notification bar.
View attachment 1829369
lol.. you are already into it mate :good:Found a simpler straight forward method to get the target package name and the activity name.
You should have a screen displaying the info you need.
- Install xShortcut Free from the market.
- Open and click the settings icon in xShortcut
- Enable "Permanent Capture"
- You should have an icon of the app in the notification bar.
- Run the app whose details you need.
- Click on the xShortcut icon on the notification bar.
View attachment 1829369
SMS hack: SMS 200 recipients, stop SMS to MMS auto-converting, increase SMS hour limit
I. SMS 200 recipients:
1) Backsmali SecMMs.apk
2) Navigate to and open classout\com\android\mms\MmsConfig.smali
3) Search for ".method public static getRecipientLimit()I" and do these changes:
to:Code:.method public static getRecipientLimit()I .registers 1 .prologue .line 656 [B][COLOR="Red"]sget v0, Lcom/android/mms/MmsConfig;->mRecipientLimit:I[/COLOR][/B] return v0 .end method
Save changes and recompile (smali) your apk.Code:.method public static getRecipientLimit()I .registers 1 .prologue .line 656 [B][COLOR="Blue"]const/16 v0, 0xc8[/COLOR][/B] return v0 .end method
II. Stop SMS to MMS auto-converting:
1) Backsmali SecMMs.apk
2) Navigate to and open classout\com\android\mms\MmsConfig.smali
3) Search for "Lcom/android/mms/MmsConfig;->mMaxImageWidthRestrictedMode:I" and do these changes:
to:Code:sput v0, Lcom/android/mms/MmsConfig;->mMaxImageWidthRestrictedMode:I .line 153 [B][COLOR="Red"]sput v7, Lcom/android/mms/MmsConfig;->mRecipientLimit:I[/COLOR][/B] .line 154 [B][COLOR="Red"]const/16 v0, 0xc8[/COLOR][/B] sput v0, Lcom/android/mms/MmsConfig;->mDefaultSMSMessagesPerThread:I
4) Then search for "Lcom/android/mms/MmsConfig;->mAllowAttachAudio:Z" and do these changes:Code:sput v0, Lcom/android/mms/MmsConfig;->mMaxImageWidthRestrictedMode:I .line 153 [B][COLOR="Blue"]const/16 v0, 0x3e8 [/COLOR][/B] .line 154 [B][COLOR="Blue"]sput v0, Lcom/android/mms/MmsConfig;->mRecipientLimit:I[/COLOR][/B] sput v0, Lcom/android/mms/MmsConfig;->mDefaultSMSMessagesPerThread:I
to:Code:.line 161 sput-boolean v2, Lcom/android/mms/MmsConfig;->mAllowAttachAudio:Z .line 164 [B][COLOR="Red"]const/4 v0, 0x4[/COLOR][/B] sput v0, Lcom/android/mms/MmsConfig;->mSmsToMmsTextThreshold:I
5) Then search for ".method public static getMaxRecipientLength()I" and do these changes:Code:.line 161 sput-boolean v2, Lcom/android/mms/MmsConfig;->mAllowAttachAudio:Z .line 164 [B][COLOR="Blue"]const/16 v0, 0x3e8[/COLOR][/B] sput v0, Lcom/android/mms/MmsConfig;->mSmsToMmsTextThreshold:I
to:Code:.method public static getMaxRecipientLength()I .registers 1 .prologue .line 2259 [B][COLOR="Red"]sget v0, Lcom/android/mms/MmsConfig;->mMaxRecipientLength:I[/COLOR][/B] return v0 .end method
6) Then search for ".method public static getMmsMaxRecipient()I" and do these changes:Code:.method public static getMaxRecipientLength()I .registers 1 .prologue .line 2259 [B][COLOR="Blue"]const/16 v0, 0x3e8[/COLOR][/B] return v0 .end method
to:Code:.method public static getMmsMaxRecipient()I .registers 1 .prologue .line 2498 [B][COLOR="Red"]sget v0, Lcom/android/mms/MmsConfig;->mMmsRecipientLimit:I[/COLOR][/B] return v0 .end method
7) Then search for ".method public static getSmsToMmsTextThreshold()I" and do these changes:Code:.method public static getMmsMaxRecipient()I .registers 1 .prologue .line 2498 [B][COLOR="Blue"]const/16 v0, 0x3e8[/COLOR][/B] return v0 .end method
to:Code:.method public static getSmsToMmsTextThreshold()I .registers 1 .prologue .line 585 [B][COLOR="Red"]sget v0, Lcom/android/mms/MmsConfig;->mSmsToMmsTextThreshold:I[/COLOR][/B] return v0 .end method
8) Then search for "Lcom/android/mms/MmsConfig;->mMaxRecipientLength:I" and add this line above it (the blue one):Code:.method public static getSmsToMmsTextThreshold()I .registers 1 .prologue .line 585 [B][COLOR="Blue"]const/16 v0, 0x3e8[/COLOR][/B] return v0 .end method
9) Then search for "Lcom/android/mms/MmsConfig;->mSmsToMmsTextThreshold:I" and add this line above it (the blue one):Code:move-result v10 [B][COLOR="Blue"]const/16 v9, 0x3e8[/COLOR][/B] sput v10, Lcom/android/mms/MmsConfig;->mMaxRecipientLength:I .line 1638 sget v10, Lcom/android/mms/MmsConfig;->mMinRecipientLength:I
10) Then search for "Lcom/android/mms/MmsConfig;->mRecipientLimit:I" add this line above it (the blue one):Code:move-result v1 [B][COLOR="Blue"]const/16 v1, 0x3e8[/COLOR][/B] sput v1, Lcom/android/mms/MmsConfig;->mSmsToMmsTextThreshold:I .line 1817 const-string v1, "Mms/MmsConfig"
11) Save changes and recompile (smali) your apk.. phewww wow we finishedCode:invoke-interface {v0, v1, v4}, Landroid/content/SharedPreferences;->getInt(Ljava/lang/String;I)I move-result v1 [B][COLOR="Blue"]const/16 v1, 0x3e8[/COLOR][/B] sput v1, Lcom/android/mms/MmsConfig;->mRecipientLimit:I
III. Increase SMS hour limit:
1) Backsmali SecMMs.apk
2) Navigate and open classout\com\android\mms\util\RateController.smali
3) Look for this line:
and change it to:Code:.field private static final RATE_LIMIT:I = [B][COLOR="Red"]0x64[/COLOR][/B]
4) Save changes and recompile (smali) your apkCode:.field private static final RATE_LIMIT:I = [B][COLOR="Blue"]0x3e8[/COLOR][/B]
23 toggles notification panel (Lidroid way)
1. Decompile SystemUI.apk by APK-Multi-Tool.
2. Navigate to res\layout folder and open tw_status_bar_expanded.xml and do these changes (delete red lines, add blue lines, and modify the green one to be like it):
To make life easy, you can simply download the modified tw_status_bar_expanded.xml file and paste it over the original one.Code:<?xml version="1.0" encoding="utf-8"?> <FrameLayout android:id="@id/notification_panel" android:background="@drawable/notification_panel_bg" android:paddingTop="@dimen/notification_panel_padding_top" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_marginLeft="@dimen/notification_panel_margin_left" xmlns:android="http://schemas.android.com/apk/res/android" xmlns:systemui="http://schemas.android.com/apk/res/com.android.systemui"> <FrameLayout android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_marginBottom="@dimen/tw_close_handle_underlap"> <include android:layout_width="fill_parent" android:layout_height="@dimen/tw_notification_panel_header_height" layout="@layout/tw_status_bar_expanded_header" /> <TextView android:gravity="center" android:id="@id/emergency_calls_only" android:paddingBottom="4.0dip" android:visibility="gone" android:layout_width="fill_parent" android:layout_height="wrap_content" /> <View android:background="#ff091a24" android:layout_width="fill_parent" android:layout_height="1.0dip" android:layout_marginTop="@dimen/tw_notification_panel_header_height" /> [B][COLOR="Blue"]<HorizontalScrollView android:id="@id/quicksetting_scroller" android:visibility="gone" android:scrollbars="none" android:layout_width="wrap_content" android:layout_height="@dimen/quick_setting_button_height" android:layout_marginTop="@dimen/tw_notification_panel_header_height"> <com.android.systemui.statusbar.policy.quicksetting.QuickSettingPanel android:orientation="horizontal" android:id="@id/quicksetting_container" android:layout_width="wrap_content" android:layout_height="wrap_content" android:divider="@drawable/tw_black_bg" android:showDividers="middle" /> </HorizontalScrollView> <com.wanam.systemui.quickpanel.PowerWidget android:id="@id/exp_power_stat" android:layout_width="wrap_content" android:layout_height="@dimen/quick_setting_button_height" android:layout_marginTop="@dimen/tw_notification_panel_header_height" /> <LinearLayout android:orientation="vertical" android:id="@id/brightness_controller" android:background="#ff000000" android:layout_width="fill_parent" android:layout_height="56.0dip" android:layout_marginTop="@dimen/notification_panel_quicksettingbtn_height"> <LinearLayout android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="55.0dip"> <ImageView android:id="@id/brightness_icon" android:clickable="true" android:layout_width="25.0dip" android:layout_height="fill_parent" android:layout_marginLeft="13.0dip" android:src="@drawable/ic_sysbar_brightness" android:contentDescription="@string/accessibility_brightness_icon" /> <FrameLayout android:id="@id/brightness_group" android:layout_width="fill_parent" android:layout_height="fill_parent"> <com.android.systemui.statusbar.policy.ToggleSlider android:id="@id/brightness" android:layout_width="fill_parent" android:layout_height="fill_parent" systemui:text="@string/status_bar_settings_auto_brightness_label" /> <com.android.systemui.statusbar.policy.ToggleSlider android:id="@id/auto_brightness" android:layout_width="fill_parent" android:layout_height="fill_parent" systemui:text="@string/status_bar_settings_auto_brightness_label" /> </FrameLayout> </LinearLayout> <View android:background="#ff091a24" android:layout_width="fill_parent" android:layout_height="1.0dip" /> </LinearLayout>[/COLOR][/B] [B][COLOR="SeaGreen"]<ScrollView android:id="@id/scroll" android:fadingEdge="none" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_marginTop="@dimen/notification_panel_notification_top_margin" android:overScrollMode="ifContentScrolls">[/COLOR][/B] <LinearLayout android:orientation="vertical" android:id="@id/scrollCart" android:layout_width="fill_parent" android:layout_height="wrap_content"> [B][COLOR="Red"]<HorizontalScrollView android:id="@id/quicksetting_scroller" android:scrollbars="none" android:layout_width="wrap_content" android:layout_height="@dimen/quick_setting_button_height"> <com.android.systemui.statusbar.policy.quicksetting.QuickSettingPanel android:orientation="horizontal" android:id="@id/quicksetting_container" android:layout_width="wrap_content" android:layout_height="wrap_content" android:divider="@drawable/tw_black_bg" android:showDividers="middle" /> </HorizontalScrollView> <LinearLayout android:orientation="vertical" android:id="@id/brightness_controller" android:background="#ff000000" android:layout_width="fill_parent" android:layout_height="56.0dip"> <LinearLayout android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="55.0dip"> <ImageView android:id="@id/brightness_icon" android:clickable="true" android:layout_width="25.0dip" android:layout_height="fill_parent" android:layout_marginLeft="13.0dip" android:src="@drawable/ic_sysbar_brightness" android:contentDescription="@string/accessibility_brightness_icon" /> <FrameLayout android:id="@id/brightness_group" android:layout_width="fill_parent" android:layout_height="fill_parent"> <com.android.systemui.statusbar.policy.ToggleSlider android:id="@id/brightness" android:layout_width="fill_parent" android:layout_height="fill_parent" systemui:text="@string/status_bar_settings_auto_brightness_label" /> <com.android.systemui.statusbar.policy.ToggleSlider android:id="@id/auto_brightness" android:layout_width="fill_parent" android:layout_height="fill_parent" systemui:text="@string/status_bar_settings_auto_brightness_label" /> </FrameLayout> </LinearLayout> <View android:background="#ff091a24" android:layout_width="fill_parent" android:layout_height="1.0dip" /> </LinearLayout>[/COLOR][/B] <LinearLayout android:orientation="vertical" android:id="@id/noNotificationsTitle" android:focusable="true" android:layout_width="fill_parent" android:layout_height="wrap_content"> <TextView android:textSize="@dimen/status_bar_expanded_notification_category_text_size" android:textColor="@color/notification_category_color" android:gravity="left|center" android:id="@id/noNotificationsText" android:paddingLeft="11.0dip" android:layout_width="fill_parent" android:layout_height="@dimen/status_bar_expanded_notification_category_height" android:text="@string/status_bar_no_notifications_title" /> </LinearLayout> <LinearLayout android:orientation="vertical" android:id="@id/onGoingCart" android:background="#ff293945" android:focusable="true" android:visibility="gone" android:layout_width="fill_parent" android:layout_height="@dimen/status_bar_expanded_notification_category_height"> <TextView android:textSize="@dimen/status_bar_expanded_notification_category_text_size" android:textColor="@color/notification_category_color" android:gravity="left|center" android:id="@id/onGoingNotificationText" android:paddingLeft="11.0dip" android:layout_width="fill_parent" android:layout_height="fill_parent" android:text="@string/status_bar_ongoing_events_title" /> </LinearLayout> <com.android.systemui.statusbar.policy.NotificationRowLayout android:id="@id/onGoingItems" android:layout_width="fill_parent" android:layout_height="wrap_content" systemui:rowHeight="@dimen/tw_notification_row_min_height" /> <LinearLayout android:orientation="vertical" android:id="@id/notificationCart" android:background="#ff293945" android:visibility="gone" android:layout_width="fill_parent" android:layout_height="@dimen/status_bar_expanded_notification_category_height"> <RelativeLayout android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content"> <TextView android:textSize="@dimen/status_bar_expanded_notification_category_text_size" android:textColor="@color/notification_category_color" android:gravity="left|center" android:id="@id/latestNotificationText" android:paddingLeft="11.0dip" android:layout_width="180.0dip" android:layout_height="fill_parent" android:text="@string/status_bar_latest_events_title" android:layout_alignParentLeft="true" /> <TextView android:textSize="@dimen/status_bar_expanded_notification_clear_button_text_size" android:textColor="@color/tw_status_bar_clear_btn_text" android:gravity="center" android:id="@id/clear_all_button" android:background="@drawable/tw_btn_default_small" android:padding="0.100000024dip" android:focusable="true" android:clickable="true" android:layout_width="@dimen/status_bar_expanded_clear_button_width" android:layout_height="fill_parent" android:layout_marginRight="4.0dip" android:text="@string/status_bar_clear_all_button" android:layout_alignParentRight="true" android:contentDescription="@string/accessibility_clear_all" /> </RelativeLayout> </LinearLayout> <com.android.systemui.statusbar.policy.NotificationRowLayout android:id="@id/notificationItems" android:layout_width="fill_parent" android:layout_height="wrap_content" systemui:rowHeight="@dimen/tw_notification_row_min_height" /> <com.android.systemui.statusbar.policy.NotificationRowLayout android:id="@id/latestItems" android:layout_width="fill_parent" android:layout_height="wrap_content" systemui:rowHeight="@dimen/tw_notification_row_min_height" /> </LinearLayout> </ScrollView> </FrameLayout> <com.android.systemui.statusbar.phone.CloseDragHandle android:layout_gravity="bottom" android:orientation="vertical" android:id="@id/close" android:layout_width="fill_parent" android:layout_height="@dimen/tw_close_handle_height"> <RelativeLayout android:layout_width="fill_parent" android:layout_height="fill_parent"> <ImageView android:layout_gravity="bottom" android:layout_width="fill_parent" android:layout_height="@dimen/tw_close_handle_height" android:src="@drawable/tw_status_bar_close" android:scaleType="fitXY" /> <TextView android:textAppearance="@style/TextAppearance.StatusBar.Expanded.Network" android:gravity="center" android:layout_gravity="bottom" android:id="@id/carrier_label" android:layout_width="fill_parent" android:layout_height="@dimen/tw_close_handle_height" android:layout_marginBottom="10.0dip" /> </RelativeLayout> </com.android.systemui.statusbar.phone.CloseDragHandle> </FrameLayout>
3. Navigate to res\values\ folder and open ids.xml and add the following line at the end before </resources> line:
4. Navigate to and open smali\com\android\systemui\statusbar\phone\PhoneStatusBar.smali file, now search for ".field mPostCollapseCleanup:Ljava/lang/Runnable;" and add this line bellow it (the blue one here):Code:<item type="id" name="exp_power_stat">false</item>
5. Still in PhoneStatusBar.smali, search for ".method public addIcon" and add these lines (the blue ones) at the end of this method before the "return-void" line:Code:.field mPostCollapseCleanup:Ljava/lang/Runnable; [B][COLOR="Blue"].field mPowerWidget:Lcom/wanam/systemui/quickpanel/PowerWidget;[/COLOR][/B] .field mQueueLock:Ljava/lang/Object;
6. Still in PhoneStatusBar.smali, search for ".method protected makeStatusBarView", then search for "Landroid/widget/ScrollView;->setVerticalScrollBarEnabled(Z)V" and add these lines (the blue ones) bellow it:Code:invoke-virtual {v1, v0, p3, v2}, Landroid/widget/LinearLayout;->addView(Landroid/view/View;ILandroid/view/ViewGroup$LayoutParams;)V .line 1170 [B][COLOR="Blue"]iget-object v1, p0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mPowerWidget:Lcom/wanam/systemui/quickpanel/PowerWidget; invoke-virtual {v1}, Lcom/wanam/systemui/quickpanel/PowerWidget;->updateWidget()V[/COLOR][/B] return-void .end method
7. Still in PhoneStatusBar.smali, search for "Landroid/content/Context;->registerReceiver(Landroid/content/BroadcastReceiver;Landroid/content/IntentFilter;)Landroid/content/Intent;" and add these lines bellow it (the blue ones):Code:invoke-virtual {v9, v10}, Landroid/widget/ScrollView;->setVerticalScrollBarEnabled(Z)V [B][COLOR="Blue"]move-object/from16 v0, p0 iget-object v9, v0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mStatusBarWindow:Lcom/android/systemui/statusbar/phone/StatusBarWindowView; const v10, [COLOR="Purple"]0x7fxxxxxx[/COLOR] invoke-virtual {v9, v10}, Lcom/android/systemui/statusbar/phone/StatusBarWindowView;->findViewById(I)Landroid/view/View; move-result-object v9 check-cast v9, Lcom/wanam/systemui/quickpanel/PowerWidget; move-object/from16 v0, p0 iput-object v9, v0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mPowerWidget:Lcom/wanam/systemui/quickpanel/PowerWidget;[/COLOR][/B] .line 714 new-instance v9, Lcom/android/systemui/statusbar/phone/PhoneStatusBar$MyTicker;
Now save changes and close.Code:invoke-virtual {v1, v9, v2}, Landroid/content/Context;->registerReceiver(Landroid/content/BroadcastReceiver;Landroid/content/IntentFilter;)Landroid/content/Intent; [B][COLOR="Blue"] move-object/from16 v0, p0 iget-object v9, v0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mPowerWidget:Lcom/wanam/systemui/quickpanel/PowerWidget; invoke-virtual {v9}, Lcom/wanam/systemui/quickpanel/PowerWidget;->setupWidget()V[/COLOR][/B] .line 875 sget-boolean v9, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->useTouchWizGUI:Z
8. Now we need to edit the head of AndroidManifest.xml in SystemUI.apk and add system status to the main core (this is important step to make Torch and Reboot toggles work!!).
Before:
After:Code:<?xml version="1.0" encoding="utf-8"?> [B][COLOR="Red"]<manifest android:versionCode="16" android:versionName="4.1.2-N7000XXLSZ" package="com.android.systemui" coreApp="true"[/COLOR][/B] xmlns:android="http://schemas.android.com/apk/res/android">
9. Download the following smalis and add them to smali folder in SystemUI.apk (there are 2 wanam folders, put the correct one inside its corresponding folder inside SystemUI.apk\smali folder).Code:<?xml version="1.0" encoding="utf-8"?> [B][COLOR="Red"]<manifest android:versionCode="16" android:versionName="4.1.2-N7000XXLSZ" package="com.android.systemui" coreApp="true" [COLOR="Blue"]android:sharedUserId="android.uid.system" android:process="system"[/COLOR][/COLOR][/B] xmlns:android="http://schemas.android.com/apk/res/android">
10. Now we have finished from modifying SystemUI.apk, Recompile AND SIGN the finished project!!!.
11. Now since SystemUI.apk is signed, it will not work properly until we disable signature check on "services.jar". So backsmali services.jar file and navigate to classout\com\android\server\pm folder and open PackageManagerService.smali and search for ".method static compareSignatures" and change the entire method to:
Save changes and recompile (smali) services.jar file.Code:.method static compareSignatures([Landroid/content/pm/Signature;[Landroid/content/pm/Signature;)I .registers 9 .parameter "s1" .parameter "s2" .prologue const/4 v6, 0x0 const-string v3, "Wanam: PackageManager" const-string v4, "Skip signature check." invoke-static {v3, v4}, Landroid/util/Slog;->e(Ljava/lang/String;Ljava/lang/String;)I return v6 .end method
12. Download the following system app and resource (LidroidSettings.apk and lidroid-res.apk)
13. Push all files to your phone and... look to the results
![]()
![]()
![]()
This is all what I learned and knew from reading here and there..
So if you found these tutorials useful and helpful, just pray for me and nothing else.. :angel:
Please stay safe.. Peace on you all![]()