FORUMS

Android 5.1.1 Omni ROM For Motorola Xoom

Back in Feb 2011, the Motorola Xoom became the first device to be sold with Android 3.0 … more

CleanSlate Brings Fingerprint Scanner Mod to HTC One M9+

Work of XDA Recognized Developer tbalden, CleanSlate custom kernel for the HTC … more

Sunday Debate: Which Factors Caused HTC’s Woes?

Join us in a fun Sunday Debate on HTC’s situation. Come with your … more

HTC’s New Ad Campaign And What It Really Means

HTC has just released three new blind test adverts comparing app loading … more

 View Poll Results: Was it Helpful?

Yes!
 
28 Vote(s)
90.32%
No.
 
3 Vote(s)
9.68%

[Tutorial] Adding new Activity Header/Sub Menu to Settings.apk

969 posts
Thanks Meter: 1,041
 
Post Reply Subscribe to Thread Email Thread
28th April 2015, 03:47 PM |#71  
thedevilashish's Avatar
Senior Member
Flag Ranchi, Jharkhand
Thanks Meter: 228
 
More
Quote:
Originally Posted by Madaditya

Hi Geeks

Here's a tutorial on how to add an Activity Header to Settings.apk

Requirements:

1.Settings.apk
2.Notepad ++ or Editor Alternatives
3.Apktool to Decompile apk
4.A Little Common sense

Tutorial:

1. Decompile Settings.apk

2.Open to res/xml/settings_headers.xml

3.Lets take an example i want to Add "Maddy" as a activity header



add this line

Code:
 <header android:icon="@drawable/ic_settings_maddy" android:id="@id/maddy_settings" android:title="@string/maddy_settings" android:fragment="com.android.settings.Maddy" />
The layout in settings_headers.xml is categorized. If you want submenu "Maddy" to appear after 'Apps' as shown,add the line after the line that says <header android:icon="@drawable/ic_settings_applications"..... as shown

Code:
 <header android:icon="@drawable/ic_settings_applications" android:id="@id/application_settings" android:title="@string/applications_settings" android:fragment="com.android.settings.applications.ManageApplications" />
 <header android:icon="@drawable/ic_settings_maddy" android:id="@id/maddy_settings" android:title="@string/maddy_settings" android:fragment="com.android.settings.Maddy" />

3.1-@drawable/ic_settings_maddy=This refers to the png in res/drawable-*dpi/ folder

Add a new png named ic_settings_maddy.png in res/drawable-*dpi/
It will be the Image that will show up in settings menu (The Wifi like icon in my case)

* = hdpi / mdpi /xhdpi /xxhdpi /xxxhdpi (Depends on your device)




3.2-@id/maddy_settings=This refers to id value in /res/values/ids.xml

Open res/values/ids.xml and add this code

Code:
<item type="id" name="maddy_settings">false</item>


3.3 - @string/maddy_settings = Refers to a string in res/values/strings.xml

Open strings.xml and add this code

Code:
<string name="maddy_settings">Your String here</string>
Add the string you wish to see in settings Submenu in place of 'Your String Here'



3.4-com.android.settings.Maddy = Refers to the smali file in smali/com/android/settings/


4. Open res/values/public.xml
and find the last line that says
<public type="xml" ...

like
Code:
<public type="xml" name="somethig_something" id="0x7f050053" />
Note the Hex code in Blue.It can be different for you
and now add this line just after the last line of type="xml"

Code:
<public type="xml" name="maddy_settings" id="0x7f050054" />
Also Note that the previous address in my case was 0x7f050053
so the new address will be "Previous address + 1(Hex addition)" i.e 0x7f050054

Replace 0x7f050054 with your calculated Address.



If your Address is 0x7f050039
Next Addres = 0x7f05003a

if your address is 0x7f05003f
next address = 0x7f050040
and so on..

5.Go to res/xml/
and add a new file named maddy_settings.xml

This xml would contain the Apps/Actions you wish to see inside the Submenu "Maddy"

Just like you see

Brightness
Screen timeout
etc etc

options when you click Display in Settings Menu
an example of what maddy_settings.xml may contain

PHP Code:
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen android:title="@string/maddy_settings"
  xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:settings="http://schemas.android.com/apk/res/com.android.settings">
    <com.sonymobile.settings.preference.PreferenceCategory android:title="@string/uipref_title">
        <PreferenceScreen android:icon="@drawable/cust_bar_wallpapers" android:title="@string/wallpaper_settings_title" android:key="wallpaper" android:fragment="com.android.settings.WallpaperTypeSettings" />
        <com.sonymobile.settings.preference.IntentPreference android:icon="@drawable/ic_lighteffects" android:title="@string/light_effects_settings_title" android:key="light_effects" settings:dependOnIsValidIntent="true" settings:after="theme">
            <intent android:targetPackage="com.sonymobile.settings.illumination" android:action="android.intent.action.MAIN" android:targetClass="com.sonymobile.settings.illumination.IlluminationSetting" />
        </com.sonymobile.settings.preference.IntentPreference>
        <com.sonymobile.settings.preference.IntentPreference android:icon="@drawable/homescreen_application_launcher" android:key="lockscreen" settings:dependOnIsValidIntent="true" settings:hasMetaData="true">
            <intent android:action="com.sonyericsson.settings.intent.action.LOCKSCREEN" />
        </com.sonymobile.settings.preference.IntentPreference>
    </com.sonymobile.settings.preference.PreferenceCategory>
    <com.sonymobile.settings.preference.PreferenceCategory android:title="@string/systemuipref_title">
        <com.sonymobile.settings.preference.IntentPreference android:icon="@drawable/ic_systemui1" android:key="quicksettings" settings:dependOnIsValidIntent="true" settings:hasMetaData="true">
            <intent android:action="com.sonymobile.intent.action.TOOLBAR_SETTINGS" />
        </com.sonymobile.settings.preference.IntentPreference>
        <com.sonymobile.settings.preference.IntentPreference android:icon="@drawable/ic_systemui2" android:key="power_toggles" settings:dependOnIsValidIntent="true" settings:hasMetaData="true">
            <intent android:action="com.serajr.powertoggles.preferences.intent.PREFERENCES" />
        </com.sonymobile.settings.preference.IntentPreference>
    </com.sonymobile.settings.preference.PreferenceCategory>
