[Sony Cross-Device Development Themes and Apps] venkat kamesh:
Final

Time for Coding Part

1. After compile and Decompile

2. open Open Settings.apk\smali\com\android\settings\R$styleable.smali

look for

.field public static final CheckBoxPreference:[I

after that add this

.field public static final DashboardTile:[I

now look for this

sput-object v0, Lcom/android/settings/R$styleable;->IconPreferenceScreen:[I

after that add this

new-array v0, v3, [I

const v1, 0x7f010060 # compare with my id

aput v1, v0, v2

sput-object v0, Lcom/android/settings/R$styleable;->DashboardTile:[I

save and Close

3. Now open Settings.apk\smali\com\android\settings\settings.activity.smali

find this method

.method public static loadCategoriesFromResource(ILjava/util/List;Landroid/content/Context;)V

replace with this method

.method public static loadCategoriesFromResource(ILjava/util/List;Landroid/content/Context;)V
.locals 21
.annotation system Ldalvik/annotation/Signature;
value = {
"(I",
"Ljava/util/List",
"<",
"Lcom/android/settings/dashboard/DashboardCategory;",
">;",
"Landroid/content/Context;",
")V"
}
.end annotation

const/4 v13, 0x0

:try_start_0
invoke-virtual/range {p2 .. p2}, Landroid/content/Context;->getResources()Landroid/content/res/Resources;

move-result-object v18

move-object/from16 v0, v18

move/from16 v1, p0

invoke-virtual {v0, v1}, Landroid/content/res/Resources;->getXml(I)Landroid/content/res/XmlResourceParser;

move-result-object v13

invoke-static {v13}, Landroid/util/Xml;->asAttributeSet(Lorg/xmlpull/v1/XmlPullParser;)Landroid/util/AttributeSet;

move-result-object v2

:cond_0
invoke-interface {v13}, Landroid/content/res/XmlResourceParser;->next()I

move-result v17

const/16 v18, 0x1

move/from16 v0, v17

move/from16 v1, v18

if-eq v0, v1, :cond_1

const/16 v18, 0x2

move/from16 v0, v17

move/from16 v1, v18

if-ne v0, v1, :cond_0

:cond_1
invoke-interface {v13}, Landroid/content/res/XmlResourceParser;->getName()Ljava/lang/String;

move-result-object v11

const-string/jumbo v18, "dashboard-categories"

move-object/from16 v0, v18

invoke-virtual {v0, v11}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z

move-result v18

if-nez v18, :cond_3

new-instance v18, Ljava/lang/RuntimeException;

new-instance v19, Ljava/lang/StringBuilder;

invoke-direct/range {v19 .. v19}, Ljava/lang/StringBuilder;-><init>()V

const-string/jumbo v20, "XML document must start with <preference-categories> tag; found"

invoke-virtual/range {v19 .. v20}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

move-result-object v19

move-object/from16 v0, v19

invoke-virtual {v0, v11}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

move-result-object v19

const-string/jumbo v20, " at "

invoke-virtual/range {v19 .. v20}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

move-result-object v19

invoke-interface {v13}, Landroid/content/res/XmlResourceParser;->getPositionDescription()Ljava/lang/String;

move-result-object v20

invoke-virtual/range {v19 .. v20}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

move-result-object v19

invoke-virtual/range {v19 .. v19}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

move-result-object v19

invoke-direct/range {v18 .. v19}, Ljava/lang/RuntimeException;-><init>(Ljava/lang/String;)V

throw v18
:try_end_0
.catch Lorg/xmlpull/v1/XmlPullParserException; {:try_start_0 .. :try_end_0} :catch_0
.catch Ljava/io/IOException; {:try_start_0 .. :try_end_0} :catch_1
.catchall {:try_start_0 .. :try_end_0} :catchall_0

:catch_0
move-exception v6

:try_start_1
new-instance v18, Ljava/lang/RuntimeException;

const-string/jumbo v19, "Error parsing categories"

move-object/from16 v0, v18

move-object/from16 v1, v19

invoke-direct {v0, v1, v6}, Ljava/lang/RuntimeException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V

throw v18
:try_end_1
.catchall {:try_start_1 .. :try_end_1} :catchall_0

:catchall_0
move-exception v18

if-eqz v13, :cond_2

invoke-interface {v13}, Landroid/content/res/XmlResourceParser;->close()V

:cond_2
throw v18

:cond_3
const/4 v4, 0x0

:try_start_2
invoke-interface {v13}, Landroid/content/res/XmlResourceParser;->getDepth()I

move-result v12

:cond_4
:goto_0
invoke-interface {v13}, Landroid/content/res/XmlResourceParser;->next()I

move-result v17

const/16 v18, 0x1

move/from16 v0, v17

move/from16 v1, v18

if-eq v0, v1, :cond_1b

const/16 v18, 0x3

move/from16 v0, v17

move/from16 v1, v18

if-ne v0, v1, :cond_5

invoke-interface {v13}, Landroid/content/res/XmlResourceParser;->getDepth()I

move-result v18

move/from16 v0, v18

if-le v0, v12, :cond_1b

:cond_5
const/16 v18, 0x3

move/from16 v0, v17

move/from16 v1, v18

if-eq v0, v1, :cond_4

const/16 v18, 0x4

move/from16 v0, v17

move/from16 v1, v18

if-eq v0, v1, :cond_4

invoke-interface {v13}, Landroid/content/res/XmlResourceParser;->getName()Ljava/lang/String;

move-result-object v11

const-string/jumbo v18, "dashboard-category"

move-object/from16 v0, v18

invoke-virtual {v0, v11}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z

move-result v18

if-eqz v18, :cond_1a

new-instance v3, Lcom/android/settings/dashboard/DashboardCategory;

invoke-direct {v3}, Lcom/android/settings/dashboard/DashboardCategory;-><init>()V

sget-object v18, Lcom/android/internal/R$styleable;->PreferenceHeader:[I

move-object/from16 v0, p2

move-object/from16 v1, v18

invoke-virtual {v0, v2, v1}, Landroid/content/Context;->obtainStyledAttributes(Landroid/util/AttributeSet;[I)Landroid/content/res/TypedArray;

move-result-object v14

const/16 v18, 0x1

const/16 v19, -0x1

move/from16 v0, v18

move/from16 v1, v19

invoke-virtual {v14, v0, v1}, Landroid/content/res/TypedArray;->getResourceId(II)I

move-result v18

move/from16 v0, v18

int-to-long v0, v0

move-wide/from16 v18, v0

move-wide/from16 v0, v18

iput-wide v0, v3, Lcom/android/settings/dashboard/DashboardCategory;->id:J

const/16 v18, 0x2

move/from16 v0, v18

invoke-virtual {v14, v0}, Landroid/content/res/TypedArray;->peekValue(I)Landroid/util/TypedValue;

move-result-object v16

if-eqz v16, :cond_6

move-object/from16 v0, v16

iget v0, v0, Landroid/util/TypedValue;->type:I

move/from16 v18, v0

const/16 v19, 0x3

move/from16 v0, v18

move/from16 v1, v19

if-ne v0, v1, :cond_6

move-object/from16 v0, v16

iget v0, v0, Landroid/util/TypedValue;->resourceId:I

move/from16 v18, v0

if-eqz v18, :cond_f

move-object/from16 v0, v16

iget v0, v0, Landroid/util/TypedValue;->resourceId:I

move/from16 v18, v0

move/from16 v0, v18

iput v0, v3, Lcom/android/settings/dashboard/DashboardCategory;->titleRes:I

:cond_6
:goto_1
invoke-virtual {v14}, Landroid/content/res/TypedArray;->recycle()V

sget-object v18, Lcom/android/internal/R$styleable;->Preference:[I

move-object/from16 v0, p2

move-object/from16 v1, v18

invoke-virtual {v0, v2, v1}, Landroid/content/Context;->obtainStyledAttributes(Landroid/util/AttributeSet;[I)Landroid/content/res/TypedArray;

move-result-object v14

const/16 v18, 0x6

move/from16 v0, v18

invoke-virtual {v14, v0}, Landroid/content/res/TypedArray;->peekValue(I)Landroid/util/TypedValue;

move-result-object v16

if-eqz v16, :cond_7

move-object/from16 v0, v16

iget v0, v0, Landroid/util/TypedValue;->type:I

move/from16 v18, v0

const/16 v19, 0x3

move/from16 v0, v18

move/from16 v1, v19

if-ne v0, v1, :cond_7

move-object/from16 v0, v16

iget v0, v0, Landroid/util/TypedValue;->resourceId:I

move/from16 v18, v0

if-eqz v18, :cond_10

move-object/from16 v0, v16

iget v0, v0, Landroid/util/TypedValue;->resourceId:I

move/from16 v18, v0

move-object/from16 v0, p2

move/from16 v1, v18

invoke-virtual {v0, v1}, Landroid/content/Context;->getString(I)Ljava/lang/String;

move-result-object v18

move-object/from16 v0, v18

iput-object v0, v3, Lcom/android/settings/dashboard/DashboardCategory;->key:Ljava/lang/String;

:cond_7
:goto_2
invoke-virtual {v14}, Landroid/content/res/TypedArray;->recycle()V

invoke-interface {v13}, Landroid/content/res/XmlResourceParser;->getDepth()I

move-result v7

:cond_8
:goto_3
invoke-interface {v13}, Landroid/content/res/XmlResourceParser;->next()I

move-result v17

const/16 v18, 0x1

move/from16 v0, v17

move/from16 v1, v18

if-eq v0, v1, :cond_19

const/16 v18, 0x3

move/from16 v0, v17

move/from16 v1, v18

if-ne v0, v1, :cond_9

invoke-interface {v13}, Landroid/content/res/XmlResourceParser;->getDepth()I

move-result v18

move/from16 v0, v18

if-le v0, v7, :cond_19

:cond_9
const/16 v18, 0x3

move/from16 v0, v17

move/from16 v1, v18

if-eq v0, v1, :cond_8

const/16 v18, 0x4

move/from16 v0, v17

move/from16 v1, v18

if-eq v0, v1, :cond_8

invoke-interface {v13}, Landroid/content/res/XmlResourceParser;->getName()Ljava/lang/String;

move-result-object v9

const-string/jumbo v18, "dashboard-tile"

move-object/from16 v0, v18

invoke-virtual {v9, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z

move-result v18

if-eqz v18, :cond_17

new-instance v15, Lcom/android/settings/dashboard/DashboardTile;

invoke-direct {v15}, Lcom/android/settings/dashboard/DashboardTile;-><init>()V

sget-object v18, Lcom/android/internal/R$styleable;->PreferenceHeader:[I

move-object/from16 v0, p2

move-object/from16 v1, v18

invoke-virtual {v0, v2, v1}, Landroid/content/Context;->obtainStyledAttributes(Landroid/util/AttributeSet;[I)Landroid/content/res/TypedArray;

move-result-object v14

const/16 v18, 0x1

const/16 v19, -0x1

move/from16 v0, v18

move/from16 v1, v19

invoke-virtual {v14, v0, v1}, Landroid/content/res/TypedArray;->getResourceId(II)I

move-result v18

move/from16 v0, v18

int-to-long v0, v0

move-wide/from16 v18, v0

move-wide/from16 v0, v18

iput-wide v0, v15, Lcom/android/settings/dashboard/DashboardTile;->id:J

const/16 v18, 0x2

move/from16 v0, v18

invoke-virtual {v14, v0}, Landroid/content/res/TypedArray;->peekValue(I)Landroid/util/TypedValue;

move-result-object v16

if-eqz v16, :cond_a

move-object/from16 v0, v16

iget v0, v0, Landroid/util/TypedValue;->type:I

move/from16 v18, v0

const/16 v19, 0x3

move/from16 v0, v18

move/from16 v1, v19

if-ne v0, v1, :cond_a

move-object/from16 v0, v16

iget v0, v0, Landroid/util/TypedValue;->resourceId:I

move/from16 v18, v0

if-eqz v18, :cond_11

move-object/from16 v0, v16

iget v0, v0, Landroid/util/TypedValue;->resourceId:I

move/from16 v18, v0

move/from16 v0, v18

iput v0, v15, Lcom/android/settings/dashboard/DashboardTile;->titleRes:I

:cond_a
:goto_4
const/16 v18, 0x3

move/from16 v0, v18

invoke-virtual {v14, v0}, Landroid/content/res/TypedArray;->peekValue(I)Landroid/util/TypedValue;

move-result-object v16

if-eqz v16, :cond_b

move-object/from16 v0, v16

iget v0, v0, Landroid/util/TypedValue;->type:I

move/from16 v18, v0

const/16 v19, 0x3

move/from16 v0, v18

move/from16 v1, v19

if-ne v0, v1, :cond_b

move-object/from16 v0, v16

iget v0, v0, Landroid/util/TypedValue;->resourceId:I

move/from16 v18, v0

if-eqz v18, :cond_12

move-object/from16 v0, v16

iget v0, v0, Landroid/util/TypedValue;->resourceId:I

move/from16 v18, v0

move/from16 v0, v18

iput v0, v15, Lcom/android/settings/dashboard/DashboardTile;->summaryRes:I

:cond_b
:goto_5
const/16 v18, 0x0

const/16 v19, 0x0

move/from16 v0, v18

move/from16 v1, v19

invoke-virtual {v14, v0, v1}, Landroid/content/res/TypedArray;->getResourceId(II)I

move-result v18

move/from16 v0, v18

iput v0, v15, Lcom/android/settings/dashboard/DashboardTile;->iconRes:I

const/16 v18, 0x4

move/from16 v0, v18

invoke-virtual {v14, v0}, Landroid/content/res/TypedArray;->getString(I)Ljava/lang/String;

move-result-object v18

move-object/from16 v0, v18

iput-object v0, v15, Lcom/android/settings/dashboard/DashboardTile;->fragment:Ljava/lang/String;

invoke-virtual {v14}, Landroid/content/res/TypedArray;->recycle()V

sget-object v18, Lcom/android/settings/R$styleable;->DashboardTile:[I

move-object/from16 v0, p2

move-object/from16 v1, v18

invoke-virtual {v0, v2, v1}, Landroid/content/Context;->obtainStyledAttributes(Landroid/util/AttributeSet;[I)Landroid/content/res/TypedArray;

move-result-object v14

const/16 v18, 0x0

move/from16 v0, v18

invoke-virtual {v14, v0}, Landroid/content/res/TypedArray;->getString(I)Ljava/lang/String;

move-result-object v18

move-object/from16 v0, v18

iput-object v0, v15, Lcom/android/settings/dashboard/DashboardTile;->switchControl:Ljava/lang/String;

invoke-virtual {v14}, Landroid/content/res/TypedArray;->recycle()V

if-nez v4, :cond_c

new-instance v4, Landroid/os/Bundle;

invoke-direct {v4}, Landroid/os/Bundle;-><init>()V

:cond_c
invoke-interface {v13}, Landroid/content/res/XmlResourceParser;->getDepth()I

move-result v8

:cond_d
:goto_6
invoke-interface {v13}, Landroid/content/res/XmlResourceParser;->next()I

move-result v17

const/16 v18, 0x1

move/from16 v0, v17

move/from16 v1, v18

if-eq v0, v1, :cond_15

const/16 v18, 0x3

move/from16 v0, v17

move/from16 v1, v18

if-ne v0, v1, :cond_e

invoke-interface {v13}, Landroid/content/res/XmlResourceParser;->getDepth()I

move-result v18

move/from16 v0, v18

if-le v0, v8, :cond_15

:cond_e
const/16 v18, 0x3

move/from16 v0, v17

move/from16 v1, v18

if-eq v0, v1, :cond_d

const/16 v18, 0x4

move/from16 v0, v17

move/from16 v1, v18

if-eq v0, v1, :cond_d

invoke-interface {v13}, Landroid/content/res/XmlResourceParser;->getName()Ljava/lang/String;

move-result-object v10

const-string/jumbo v18, "extra"

move-object/from16 v0, v18

invoke-virtual {v10, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z

move-result v18

if-eqz v18, :cond_13

invoke-virtual/range {p2 .. p2}, Landroid/content/Context;->getResources()Landroid/content/res/Resources;

move-result-object v18

const-string/jumbo v19, "extra"

move-object/from16 v0, v18

move-object/from16 v1, v19

invoke-virtual {v0, v1, v2, v4}, Landroid/content/res/Resources;->parseBundleExtra(Ljava/lang/String;Landroid/util/AttributeSet;Landroid/os/Bundle;)V

invoke-static {v13}, Lcom/android/internal/util/XmlUtils;->skipCurrentTag(Lorg/xmlpull/v1/XmlPullParser;)V
:try_end_2
.catch Lorg/xmlpull/v1/XmlPullParserException; {:try_start_2 .. :try_end_2} :catch_0
.catch Ljava/io/IOException; {:try_start_2 .. :try_end_2} :catch_1
.catchall {:try_start_2 .. :try_end_2} :catchall_0

goto :goto_6

:catch_1
move-exception v5

:try_start_3
new-instance v18, Ljava/lang/RuntimeException;

const-string/jumbo v19, "Error parsing categories"

move-object/from16 v0, v18

move-object/from16 v1, v19

invoke-direct {v0, v1, v5}, Ljava/lang/RuntimeException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V

throw v18
:try_end_3
.catchall {:try_start_3 .. :try_end_3} :catchall_0

:cond_f
:try_start_4
move-object/from16 v0, v16

iget-object v0, v0, Landroid/util/TypedValue;->string:Ljava/lang/CharSequence;

move-object/from16 v18, v0

move-object/from16 v0, v18

iput-object v0, v3, Lcom/android/settings/dashboard/DashboardCategory;->title:Ljava/lang/CharSequence;

goto/16 :goto_1

:cond_10
move-object/from16 v0, v16

iget-object v0, v0, Landroid/util/TypedValue;->string:Ljava/lang/CharSequence;

move-object/from16 v18, v0

invoke-interface/range {v18 .. v18}, Ljava/lang/CharSequence;->toString()Ljava/lang/String;

move-result-object v18

move-object/from16 v0, v18

iput-object v0, v3, Lcom/android/settings/dashboard/DashboardCategory;->key:Ljava/lang/String;

goto/16 :goto_2

:cond_11
move-object/from16 v0, v16

iget-object v0, v0, Landroid/util/TypedValue;->string:Ljava/lang/CharSequence;

move-object/from16 v18, v0

move-object/from16 v0, v18

iput-object v0, v15, Lcom/android/settings/dashboard/DashboardTile;->title:Ljava/lang/CharSequence;

goto/16 :goto_4

:cond_12
move-object/from16 v0, v16

iget-object v0, v0, Landroid/util/TypedValue;->string:Ljava/lang/CharSequence;

move-object/from16 v18, v0

move-object/from16 v0, v18

iput-object v0, v15, Lcom/android/settings/dashboard/DashboardTile;->summary:Ljava/lang/CharSequence;

goto/16 :goto_5

:cond_13
const-string/jumbo v18, "intent"

move-object/from16 v0, v18

invoke-virtual {v10, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z

move-result v18

if-eqz v18, :cond_14

invoke-virtual/range {p2 .. p2}, Landroid/content/Context;->getResources()Landroid/content/res/Resources;

move-result-object v18

move-object/from16 v0, v18

invoke-static {v0, v13, v2}, Landroid/content/Intent;->parseIntent(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;)Landroid/content/Intent;

move-result-object v18

move-object/from16 v0, v18

iput-object v0, v15, Lcom/android/settings/dashboard/DashboardTile;->intent:Landroid/content/Intent;

goto/16 :goto_6

:cond_14
invoke-static {v13}, Lcom/android/internal/util/XmlUtils;->skipCurrentTag(Lorg/xmlpull/v1/XmlPullParser;)V

goto/16 :goto_6

:cond_15
invoke-virtual {v4}, Landroid/os/Bundle;->size()I

move-result v18

if-lez v18, :cond_16

iput-object v4, v15, Lcom/android/settings/dashboard/DashboardTile;->fragmentArguments:Landroid/os/Bundle;

const/4 v4, 0x0

:cond_16
invoke-virtual {v3, v15}, Lcom/android/settings/dashboard/DashboardCategory;->addTile(Lcom/android/settings/dashboard/DashboardTile;)V

goto/16 :goto_3

:cond_17
const-string/jumbo v18, "external-tiles"

move-object/from16 v0, v18

invoke-virtual {v9, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z

move-result v18

if-eqz v18, :cond_18

invoke-virtual {v3}, Lcom/android/settings/dashboard/DashboardCategory;->getTilesCount()I

move-result v18

move/from16 v0, v18

iput v0, v3, Lcom/android/settings/dashboard/DashboardCategory;->externalIndex:I

goto/16 :goto_3

:cond_18
invoke-static {v13}, Lcom/android/internal/util/XmlUtils;->skipCurrentTag(Lorg/xmlpull/v1/XmlPullParser;)V

goto/16 :goto_3

:cond_19
move-object/from16 v0, p1

invoke-interface {v0, v3}, Ljava/util/List;->add(Ljava/lang/Object;)Z

goto/16 :goto_0

:cond_1a
invoke-static {v13}, Lcom/android/internal/util/XmlUtils;->skipCurrentTag(Lorg/xmlpull/v1/XmlPullParser;)V
:try_end_4
.catch Lorg/xmlpull/v1/XmlPullParserException; {:try_start_4 .. :try_end_4} :catch_0
.catch Ljava/io/IOException; {:try_start_4 .. :try_end_4} :catch_1
.catchall {:try_start_4 .. :try_end_4} :catchall_0

goto/16 :goto_0

:cond_1b
if-eqz v13, :cond_1c

invoke-interface {v13}, Landroid/content/res/XmlResourceParser;->close()V

:cond_1c
return-void
.end method

Now compare IDS and replace or Use this Tool to replace by [MENTION=1016795]loserskater[/MENTION]

Compile and replace

Tada done.. ! easy than LP lol

Thanks to RR

Dont Forget to Mention me if you use my work

Good luck