[MOD][DEV][GUIDE] TABBED Settings WITH SWIPE for CM9/CM10/CM10.1

Adi Aisiteru Reborn

Senior Member
Apr 3, 2013
1,770
4,830
0
Bandar Lampung
MOD/DEV/GUIDE
TABBED SETTINGS WITH SWIPE FOR CM9/CM10/CM10.1






----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------​

Hi..Hi..hello XDA, esspecially for Developer only :D

I want to share to you all how to modded your settings to have three tabs with swipe :D
I am coming from this guide thread,. http://forum.xda-developers.com/showthread.php?t=2103158
big thanks to the author BigSplit
but I got error when following the step of the guide, and finally thanks to Recognized Contributor tdunham for helping me solving my error and explained that some part of the guide is not for all rom :D,
you can read his explanation of additional porting instructions if you want to apply this mod to all ICS+ base rom, in post #33 of the author guide -> http://forum.xda-developers.com/showpost.php?p=40907670&postcount=33,

now in here what I'm trying to share to you all is what have recognized contributor tdunham explained in his additional porting guide, and re-write again here as simple as easy to understand,. I hope so ,.lollss :p,.
I use CM9, CM10, and CM10.1 here as base

And here are example that I've made for my device Samsung Galaxy Wonder GT-I8150

[MOD][CM9] Tabbed settings with swipe

[MOD][CM10] Tabbed settings with swipe

[MOD][CM10.1] Tabbed settings with swipe

ok lets go to guide:
First of all need some requirement for this mod-guide

Requirement:
- Brain
- Patient
- Experience
- Know how to decompile/recompiling apk file
- Notepad++
- Tool for decompiling, : Apkmanager/apktool/virtous/apkmultitools/ or else



----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------​

LET'S Continue to the GUIDE
Next, go to Post #2, Post #3, Post #4


CREDIT & THANKS TO :
ORIGINAL AUTHOR "BigSplit
Recognized Contributor "tdunham"
XDA
CYANOGENMOD
ALL OF YOU
Sorry if I've missed it :)

 
Last edited:

Adi Aisiteru Reborn

Senior Member
Apr 3, 2013
1,770
4,830
0
Bandar Lampung
OKE LETS GO TO GUIDE :D

STEP -1
Decompile your CM9, CM10. or CM10.1 Settings.apk

Open 'res/values/strings.xml' from the decompiled settings apk in your favorite text editor and add the following to the end of the list of strings...
Code:
<string name="personalized_setting">Personal</string>
<string name="device_setting">System</string>
<string name="app_setting">Applications</string>
Open 'res/values/ids.xml' from the decompiled settings apk in your favorite text editor and add the following to the end of the list of ID's
Code:
<item type="id" name="linearLayout1">false</item>
<item type="id" name="personalized_tab">false</item>
<item type="id" name="device_tab">false</item>
<item type="id" name="app_tab">false</item>
<item type="id" name="cursor">false</item>
<item type="id" name="vPager">false</item>
for CM9 download this : CM9_SOURCE_TABBED_SETTINGS
exstract it and merge it to your decompiled settings.apk

for CM10 and CM10.1 download this : CM10_and_CM10.1_SOURCE_TABBED_SETTINGS
exstract it and merge it to your decompiled settings.apk

STEP -2
FOR CM9

go to :
\smali\com\android\settings\

Copy
Settings.smali
Settings$1.smali
Settings$HeaderAdapter$HeaderViewHolder.smali
Settings$HeaderAdapter.smali
to 3 part :

1st part , rename them from :
Copy of Settings.smali to AppSettings.smali
Copy of Settings$1.smali to AppSettings$1.smali
Copy of Settings$HeaderAdapter$HeaderViewHolder.smali to AppSettings$HeaderAdapter$HeaderViewHolder.smali
Copy of Settings$HeaderAdapter.smali to AppSettings$HeaderAdapter.smali

2nd part , rename them from :
Copy of Settings.smali to DeviceSettings.smali
Copy of Settings$1.smali to DeviceSettings$1.smali
Copy of Settings$HeaderAdapter$HeaderViewHolder.smali to DeviceSettings$HeaderAdapter$HeaderViewHolder.smali
Copy of Settings$HeaderAdapter.smali to DeviceSettings$HeaderAdapter.smali

3rd part, rename them from :
Copy of Settings.smali to PersonalSettings.smali
Copy of Settings$1.smali to PersonalSettings$1.smali
Copy of Settings$HeaderAdapter$HeaderViewHolder.smali to PersonalSettings$HeaderAdapter$HeaderViewHolder.smali
Copy of Settings$HeaderAdapter.smali to PersonalSettings$HeaderAdapter.smali

STEP -3
We are going to edit all lines that contain this line
Code:
Lcom/android/settings/Settings  
Lcom/android/settings/Settings$1
Lcom/android/settings/Settings$HeaderAdapter$HeaderViewHolder 
Lcom/android/settings/Settings$HeaderAdapter
in all renamed smali

but Before doing STEP -3, you must read this first : http://forum.xda-developers.com/showpost.php?p=41286468&postcount=3

Open in text editor/Notepad++
AppSettings.smali
AppSettings$1.smali
AppSettings$HeaderAdapter$HeaderViewHolder.smali
AppSettings$HeaderAdapter.smali

edit all lines in that all smali from :
if the line is, Lcom/android/settings/Settings edit it to become Lcom/android/settings/AppSettings
if the line is, Lcom/android/settings/Settings$1 edit it to become Lcom/android/settings/AppSettings$1
if the line is, Lcom/android/settings/Settings$HeaderAdapter$HeaderViewHolder edit it to become Lcom/android/settings/AppSettings$HeaderAdapter$HeaderViewHolder
if the line is, Lcom/android/settings/Settings$HeaderAdapter edit it to become Lcom/android/settings/AppSettings$HeaderAdapter

and so is edit all lines in
DeviceSettings.smali
DeviceSettings$1.smali
DeviceSettings$HeaderAdapter$HeaderViewHolder.smali
DeviceSettings$HeaderAdapter.smali

if the line is, Lcom/android/settings/Settings edit it to become Lcom/android/settings/DeviceSettings
if the line is, Lcom/android/settings/Settings$1 edit it to become Lcom/android/settings/DeviceSettings$1
if the line is, Lcom/android/settings/Settings$HeaderAdapter$HeaderViewHolder edit it to become Lcom/android/settings/DeviceSettings$HeaderAdapter$HeaderViewHolder
if the line is, Lcom/android/settings/Settings$HeaderAdapter edit it to become Lcom/android/settings/DeviceSettings$HeaderAdapter

and so is edit all lines in
PersonalSettings.smali
PersonalSettings$1.smali
PersonalSettings$HeaderAdapter$HeaderViewHolder.smali
PersonalSettings$HeaderAdapter.smali

if the line is, Lcom/android/settings/Settings edit it to become Lcom/android/settings/PersonalSettings
if the line is, Lcom/android/settings/Settings$1 edit it to become Lcom/android/settings/PersonalSettings$1
if the line is, Lcom/android/settings/Settings$HeaderAdapter$HeaderViewHolder edit it to become Lcom/android/settings/PersonalSettings$HeaderAdapter$HeaderViewHolder
if the line is, Lcom/android/settings/Settings$HeaderAdapter edit it to become Lcom/android/settings/PersonalSettings$HeaderAdapter

STEP -2
FOR CM10

go to :
\smali\com\android\settings\

Copy
Settings.smali
Settings$1.smali
Settings$2.smali
Settings$HeaderAdapter$HeaderViewHolder.smali
Settings$HeaderAdapter.smali
to 3 part :

1st part , rename them from :
Copy of Settings.smali to AppSettings.smali
Copy of Settings$1.smali to AppSettings$1.smali
Copy of Settings$2.smali to AppSettings$2.smali
Copy of Settings$HeaderAdapter$HeaderViewHolder.smali to AppSettings$HeaderAdapter$HeaderViewHolder.smali
Copy of Settings$HeaderAdapter.smali to AppSettings$HeaderAdapter.smali

2nd part , rename them from :
Copy of Settings.smali to DeviceSettings.smali
Copy of Settings$1.smali to DeviceSettings$1.smali
Copy of Settings$2.smali to DeviceSettings$2.smali
Copy of Settings$HeaderAdapter$HeaderViewHolder.smali to DeviceSettings$HeaderAdapter$HeaderViewHolder.smali
Copy of Settings$HeaderAdapter.smali to DeviceSettings$HeaderAdapter.smali