</PreferenceScreen>


To Add these Apps/shortcuts to the submenu you just created,refer this guide [Tutorial] How to add any App/Option in Settings.apk by saqib nazm
Just use the new maddy_settings.xml to link your new apps/actions.

6.Open smali/com/android/settings/ and add a new file named Maddy.smali

paste this code in it

Code:
.class public Lcom/android/settings/Maddy;
.super Lcom/android/settings/SettingsPreferenceFragment;
.source "Maddy.java"


# direct methods
.method public constructor <init>()V
    .locals 0

    .prologue
    .line 17
    invoke-direct {p0}, Lcom/android/settings/SettingsPreferenceFragment;-><init>()V

    return-void
.end method


# virtual methods
.method public onCreate(Landroid/os/Bundle;)V
    .locals 1
    .parameter "savedInstanceState"

    .prologue
    .line 21
    invoke-super {p0, p1}, Lcom/android/settings/SettingsPreferenceFragment;->onCreate(Landroid/os/Bundle;)V

    .line 23
    const v0, 0x7f050054

    invoke-virtual {p0, v0}, Lcom/android/settings/Maddy;->addPreferencesFromResource(I)V

    .line 24
    return-void
.end method
Find and replace "Maddy" with your smali name.
Smali names should always start with Capital Letters.

Also note the Hex code you added in Step 5.
replace 0x7f050054 with your Hex value.



7.Recompile your Apk and Done!



Note:
Should work with any versions of Xperia.
Also may work on other Devices,Please try and report.

Credits:

Saqib nazm : For teaching me all this!
DbcCabuslay : For Smali ideas
Jishnu Sur™ : For some Advice

Hit Thanks and Rate Good if you find it helpful and Motivate

Thanks For Awesome Thread But I Face Errors In Recomoiling. It Gives Error In The Smali File We Created! Any Help?
 
 
29th April 2015, 06:04 PM |#72  
Madaditya's Avatar
OP Recognized Themer
Flag No where
Thanks Meter: 1,041
 
More
Quote:
Originally Posted by thedevilashish

Thanks For Awesome Thread But I Face Errors In Recomoiling. It Gives Error In The Smali File We Created! Any Help?

Only if you share the error. please don't quote the Op whole. Edit you post
19th June 2015, 01:13 PM |#73  
Junior Member
Thanks Meter: 0
 
More
every thing is diffrent in cm 12.1 whit your Tutorial
Quote:
Originally Posted by Madaditya

Hi Geeks

Here's a tutorial on how to add an Activity Header to Settings.apk

Requirements:

1.Settings.apk
2.Notepad ++ or Editor Alternatives
3.Apktool to Decompile apk
4.A Little Common sense

Tutorial:

1. Decompile Settings.apk

2.Open to res/xml/settings_headers.xml

3.Lets take an example i want to Add "Maddy" as a activity header



add this line

Code:
 <header android:icon="@drawable/ic_settings_maddy" android:id="@id/maddy_settings" android:title="@string/maddy_settings" android:fragment="com.android.settings.Maddy" />
The layout in settings_headers.xml is categorized. If you want submenu "Maddy" to appear after 'Apps' as shown,add the line after the line that says <header android:icon="@drawable/ic_settings_applications"..... as shown

Code:
 <header android:icon="@drawable/ic_settings_applications" android:id="@id/application_settings" android:title="@string/applications_settings" android:fragment="com.android.settings.applications.ManageApplications" />
 <header android:icon="@drawable/ic_settings_maddy" android:id="@id/maddy_settings" android:title="@string/maddy_settings" android:fragment="com.android.settings.Maddy" />

Hit Thanks and Rate Good if you find it helpful and Motivate

hi
i use this method for CM12.1 but in res/xml there is no file like "settings_headers.xml" but i dont give up and search all of XLM file so i find some thing that i think in android 5.1.1 has been renamed to "dashboard_categories.xml"
and i do this on it ( is attached ) i have also found "ids.xml" in address "C:\AdvancedApkTool\3-Out\Settings.apk\res\values" (that have different address whit your Tutorial.

i done this thing. do i do right? or something wrong? you know... in dashboard_categories.xml the codes was changed and there is no more"
" <header android:icon="@drawable/ic_settings_about" "
and changed to " dashboard-category " and " <dashboard-tile "

can you update you Tutorial??
Attached Files
File Type: txt dashboard_categories.txt - [Click for QR Code] (9.6 KB, 2 views)
19th June 2015, 02:03 PM |#74  
Junior Member
Thanks Meter: 0
 
More
sorry i sent this reply in a wrong place.
Last edited by alirezajalilii; 19th June 2015 at 02:07 PM.
Post Reply Subscribe to Thread

Tags
add, edit, header, settings.apk
Previous Thread Next Thread
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes