1
1.SystemUI \ smali \ com \ sonymobile \ systemui \ statusbar \ tools \ ToolsMain.smali
AT# instance fields
.field mReceiver: Landroid / content / BroadcastReceiver;
1.1 We are looking for .method public constructor<init>(Landroid / content / Context; Landroid / view / ViewGroup;) V , At the end of the method add (highlighted in red)
.line 106
new-instance v0, Lcom / sonymobile / systemui / statusbar / tools / ToolsMain $ 1;
new-instance v1, Landroid / os / Handler;
invoke-direct {v1}, Landroid / os / Handler; -><init>() V
invoke-direct {v0, p0, v1}, Lcom / sonymobile / systemui / statusbar / tools / ToolsMain $ 1; -><init>(Lcom / sonymobile / systemui / statusbar / tools / ToolsMain; Landroid / os / Handler;) V
iput-object v0, p0, Lcom / sonymobile / systemui / statusbar / tools / ToolsMain; ->mContentObserver: Landroid / database / ContentObserver;
new-instance v0, Lcom / sonymobile / systemui / statusbar / tools / ToolsMain $ Receiver;
invoke-direct {v0, p0}, Lcom / sonymobile / systemui / statusbar / tools / ToolsMain $ Receiver; -><init>(Lcom / sonymobile / systemui / statusbar / tools / ToolsMain;) V
iput-object v0, p0, Lcom / sonymobile / systemui / statusbar / tools / ToolsMain; ->mReceiver: Landroid / content / BroadcastReceiver;
new-instance v0, Landroid / content / IntentFilter;
invoke-direct {v0}, Landroid / content / IntentFilter; -><init>() V
const-string v1, "ffx.intent.action.REFRESH_PANEL"
invoke-virtual {v0, v1}, Landroid / content / IntentFilter; ->addAction (Ljava / lang / String;) V
iget-object v1, p0, Lcom / sonymobile / systemui / statusbar / tools / ToolsMain; ->mReceiver: Landroid / content / BroadcastReceiver;
invoke-virtual {p1, v1, v0}, Landroid / content / Context; ->registerReceiver (Landroid / content / BroadcastReceiver; Landroid / content / IntentFilter;) Landroid / content / Intent;
.line 136
return-void
.end method
2
2.Nizhe see a combination of techniquesstatic synthetic access $ XXX And after adding all new:
.method static synthetic access $ 777 (Lcom / sonymobile / systemui / statusbar / tools / ToolsMain;) V
.locals 0
.param p0, "x0" # Lcom / sonymobile / systemui / statusbar / tools / ToolsMain;
.prologue
invoke-direct {p0}, Lcom / sonymobile / systemui / statusbar / tools / ToolsMain; ->setMaxItemsInARow () V
invoke-direct {p0}, Lcom / sonymobile / systemui / statusbar / tools / ToolsMain; ->resetContentObserver () V
return-void
.end method
2.1 We search method.method private refreshRowLayout () V Swipe down and focusing on my code, looking around at a red kod.Vydelennoe add.
.line 1061
invoke-virtual {v0}, Landroid / view / View; ->getParent () Landroid / view / ViewParent;
move-result-object v1
check-cast v1, Landroid / view / ViewGroup;
.line 1063
if-eqz v1,: cond_2
invoke-virtual {v1, v0}, Landroid / view / ViewGroup; ->removeView (Landroid / view / View;) V
.line 1064
: cond_2
invoke-virtual {v8, v0, v6}, Landroid / view / ViewGroup; ->addView (Landroid / view / View; Landroid / view / ViewGroup $ LayoutParams;) V
.line 1059
add-int / lit8 v0, v2, 0x1
add-int / lit8 v1, v4, 0x1
move v2, v0
move v4, v1
goto: goto_1
.line 1067
: cond_3
new-instance v0, Landroid / widget / LinearLayout $ LayoutParams;
iget-object v1, p0, Lcom / sonymobile / systemui / statusbar / tools / ToolsMain; ->mRes: Landroid / content / res / Resources;
const v2, 0x7f0d0057
invoke-virtual {v1, v2}, Landroid / content / res / Resources; ->getDimensionPixelSize (I) I
move-result v1
invoke-virtual {p0}, Lcom / sonymobile / systemui / statusbar / tools / ToolsMain; ->FFgetTextVisibility () I
move-result v2
if-eqz v2,: cond_aa
const / 16 v1, 0x4e
: cond_aa
invoke-direct {v0, v9, v1}, Landroid / widget / LinearLayout $ LayoutParams; -><init>(Ii) v
.line 1070
iget-object v1, p0, Lcom / sonymobile / systemui / statusbar / tools / ToolsMain; ->mRowParent: Landroid / view / ViewGroup;
invoke-virtual {v1, v8, v0}, Landroid / view / ViewGroup; ->addView (Landroid / view / View; Landroid / view / ViewGroup $ LayoutParams;) V
3
3.Ischem.method private setMaxItemsInARow () V .Dobavlyaem highlighted in red.
.prologue
invoke-virtual {p0}, Lcom / sonymobile / systemui / statusbar / tools / ToolsMain; ->FFgetMaxToolItemsInARow () I
move-result v0
if-nez v0,: cond_0
.line 1029
iget-object v0, p0, Lcom / sonymobile / systemui / statusbar / tools / ToolsMain; ->mRes: Landroid / content / res / Resources;
const v1, 0x7f0c0016
invoke-virtual {v0, v1}, Landroid / content / res / Resources; ->getInteger (I) I
move-result v0
: cond_0
iput v0, p0, Lcom / sonymobile / systemui / statusbar / tools / ToolsMain; ->mMaxItemsInARow: I
3.1 At the very end add new methods.
.method public FFgetMaxToolItemsInARow () I
.locals 3
.prologue
const / 4 v2,0x5
iget-object v0, p0, Lcom / sonymobile / systemui / statusbar / tools / ToolsMain; ->mContext: Landroid / content / Context;
invoke-virtual {v0}, Landroid / content / Context; ->getContentResolver () Landroid / content / ContentResolver;
move-result-object v0
const-string v1, "FFNPTmaxtoolsinrowkey"
invoke-static {v0, v1, v2}, Landroid / provider / Settings $ System; ->getInt (Landroid / content / ContentResolver; Ljava / lang / String; I) I
move-result v0
iget-boolean v1, p0, Lcom / sonymobile / systemui / statusbar / tools / ToolsMain; ->mIsLandscape: Z
if-eqz v1,: cond_0
mul-int / lit8 v0, v0, 0x2
: cond_0
return v0
.end method
.method public FFgetTextVisibility () I
.locals 3
.prologue
const / 4 v2, 0x0
iget-object v0, p0, Lcom / sonymobile / systemui / statusbar / tools / ToolsMain; ->mContext: Landroid / content / Context;
invoke-virtual {v0}, Landroid / content / Context; ->getContentResolver () Landroid / content / ContentResolver;
move-result-object v0
const-string v1, "FFNPTtooltextvisibilitykey"
invoke-static {v0, v1, v2}, Landroid / provider / Settings $ System; ->getInt (Landroid / content / ContentResolver; Ljava / lang / String; I) I
move-result v0
return v0
.end method
With ToolsMain finished.