3rd part, rename them from :
Copy of Settings.smali to PersonalSettings.smali
Copy of Settings$1.smali to PersonalSettings$1.smali
Copy of Settings$2.smali to PersonalSettings$2.smali
Copy of Settings$HeaderAdapter$HeaderViewHolder.smali to PersonalSettings$HeaderAdapter$HeaderViewHolder.smali
Copy of Settings$HeaderAdapter.smali to PersonalSettings$HeaderAdapter.smali

STEP -3
We are going to edit all lines that contain this line
Code:
Lcom/android/settings/Settings  
Lcom/android/settings/Settings$1
Lcom/android/settings/Settings$2 
Lcom/android/settings/Settings$HeaderAdapter$HeaderViewHolder 
Lcom/android/settings/Settings$HeaderAdapter
in all renamed smali

but Before doing STEP -3, you must read this first : http://forum.xda-developers.com/showpost.php?p=41286468&postcount=3

Open in text editor/Notepad++
AppSettings.smali
AppSettings$1.smali
AppSettings$2.smali
AppSettings$HeaderAdapter$HeaderViewHolder.smali
AppSettings$HeaderAdapter.smali

edit all lines in that all smali from :
if the line is, Lcom/android/settings/Settings edit it to become Lcom/android/settings/AppSettings
if the line is, Lcom/android/settings/Settings$1 edit it to become Lcom/android/settings/AppSettings$1
if the line is, Lcom/android/settings/Settings$2 edit it to become Lcom/android/settings/AppSettings$2
if the line is, Lcom/android/settings/Settings$HeaderAdapter$HeaderViewHolder edit it to become Lcom/android/settings/AppSettings$HeaderAdapter$HeaderViewHolder
if the line is, Lcom/android/settings/Settings$HeaderAdapter edit it to become Lcom/android/settings/AppSettings$HeaderAdapter

and so is edit all lines in
DeviceSettings.smali
DeviceSettings$1.smali
DeviceSettings$2.smali
DeviceSettings$HeaderAdapter$HeaderViewHolder.smali
DeviceSettings$HeaderAdapter.smali

if the line is, Lcom/android/settings/Settings edit it to become Lcom/android/settings/DeviceSettings
if the line is, Lcom/android/settings/Settings$1 edit it to become Lcom/android/settings/DeviceSettings$1
if the line is, Lcom/android/settings/Settings$2 edit it to become Lcom/android/settings/DeviceSettings$2
if the line is, Lcom/android/settings/Settings$HeaderAdapter$HeaderViewHolder edit it to become Lcom/android/settings/DeviceSettings$HeaderAdapter$HeaderViewHolder
if the line is, Lcom/android/settings/Settings$HeaderAdapter edit it to become Lcom/android/settings/DeviceSettings$HeaderAdapter

and so is edit all lines in
PersonalSettings.smali
PersonalSettings$1.smali
PersonalSettings$2.smali
PersonalSettings$HeaderAdapter$HeaderViewHolder.smali
PersonalSettings$HeaderAdapter.smali

if the line is, Lcom/android/settings/Settings edit it to become Lcom/android/settings/PersonalSettings
if the line is, Lcom/android/settings/Settings$1 edit it to become Lcom/android/settings/PersonalSettings$1
if the line is, Lcom/android/settings/Settings$2 edit it to become Lcom/android/settings/PersonalSettings$2
if the line is, Lcom/android/settings/Settings$HeaderAdapter$HeaderViewHolder edit it to become Lcom/android/settings/PersonalSettings$HeaderAdapter$HeaderViewHolder
if the line is, Lcom/android/settings/Settings$HeaderAdapter edit it to become Lcom/android/settings/PersonalSettings$HeaderAdapter


STEP -2
FOR CM10.1

go to :
\smali\com\android\settings\

Copy
Settings.smali
Settings$1.smali
Settings$2.smali
Settings$3.smali
Settings$HeaderAdapter$HeaderViewHolder.smali
Settings$HeaderAdapter.smali
to 3 part :

1st part , rename them from :
Copy of Settings.smali to AppSettings.smali
Copy of Settings$1.smali to AppSettings$1.smali
Copy of Settings$2.smali to AppSettings$2.smali
Copy of Settings$3.smali to AppSettings$3.smali
Copy of Settings$HeaderAdapter$HeaderViewHolder.smali to AppSettings$HeaderAdapter$HeaderViewHolder.smali
Copy of Settings$HeaderAdapter.smali to AppSettings$HeaderAdapter.smali

2nd part , rename them from :
Copy of Settings.smali to DeviceSettings.smali
Copy of Settings$1.smali to DeviceSettings$1.smali
Copy of Settings$2.smali to DeviceSettings$2.smali
Copy of Settings$3.smali to DeviceSettings$3.smali
Copy of Settings$HeaderAdapter$HeaderViewHolder.smali to DeviceSettings$HeaderAdapter$HeaderViewHolder.smali
Copy of Settings$HeaderAdapter.smali to DeviceSettings$HeaderAdapter.smali

3rd part, rename them from :
Copy of Settings.smali to PersonalSettings.smali
Copy of Settings$1.smali to PersonalSettings$1.smali
Copy of Settings$2.smali to PersonalSettings$2.smali
Copy of Settings$3.smali to PersonalSettings$3.smali
Copy of Settings$HeaderAdapter$HeaderViewHolder.smali to PersonalSettings$HeaderAdapter$HeaderViewHolder.smali
Copy of Settings$HeaderAdapter.smali to PersonalSettings$HeaderAdapter.smali

STEP -3
We are going to edit all lines that contain this line
Code:
Lcom/android/settings/Settings  
Lcom/android/settings/Settings$1
Lcom/android/settings/Settings$2 
Lcom/android/settings/Settings$3 
Lcom/android/settings/Settings$HeaderAdapter$HeaderViewHolder 
Lcom/android/settings/Settings$HeaderAdapter
in all renamed smali

but Before doing STEP -3, you must read this first : http://forum.xda-developers.com/showpost.php?p=41286468&postcount=3

Open in text editor/Notepad++
AppSettings.smali
AppSettings$1.smali
AppSettings$2.smali
AppSettings$3.smali
AppSettings$HeaderAdapter$HeaderViewHolder.smali
AppSettings$HeaderAdapter.smali

edit all lines in that all smali from :
if the line is, Lcom/android/settings/Settings edit it to become Lcom/android/settings/AppSettings
if the line is, Lcom/android/settings/Settings$1 edit it to become Lcom/android/settings/AppSettings$1
if the line is, Lcom/android/settings/Settings$2 edit it to become Lcom/android/settings/AppSettings$2
if the line is, Lcom/android/settings/Settings$3 edit it to become Lcom/android/settings/AppSettings$3
if the line is, Lcom/android/settings/Settings$HeaderAdapter$HeaderViewHolder edit it to become Lcom/android/settings/AppSettings$HeaderAdapter$HeaderViewHolder
if the line is, Lcom/android/settings/Settings$HeaderAdapter edit it to become Lcom/android/settings/AppSettings$HeaderAdapter

and so is edit all lines in
DeviceSettings.smali
DeviceSettings$1.smali
DeviceSettings$2.smali
DeviceSettings$3.smali
DeviceSettings$HeaderAdapter$HeaderViewHolder.smali
DeviceSettings$HeaderAdapter.smali

if the line is, Lcom/android/settings/Settings edit it to become Lcom/android/settings/DeviceSettings
if the line is, Lcom/android/settings/Settings$1 edit it to become Lcom/android/settings/DeviceSettings$1
if the line is, Lcom/android/settings/Settings$2 edit it to become Lcom/android/settings/DeviceSettings$2
if the line is, Lcom/android/settings/Settings$3 edit it to become Lcom/android/settings/DeviceSettings$3
if the line is, Lcom/android/settings/Settings$HeaderAdapter$HeaderViewHolder edit it to become Lcom/android/settings/DeviceSettings$HeaderAdapter$HeaderViewHolder
if the line is, Lcom/android/settings/Settings$HeaderAdapter edit it to become Lcom/android/settings/DeviceSettings$HeaderAdapter

and so is edit all lines in
PersonalSettings.smali
PersonalSettings$1.smali
PersonalSettings$2.smali
PersonalSettings$3.smali
PersonalSettings$HeaderAdapter$HeaderViewHolder.smali
PersonalSettings$HeaderAdapter.smali

if the line is, Lcom/android/settings/Settings edit it to become Lcom/android/settings/PersonalSettings
if the line is, Lcom/android/settings/Settings$1 edit it to become Lcom/android/settings/PersonalSettings$1
if the line is, Lcom/android/settings/Settings$2 edit it to become Lcom/android/settings/PersonalSettings$2
if the line is, Lcom/android/settings/Settings$3 edit it to become Lcom/android/settings/PersonalSettings$3
if the line is, Lcom/android/settings/Settings$HeaderAdapter$HeaderViewHolder edit it to become Lcom/android/settings/PersonalSettings$HeaderAdapter$HeaderViewHolder
if the line is, Lcom/android/settings/Settings$HeaderAdapter edit it to become Lcom/android/settings/PersonalSettings$HeaderAdapter

DONE AND COMPILE ,
FOR CM9, CM10 & CM10.1 CONTINUE TO NEXT STEP
STEP 4 IN POST #4
 

Attachments

Last edited:

Adi Aisiteru Reborn

Senior Member
Apr 3, 2013
1,770
4,830
0
Bandar Lampung
ATTENTION !!!
there is an exception of editing all line, that you must not edit or not allowed to edit All lines on annotation section in :

FOR CM9
in
AppSettings.smali
AppSettings$1.smali
AppSettings$HeaderAdapter$HeaderViewHolder.smali
AppSettings$HeaderAdapter.smali

DeviceSettings.smali
DeviceSettings$1.smali
DeviceSettings$HeaderAdapter$HeaderViewHolder.smal i
DeviceSettings$HeaderAdapter.smali

PersonalSettings.smali
PersonalSettings$1.smali
PersonalSettings$HeaderAdapter$HeaderViewHolder.sm ali
PersonalSettings$HeaderAdapter.smali


FOR CM10
in
AppSettings.smali
AppSettings$1.smali
AppSettings$2.smali
AppSettings$HeaderAdapter$HeaderViewHolder.smali
AppSettings$HeaderAdapter.smali

DeviceSettings.smali
DeviceSettings$1.smali
DeviceSettings$2.smali
DeviceSettings$HeaderAdapter$HeaderViewHolder.smali
DeviceSettings$HeaderAdapter.smali

PersonalSettings.smali
PersonalSettings$1.smali
PersonalSettings$2.smali
PersonalSettings$HeaderAdapter$HeaderViewHolder.smali
PersonalSettings$HeaderAdapter.smali


FOR CM10.1
in
AppSettings.smali
AppSettings$1.smali
AppSettings$2.smali
AppSettings$3.smali
AppSettings$HeaderAdapter$HeaderViewHolder.smali
AppSettings$HeaderAdapter.smali

DeviceSettings.smali
DeviceSettings$1.smali
DeviceSettings$2.smali
DeviceSettings$3.smali
DeviceSettings$HeaderAdapter$HeaderViewHolder.smal i
DeviceSettings$HeaderAdapter.smali

PersonalSettings.smali
PersonalSettings$1.smali
PersonalSettings$2.smali
PersonalSettings$3.smali
PersonalSettings$HeaderAdapter$HeaderViewHolder.sm ali
PersonalSettings$HeaderAdapter.smali



below is an example for CM10.1 !!!

EXAMPLE FOR CM10.1
do not edit all red line on annotation section
in AppSettings.smali, DeviceSettings.smali, PersonalSettings.smali

Code:
# annotations
.annotation system Ldalvik/annotation/MemberClasses;
    value = {
       [COLOR="Red"]Lcom/android/settings/Settings$SystemSettingsActivity;,
        Lcom/android/settings/Settings$DreamSettingsActivity;,
        Lcom/android/settings/Settings$QuietHoursSettingsActivity;,
        Lcom/android/settings/Settings$ProfilesSettingsActivity;,
        Lcom/android/settings/Settings$ApnEditorActivity;,
        Lcom/android/settings/Settings$ApnSettingsActivity;,
        Lcom/android/settings/Settings$AnonymousStatsActivity;,
        Lcom/android/settings/Settings$WifiDisplaySettingsActivity;,
        Lcom/android/settings/Settings$AndroidBeamSettingsActivity;,
        Lcom/android/settings/Settings$TextToSpeechSettingsActivity;,
        Lcom/android/settings/Settings$AdvancedWifiSettingsActivity;,
        Lcom/android/settings/Settings$DataUsageSummaryActivity;,
        Lcom/android/settings/Settings$DeviceAdminSettingsActivity;,
        Lcom/android/settings/Settings$CryptKeeperSettingsActivity;,
        Lcom/android/settings/Settings$AccountSyncSettingsActivity;,
        Lcom/android/settings/Settings$PowerUsageSummaryActivity;,
        Lcom/android/settings/Settings$RunningServicesActivity;,
        Lcom/android/settings/Settings$PrivacySettingsActivity;,
        Lcom/android/settings/Settings$LocationSettingsActivity;,
        Lcom/android/settings/Settings$SecuritySettingsActivity;,
        Lcom/android/settings/Settings$AccessibilitySettingsActivity;,
        Lcom/android/settings/Settings$DevelopmentSettingsActivity;,
        Lcom/android/settings/Settings$StorageUseActivity;,
        Lcom/android/settings/Settings$ManageApplicationsActivity;,
        Lcom/android/settings/Settings$DeviceInfoSettingsActivity;,
        Lcom/android/settings/Settings$DisplaySettingsActivity;,
        Lcom/android/settings/Settings$SoundSettingsActivity;,
        Lcom/android/settings/Settings$UserDictionarySettingsActivity;,
        Lcom/android/settings/Settings$LocalePickerActivity;,
        Lcom/android/settings/Settings$SpellCheckersSettingsActivity;,
        Lcom/android/settings/Settings$KeyboardLayoutPickerActivity;,
        Lcom/android/settings/Settings$InputMethodAndLanguageSettingsActivity;,
        Lcom/android/settings/Settings$WifiP2pSettingsActivity;,
        Lcom/android/settings/Settings$WifiSettingsActivity;,
        Lcom/android/settings/Settings$StorageSettingsActivity;,
        Lcom/android/settings/Settings$DateTimeSettingsActivity;,
        Lcom/android/settings/Settings$VpnSettingsActivity;,
        Lcom/android/settings/Settings$TetherSettingsActivity;,
        Lcom/android/settings/Settings$WirelessSettingsActivity;,
        Lcom/android/settings/Settings$BluetoothSettingsActivity;,
        Lcom/android/settings/Settings$HeaderAdapter;[/COLOR] 
    }
.end annotation

do not edit red line on annotation section
in AppSettings$1.smali, DeviceSettings$1.smali, PersonalSettings$1.smali

Code:
# annotations
.annotation system Ldalvik/annotation/EnclosingMethod;
    value = [COLOR="Red"]Lcom/android/settings/Settings[/COLOR] ;->onCreate(Landroid/os/Bundle;)V
.end annotation

.annotation system Ldalvik/annotation/InnerClass;
    accessFlags = 0x0
    name = null
.end annotation
do not edit red line on annotation section
in AppSettings$2.smali, DeviceSettings$2.smali, PersonalSettings$2.smali

Code:
# annotations
.annotation system Ldalvik/annotation/EnclosingMethod;
    value = [COLOR="Red"]Lcom/android/settings/Settings[/COLOR] ;->onResume()V
.end annotation

.annotation system Ldalvik/annotation/InnerClass;
    accessFlags = 0x0
    name = null
.end annotation
do not edit red line on annotation section
in AppSettings$3.smali, DeviceSettings$3.smali, PersonalSettings$3.smali

Code:
# annotations
.annotation system Ldalvik/annotation/EnclosingMethod;
    value = [COLOR="Red"]Lcom/android/settings/Settings[/COLOR] ;->insertAccountsHeaders(Ljava/util/List;I)I
.end annotation

.annotation system Ldalvik/annotation/InnerClass;
    accessFlags = 0x0
    name = null
.end annotation

.annotation system Ldalvik/annotation/Signature;
    value = {
        "Ljava/lang/Object;",
        "Ljava/util/Comparator",
        "<",
        "Landroid/preference/PreferenceActivity$Header;",
        ">;"
    }
.end annotation
do not edit red line on annotation section
in AppSettings$HeaderAdapter$HeaderViewHolder.smali, DeviceSettings$HeaderAdapter$HeaderViewHolder.smali, PersonalSettings$HeaderAdapter$HeaderViewHolder.smali
Code:
# annotations
.annotation system Ldalvik/annotation/EnclosingClass;
    value = [COLOR="Red"]Lcom/android/settings/Settings$HeaderAdapter;[/COLOR] 
.end annotation

.annotation system Ldalvik/annotation/InnerClass;
    accessFlags = 0xa
    name = "HeaderViewHolder"
.end annotation
do not edit red line on annotation section
in AppSettings$HeaderAdapter.smali, DeviceSettings$HeaderAdapter.smali, PersonalSettings$HeaderAdapter.smali
Code:
# annotations
.annotation system Ldalvik/annotation/EnclosingClass;
    value =[COLOR="Red"]Lcom/android/settings/Settings[/COLOR] ;
.end annotation

.annotation system Ldalvik/annotation/InnerClass;
    accessFlags = 0xa
    name = "HeaderAdapter"
.end annotation

.annotation system Ldalvik/annotation/MemberClasses;
    value = {
       [COLOR="Red"]Lcom/android/settings/Settings$HeaderAdapter$HeaderViewHolder;[/COLOR] 
    }
.end annotation

.annotation system Ldalvik/annotation/Signature;
    value = {
        "Landroid/widget/ArrayAdapter",
        "<",
        "Landroid/preference/PreferenceActivity$Header;",
        ">;"
    }
.end annotation
 
Last edited:

Adi Aisiteru Reborn

Senior Member
Apr 3, 2013
1,770
4,830
0
Bandar Lampung
OKE NEXT STEP IS STEP 4
Decompile the Newly recompiled Settings.apk again
go to
smali/com/android/settings/MainSettings.smali, open with Notepad++ MainSettings.smali, keep it open
AND
go to
res/values/public.xml
REPLACE ALL red ids in MainSettings.smali with your new ids in new public.xml
Code:
[B]MainSettings.smali[/B]                         new [B]public.xml[/B]

     [COLOR="Red"]0x7f08022a[/COLOR]       ->     <public type="id" name="vPager" id="[COLOR="Red"]0x????????[/COLOR] " />

     [COLOR="Red"]0x7f080229[/COLOR]       ->     <public type="id" name="cursor" id="[COLOR="Red"]0x????????[/COLOR] " />

     [COLOR="Red"]0x7f080168[/COLOR]       ->     <public type="id" name="app_tab" id="[COLOR="Red"]0x????????[/COLOR] " />

     [COLOR="Red"]0x7f080228[/COLOR]       ->     <public type="id" name="device_tab" id="[COLOR="Red"]0x????????[/COLOR] " />

     [COLOR="Red"]0x7f080227[/COLOR]       ->     <public type="id" name="personalized_tab" id="[COLOR="Red"]0x????????[/COLOR] " />

     [COLOR="Red"]0x7f040090[/COLOR]       ->     <public type="layout" name="mainsetting" id="[COLOR="Red"]0x????????[/COLOR] " />

NEXT
in public.xml
find
Code:
<public type="xml" name="settings_headers" id="[COLOR="Red"]0x????????[/COLOR]" />
KEEP IT OPEN, AND GO TO :
smali/com/android/settings/
and open with Notepad++
AppSettings.smali, DeviceSettings.smali, PersonalSettings.smali
and find settings_header ids , 0x???????? in all that 3 smali, so it's gonna be like this
Code:
[COLOR="Red"]0x????????[/COLOR]  in   AppSettings.smali

[COLOR="Red"]0x????????[/COLOR]  in  DeviceSettings.smali

[COLOR="Red"]0x????????[/COLOR]  in  PersonalSettings.smali
of course, the ids in all that three will be same, because all that three smali is copied of setting.smali,.
now we must change all red ids, with new ids in public.xml

Code:
[B]replace the Red Ids in  AppSettings.smali, DeviceSettings.smali, PersonalSettings.smali, with new ids in public.xml :[/B]

in PersonalSettings.smali -> replace with  <public type="xml" name="personal_settings_headers" id="[COLOR="Magenta"]0x????????[/COLOR]" />

in DeviceSettings.smali   -> replace with <public type="xml" name="device_settings_headers" id="[COLOR="Green"]0x????????[/COLOR]" />

