Sunteți pe pagina 1din 10

[GUIDE][MOD]Adding custom ROM image in

Settings.apk

Custom ROM Image in Settings.apk


Featured in Cosmic v2, I was searching for this for a long time, I happened to ask for help to some
people, but, it didn't work out.
I knew the code to be added, but I was adding it in wrong file, then i figured it out and mod was
complete

I looked back and remembered that Sniper Killer suggested me to try custom layout and smali
editing. I knew, it was nothing to do with smalis, duh. Just a simple ImageView Tag it was. But the
Custom Layout thing was true

Guide
1. Download the SettingsSource.zip
2. Decompile your Settings.apk
3. Extract contents of SettingsSource.zip to respective folders in Settings.apk
4. Open /res/xml/device_info_settings.xml
You'll see several <Preference android:title tags
Add this just a line above the first Preference tag:
Code:
<PreferenceCategory android:layout="@layout/areebisawesome" android:key="blah"
android:title="" />

Finally, it will look like this


Code:
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen android:title="@string/about_settings"
xmlns:android="http://schemas.android.com/apk/res/android">
<PreferenceCategory android:layout="@layout/areebisawesome"
android:key="blah" android:title="" />

<Preference android:title="@string/model_number"
android:key="device_model" android:summary="@string/device_info_default"
style="?android:preferenceInformationStyle" />

Save the file


5. Now,go to /res/drawable/
There, you'll see cosmic.png Change it to any png of size 320x200 You can change this size
description in /res/layout/areebisawesome.xml
6. Recompile the apk
7. Enjoy

Suggestion......

Areeb Awesome guide but i already ported it from ur modded settings to my rom [ actually i
never thought u will post this guide
]
i ported it but i was not happy as on clicking picture nothing happens....
so i added a onclick functionality ....
it means when we click on picture then it will Display a new picture there.....
so here is my mod :--->
abhi922isawesome.xml [ actually u are awsm too

Code:
<?xml version="1.0" encoding="utf-8"?>
<ImageView android:layout_gravity="center" android:paddingBottom="6.0dip"
android:clickable="true" android:layout_width="fill_parent"
android:layout_height="400.0px" android:src="@drawable/about"
android:scaleType="fitXY"
xmlns:android="http://schemas.android.com/apk/res/android" />

What I've Done ????


1.) Added android:clickable="true" ------> to make our layout clickable
2.) Added android:src="@drawable/about" ------> it is a xml not a picture/png...[it will replace our
images on click ]
place about.xml at drawable folder...
about.xml
Code:
<?xml version="1.0" encoding="utf-8"?>
<selector
xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:drawable="@drawable/about2" />
<item android:state_selected="true" android:drawable="@drawable/about2" />
<item android:drawable="@drawable/about1" />

</selector>

also add about1.png as first unpressed picture


And about2.png as pressed picture...
Also we can use android:layout_width="fill_parent" ----> if we add small resolution picture
then it will automatically fill whole width......
i hope this will improve this mod..... [ i was also thinking to make similar thread ]
regards,
abhi922.

[Tutorial] Adding new Activity Header/Sub Menu to


Settings.apk

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="@str
ing/uipref_title">
<PreferenceScreen android:icon="@drawable/cust_bar_wallpapers" android
:title="@string/wallpaper_settings_title" android:key="wallpaper" android:frag
ment="com.android.settings.WallpaperTypeSettings" />
<com.sonymobile.settings.preference.IntentPreference android:icon="@dr
awable/ic_lighteffects" android:title="@string/light_effects_settings_title" a
ndroid:key="light_effects" settings:dependOnIsValidIntent="true" settings:afte
r="theme">
<intent android:targetPackage="com.sonymobile.settings.illuminatio
n" android:action="android.intent.action.MAIN" android:targetClass="com.sonymo
bile.settings.illumination.IlluminationSetting" />
</com.sonymobile.settings.preference.IntentPreference>
<com.sonymobile.settings.preference.IntentPreference android:icon="@dr
awable/homescreen_application_launcher" android:key="lockscreen" settings:depe
ndOnIsValidIntent="true" settings:hasMetaData="true">
<intent android:action="com.sonyericsson.settings.intent.action.LO
CKSCREEN" />
</com.sonymobile.settings.preference.IntentPreference>
</com.sonymobile.settings.preference.PreferenceCategory>
<com.sonymobile.settings.preference.PreferenceCategory android:title="@str
ing/systemuipref_title">
<com.sonymobile.settings.preference.IntentPreference android:icon="@dr
awable/ic_systemui1" android:key="quicksettings" settings:dependOnIsValidInten
t="true" settings:hasMetaData="true">
<intent android:action="com.sonymobile.intent.action.TOOLBAR_SETTI
NGS" />
</com.sonymobile.settings.preference.IntentPreference>
<com.sonymobile.settings.preference.IntentPreference android:icon="@dr
awable/ic_systemui2" android:key="power_toggles" settings:dependOnIsValidInten
t="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 bysaqib 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

S-ar putea să vă placă și