1st THIS IS NOT MINE TUTORIAL
I just edit, fix and change the code from N9005 to I9500
Credits go to darkera13 (SAMSUNG Developer) from Samsungviet
Link to orginal thread here
2nd WHAT'D WE HAVE AFTER DOING THIS MOD

1. THIS MOD IS ONLY FOR DEODEXED OFFICIAL LOLLIPOP ROM: You'd prepare android.policy.jar and framework-res.apk
2. Decompile the framework-res.apk and open /res/values/arrays.xml with your favorite text editor
LRX22C.I9500XXUHOAA Modded file: Download
I just edit, fix and change the code from N9005 to I9500
Credits go to darkera13 (SAMSUNG Developer) from Samsungviet
Link to orginal thread here
2nd WHAT'D WE HAVE AFTER DOING THIS MOD
1. THIS MOD IS ONLY FOR DEODEXED OFFICIAL LOLLIPOP ROM: You'd prepare android.policy.jar and framework-res.apk
2. Decompile the framework-res.apk and open /res/values/arrays.xml with your favorite text editor
Search for:3. Decompile the android.policy.jar and open /com/android/internal/policy/impl/GlobalActions.smaliAdd like following:
Code:
<string-array name="config_globalActionsList">Save and open /res/values/strings.xml
Code:
<string-array name="config_globalActionsList">
<item>power</item>
<item>datamode</item>
<item>airplane</item>
<item>restart</item>
<item>lockdown</item>
<item>bugreport</item>
<item>users</item>
<item>emergencymode</item>
<item>flashlight</item>
<item>screenshot</item>
</string-array>
Add to the end of file(EOF):Save
Code:
<string name="global_action_screenshot">Take Screenshot</string>
<string name="global_action_flashlight">Flashlight</string>
<string name="global_actions_flashlight_on_status">On</string>
<string name="global_actions_flashlight_off_status">Off</string>
</resources>
Copy all PNG files in framework-res GlobalMenu_darkera13_samsungviet.vn.zip to /res/drawable-xhdpi and Compile
We'd get an apk: unsignedframework-res.apk
Now keep this file and decompile the open /res/values/public.xml(in project unsignedframework-res.apk] not framework-res.apk)
Note these lines to use in next big step
Code:
// This is what I got from recompiled framework-res.apk might be different with your
<public type="string" name="global_action_screenshot" id="0x01040ba5" /> -> const v4: 1040ba5
<public type="string" name="global_action_flashlight" id="0x01040ba6" /> -> const v6: 1040ba6
<public type="string" name="global_actions_flashlight_on_status" id="0x01040ba7" /> -> const v7: 1040ba7
<public type="string" name="global_actions_flashlight_off_status" id="0x01040ba8" /> -> const v8: 1040ba8
<public type="drawable" name="tw_ic_lock_flashlight_on" id="0x01080b5c" /> -> const v4: 1080b5c
<public type="drawable" name="tw_ic_lock_flashlight_off" id="0x01080b5b" /> -> const v5: 1080b5b
<public type="drawable" name="tw_ic_lock_screenshot" id="0x01080b5d" /> -> const v3: 1080b5d
Search for:4. Now you'd have unsignedframework-res.apk mod_android.policy.jar. Rename them to framework-res.apk and android.policy.jar. Put it in CWM flashable zip and flash with TWRP or Philz.Add like following:
Code:
.field private mRestart:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;Search for:
Code:
.field private mRestart:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;
.field private mFlashlight:Lcom/android/internal/policy/impl/GlobalActions$ToggleAction;
.field private mFlashlightState:Lcom/android/internal/policy/impl/GlobalActions$ToggleAction$State;
.field private mScreenshot:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;Add like following:
Code:
iput-object v3, p0, Lcom/android/internal/policy/impl/GlobalActions;->mAirplaneState:Lcom/android/internal/policy/impl/GlobalActions$ToggleAction$State;
sget-object v3, Lcom/android/internal/policy/impl/GlobalActions$ToggleAction$State;->Off:Lcom/android/internal/policy/impl/GlobalActions$ToggleAction$State;Search for:
Code:
iput-object v3, p0, Lcom/android/internal/policy/impl/GlobalActions;->mAirplaneState:Lcom/android/internal/policy/impl/GlobalActions$ToggleAction$State;
sget-object v3, Lcom/android/internal/policy/impl/GlobalActions$ToggleAction$State;->Off:Lcom/android/internal/policy/impl/GlobalActions$ToggleAction$State;
iput-object v3, p0, Lcom/android/internal/policy/impl/GlobalActions;->mFlashlightState:Lcom/android/internal/policy/impl/GlobalActions$ToggleAction$State;
sget-object v3, Lcom/android/internal/policy/impl/GlobalActions$ToggleAction$State;->Off:Lcom/android/internal/policy/impl/GlobalActions$ToggleAction$State;Add to above like following:
Code:
.method static synthetic access0(Lcom/android/internal/policy/impl/GlobalActions;)Landroid/content/Context;Search for:
Code:
.method static synthetic access00(Lcom/android/internal/policy/impl/GlobalActions;)Lcom/android/internal/policy/impl/GlobalActions$ToggleAction;
.locals 1
iget-object v0, p0, Lcom/android/internal/policy/impl/GlobalActions;->mFlashlight:Lcom/android/internal/policy/impl/GlobalActions$ToggleAction;
return-object v0
.end method
.method static synthetic access01(Lcom/android/internal/policy/impl/GlobalActions;)Z
.locals 1
invoke-direct {p0}, Lcom/android/internal/policy/impl/GlobalActions;->getTorchStatus()Z
move-result v0
return v0
.end method
.method static synthetic access0(Lcom/android/internal/policy/impl/GlobalActions;)Landroid/content/Context;Add like following * Remember sections in bold the the ids from public.xml you'll get when editing the framework-res.apk:
Code:
iput-object v2, v0, Lcom/android/internal/policy/impl/GlobalActions;->mRestart:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;
Code:
// This is what I got from recompiled framework-res.apk might be different with your
<public type="string" name="global_action_screenshot" id="0x01040ba5" /> -> const v4: 1040ba5
<public type="string" name="global_action_flashlight" id="0x01040ba6" /> -> const v6: 1040ba6
<public type="string" name="global_actions_flashlight_on_status" id="0x01040ba7" /> -> const v7: 1040ba7
<public type="string" name="global_actions_flashlight_off_status" id="0x01040ba8" /> -> const v8: 1040ba8
<public type="drawable" name="tw_ic_lock_flashlight_on" id="0x01080b5c" /> -> const v4: 1080b5c
<public type="drawable" name="tw_ic_lock_flashlight_off" id="0x01080b5b" /> -> const v5: 1080b5b
<public type="drawable" name="tw_ic_lock_screenshot" id="0x01080b5d" /> -> const v3: 1080b5dSearch for:
Code:
iput-object v2, v0, Lcom/android/internal/policy/impl/GlobalActions;->mRestart:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;
new-instance v2, Lcom/android/internal/policy/impl/GlobalActions$Flashlight;
const v4, 0x1080b5c
const v5, 0x1080b5b
const v6, 0x1040ba6
const v7, 0x1040ba7
const v8, 0x1040ba8
move-object/from16 v3, p0
invoke-direct/range {v2 .. v8}, Lcom/android/internal/policy/impl/GlobalActions$Flashlight;-><init>(Lcom/android/internal/policy/impl/GlobalActions;IIIII)V
move-object/from16 v0, p0
iput-object v2, v0, Lcom/android/internal/policy/impl/GlobalActions;->mFlashlight:Lcom/android/internal/policy/impl/GlobalActions$ToggleAction;
new-instance v2, Lcom/android/internal/policy/impl/GlobalActions$Screenshot;
const v3, 0x1080b5d
const v4, 0x1040ba5
move-object/from16 v0, p0
invoke-direct {v2, v0, v3, v4}, Lcom/android/internal/policy/impl/GlobalActions$Screenshot;-><init>(Lcom/android/internal/policy/impl/GlobalActions;II)V
move-object/from16 v0, p0
iput-object v2, v0, Lcom/android/internal/policy/impl/GlobalActions;->mScreenshot:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;Add like following:
Code:
const/16 v2, 0x100Search for:
Code:
const/16 v2, 0x10
move-object/from16 v0, p0
iget-object v3, v0, Lcom/android/internal/policy/impl/GlobalActions;->mDataModeToggle:Lcom/android/internal/policy/impl/GlobalActions$ToggleAction;
move-object/from16 v0, p0
iget-object v4, v0, Lcom/android/internal/policy/impl/GlobalActions;->mItems:Ljava/util/ArrayList;
const/4 v5, 0x1
move-object/from16 v0, p0
invoke-direct {v0, v2, v3, v4, v5}, Lcom/android/internal/policy/impl/GlobalActions;->addDialogItemsIfEnabled(ILcom/android/internal/policy/impl/GlobalActions$Action;Ljava/util/ArrayList;Z)Z
.line 1229
const/16 v2, 0x20
move-object/from16 v0, p0
iget-object v3, v0, Lcom/android/internal/policy/impl/GlobalActions;->mAirplaneModeOn:Lcom/android/internal/policy/impl/GlobalActions$ToggleAction;
move-object/from16 v0, p0
iget-object v4, v0, Lcom/android/internal/policy/impl/GlobalActions;->mItems:Ljava/util/ArrayList;
const/4 v5, 0x1
move-object/from16 v0, p0
invoke-direct {v0, v2, v3, v4, v5}, Lcom/android/internal/policy/impl/GlobalActions;->addDialogItemsIfEnabled(ILcom/android/internal/policy/impl/GlobalActions$Action;Ljava/util/ArrayList;Z)Z
.line 1230
const/16 v2, 0x40
move-object/from16 v0, p0
iget-object v3, v0, Lcom/android/internal/policy/impl/GlobalActions;->mRestart:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;
move-object/from16 v0, p0
iget-object v4, v0, Lcom/android/internal/policy/impl/GlobalActions;->mItems:Ljava/util/ArrayList;
const/4 v5, 0x1
move-object/from16 v0, p0
invoke-direct {v0, v2, v3, v4, v5}, Lcom/android/internal/policy/impl/GlobalActions;->addDialogItemsIfEnabled(ILcom/android/internal/policy/impl/GlobalActions$Action;Ljava/util/ArrayList;Z)ZMatch 2 results, mark the line with:
Code:
const-string v2, "emergencymode"Add like following:
Code:
:cond_2b6
const-string v2, "emergencymode"Search for:
Code:
:cond_2b6
const-string v2, "emergencymode"
invoke-virtual {v2, v9}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_91
move-object/from16 v0, p0
iget-object v2, v0, Lcom/android/internal/policy/impl/GlobalActions;->mItems:Ljava/util/ArrayList;
move-object/from16 v0, p0
iget-object v3, v0, Lcom/android/internal/policy/impl/GlobalActions;->mEmergency:Lcom/android/internal/policy/impl/GlobalActions$ToggleAction;
invoke-virtual {v2, v3}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
goto :goto_24b
:cond_91
const-string v2, "flashlight"
invoke-virtual {v2, v9}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_92
move-object/from16 v0, p0
iget-object v2, v0, Lcom/android/internal/policy/impl/GlobalActions;->mItems:Ljava/util/ArrayList;
move-object/from16 v0, p0
iget-object v3, v0, Lcom/android/internal/policy/impl/GlobalActions;->mFlashlight:Lcom/android/internal/policy/impl/GlobalActions$ToggleAction;
invoke-virtual {v2, v3}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
goto :goto_24b
:cond_92
const-string v2, "screenshot"
invoke-virtual {v2, v9}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_2ca
move-object/from16 v0, p0
iget-object v2, v0, Lcom/android/internal/policy/impl/GlobalActions;->mItems:Ljava/util/ArrayList;
move-object/from16 v0, p0
iget-object v3, v0, Lcom/android/internal/policy/impl/GlobalActions;->mScreenshot:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;
invoke-virtual {v2, v3}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
goto :goto_24b
.line 1291
move-object/from16 v0, p0
iget-object v2, v0, Lcom/android/internal/policy/impl/GlobalActions;->mItems:Ljava/util/ArrayList;
move-object/from16 v0, p0
iget-object v3, v0, Lcom/android/internal/policy/impl/GlobalActions;->mEmergency:Lcom/android/internal/policy/impl/GlobalActions$ToggleAction;
invoke-virtual {v2, v3}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
goto :goto_24b
.line 1292
:cond_2ca
const-string v2, "silent"Add to above like following:
Code:
.method private prepareDialog()VAdd to bottom like following:
Code:
.method private getTorchStatus()Z
.locals 4
.prologue
const/4 v0, 0x0
iget-object v1, p0, Lcom/android/internal/policy/impl/GlobalActions;->mContext:Landroid/content/Context;
invoke-virtual {v1}, Landroid/content/Context;->getContentResolver()Landroid/content/ContentResolver;
move-result-object v1
const-string v2, "torch_light"
const/4 v3, -0x2
invoke-static {v1, v2, v0, v3}, Landroid/provider/Settings$System;->getIntForUser(Landroid/content/ContentResolver;Ljava/lang/String;II)I
move-result v1
if-eqz v1, :cond_0
const/4 v0, 0x1
:cond_0
return v0
.end method
.method private prepareDialog()VSearch for:
Code:
.method private prepareDialog()V
.registers 8
invoke-direct {p0}, Lcom/android/internal/policy/impl/GlobalActions;->getTorchStatus()Z
move-result v1
if-eqz v1, :cond_20
sget-object v4, Lcom/android/internal/policy/impl/GlobalActions$ToggleAction$State;->On:Lcom/android/internal/policy/impl/GlobalActions$ToggleAction$State;
iput-object v4, p0, Lcom/android/internal/policy/impl/GlobalActions;->mFlashlightState:Lcom/android/internal/policy/impl/GlobalActions$ToggleAction$State;
goto :cond_21
:cond_20
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;->mFlashlightState:Lcom/android/internal/policy/impl/GlobalActions$ToggleAction$State;
goto :cond_21
:cond_21Add to above like following:
Code:
const-string v4, "content://com.sec.knox.provider2/KnoxCustomManagerService1"Copy all smali files in andorid.policy.jar GlobalMenu_darkera13_samsungviet.vn.zip to /smali/com/android/internal/policy/impl and Compile the android.policy.jar
Code:
iget-object v4, p0, Lcom/android/internal/policy/impl/GlobalActions;->mFlashlight:Lcom/android/internal/policy/impl/GlobalActions$ToggleAction;
iget-object v5, p0, Lcom/android/internal/policy/impl/GlobalActions;->mFlashlightState:Lcom/android/internal/policy/impl/GlobalActions$ToggleAction$State;
invoke-virtual {v4, v5}, Lcom/android/internal/policy/impl/GlobalActions$ToggleAction;->updateState(Lcom/android/internal/policy/impl/GlobalActions$ToggleAction$State;)V
const-string v4, "content://com.sec.knox.provider2/KnoxCustomManagerService1"
LRX22C.I9500XXUHOAA Modded file: Download
Aucun commentaire:
Enregistrer un commentaire