in AppSettings.smali      -> replace with  <public type="xml" name="app_settings_headers" id="[COLOR="Blue"]0x????????[/COLOR]" />
NEXT
go to res/xml/
app_settings_headers.xml
device_settings_headers.xml
personal_settings_headers.xml

open with Notepad++ all that xml, and chnge the line from
Code:
<?xml version="1.0" encoding="utf-8"?>
<preference-headers
  xmlns:android="http://schemas.android.com/apk/res/android" />
chnge to :
Code:
<?xml version="1.0" encoding="utf-8"?>
<preference-headers
  xmlns:android="http://schemas.android.com/apk/res/android">
 
</preference-headers>

NEXT
manage your settings shortcut in settings_header.xml copy it and paste it to the 3 empty xml
go to this page, and read my eplanation for adding 3 empty xml http://forum.xda-developers.com/showpost.php?p=41082390&postcount=46

NEXT
open up 'AndroidManifest.xml' of your decompiled settings.apk in a text editor./Notepad++
-Find a section similar to the below....
Code:
<activity android:label="@string/settings_label_launcher" android:name="Settings" android:taskAffinity="com.android.settings" android:clearTaskOnLaunch="true" android:launchMode="singleTop">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <action android:name="android.settings.SETTINGS" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
The important parts you are looking for are 'name="Settings" and the 'android.intent.category.LAUNCHER' lines, there *should* only be a single section with these.
Change this section to the below:
Code:
<activity android:label="@string/settings_label_launcher" android:name="Settings">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>
Directly above that section copy/paste the following
Code:
<activity android:name="MainSetting" android:theme="@android:style/Theme.NoTitleBar"  android:taskAffinity="com.android.settings" android:launchMode="singleTask">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <action android:name="android.settings.SETTINGS" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:label="@string/settings_label_launcher" android:name="PersonalSettings" android:taskAffinity="com.android.settings" android:launchMode="singleTask">
            <intent-filter>
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>
        <activity android:label="@string/settings_label_launcher" android:name="DeviceSettings" android:taskAffinity="com.android.settings" android:launchMode="singleTask">
            <intent-filter>
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>
        <activity android:label="@string/settings_label_launcher" android:name="AppSettings" android:taskAffinity="com.android.settings" android:launchMode="singleTask">
            <intent-filter>
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>
Recompile your settings.apk and sign it
You can try using any of the keys that come with whatever apk signing tool you use, but you will more then likely end up with a Settings.apk that wont show as being installed, you must sign it with platfrom keys from CyanogenMod's android_build github https://github.com/CyanogenMod/android_build/tree/jellybean/target/product/security

I usually use ApkMultitools for Decompiling, Recompiling, and signing apk, so if you use ApkMultitols, you can use my signer keys that I've modified included CM signer,
Download this, : http://d-h.st/mGS
exstract it, and merge it your ApkMultitolls/other/here
 

Attachments

Last edited:

Adi Aisiteru Reborn

Senior Member
Apr 3, 2013
1,770
4,830
0
Bandar Lampung
for those who have followed my guide,
please check again on STEP - 1
I've fixed it

I forgot to add some lines to the end of your
settings/res/values/strings.xml'

Code:
<string name="personalized_setting">Personal</string>
<string name="device_setting">System</string>
<string name="app_setting">Applications</string>
and in settings/res/values/ids.xml
Code:
<item type="id" name="linearLayout1">false</item>
<item type="id" name="personalized_tab">false</item>
<item type="id" name="device_tab">false</item>
<item type="id" name="app_tab">false</item>
<item type="id" name="cursor">false</item>
<item type="id" name="vPager">false</item>
 

Adi Aisiteru Reborn

Senior Member
Apr 3, 2013
1,770
4,830
0
Bandar Lampung
go to res/layout/
app_settings_headers.xml
device_settings_headers.xml
personal_settings_headers.xml

or

go to res/xml/
app_settings_headers.xml
device_settings_headers.xml
personal_settings_headers.xml

because in your source 3 xml files in xml folder..
thanks :)
Ohh.. ya..Im sorryy,
. I'll fix it, thnks for reminding me ...:D

Yes, you are right
Res/xml/here

EDIT : Done, I'v fixed it :)

Sent from my GT-I8150 using xda app-developers app
 
Last edited: