Nel SystemUi ho qualche problema...ho provato a gestirlo dal CarrierLabel.smali cosi:
Creato la classe CarrierLabel$SettingsObserver.smali fatta cosi:
codice:
.class Lcom/android/systemui/statusbar/phone/CarrierLabel/CarrierLabel$SettingsObserver;
.super Landroid/database/ContentObserver;
.source "CarrierLabel.java"
# annotations
.annotation system Ldalvik/annotation/EnclosingClass;
value = Lcom/android/systemui/statusbar/phone/CarrierLabel;
.end annotation
.annotation system Ldalvik/annotation/InnerClass;
accessFlags = 0x0
name = "SettingsObserver"
.end annotation
# instance fields
.field final synthetic this$0:Lcom/android/systemui/statusbar/phone/CarrierLabel;
# direct methods
.method constructor <init>(Lcom/android/systemui/statusbar/phone/CarrierLabel;Landroid/os/Handler;)V
.locals 0
iput-object p1, p0, Lcom/android/systemui/statusbar/phone/CarrierLabel$SettingsObserver;->this$0:Lcom/android/systemui/statusbar/phone/CarrierLabel;
invoke-direct {p0, p2}, Landroid/database/ContentObserver;-><init>(Landroid/os/Handler;)V
return-void
.end method
# virtual methods
.method observe()V
.locals 3
iget-object v1, p0, Lcom/android/systemui/statusbar/phone/CarrierLabel$SettingsObserver;->this$0:Lcom/android/systemui/statusbar/phone/CarrierLabel;
#getter for: Lcom/android/systemui/statusbar/phone/CarrierLabel;->mContext:Landroid/content/Context;
invoke-static {v1}, Lcom/android/systemui/statusbar/phone/CarrierLabel;->access$500(Lcom/android/systemui/statusbar/phone/CarrierLabel;)Landroid/content/Context;
move-result-object v1
invoke-virtual {v1}, Landroid/content/Context;->getContentResolver()Landroid/content/ContentResolver;
move-result-object v0
const-string v1, "carrier_label_color"
invoke-static {v1}, Landroid/provider/Settings$System;->getUriFor(Ljava/lang/String;)Landroid/net/Uri;
move-result-object v1
const/4 v2, 0x0
invoke-virtual {v0, v1, v2, p0}, Landroid/content/ContentResolver;->registerContentObserver(Landroid/net/Uri;ZLandroid/database/ContentObserver;)V
return-void
.end method
.method public onChange(Z)V
.locals 1
iget-object v0, p0, Lcom/android/systemui/statusbar/phone/CarrierLabel$SettingsObserver;->this$0:Lcom/android/systemui/statusbar/phone/CarrierLabel;
#calls: Lcom/android/systemui/statusbar/phone/CarrierLabel;->updateCarrierColor()V
invoke-static {v0}, Lcom/android/systemui/statusbar/phone/CarrierLabel;->access$600(Lcom/android/systemui/statusbar/phone/CarrierLabel;)V
return-void
.end method
CarrierLabel.smali
codice:
.field private final mIntentReceiver:Landroid/content/BroadcastReceiver;
.field private mCarrierColor:I
.field private mLastCB:Ljava/lang/String;
Aggiunto due nuovi metodi statici:
codice:
.method static synthetic access$500(Lcom/android/systemui/statusbar/phone/CarrierLabel;)Landroid/content/Context;
.locals 1
iget-object v0, p0, Lcom/android/systemui/statusbar/phone/CarrierLabel;->mContext:Landroid/content/Context;
return-object v0
.end method
.method static synthetic access$600(Lcom/android/systemui/statusbar/phone/CarrierLabel;)V
.locals 1
invoke-direct {p0}, Lcom/android/systemui/statusbar/phone/CarrierLabel;->updateCarrierColor()V
return-void
.end method
Creato un nuovo metodo in questo modo:
codice:
.method private updateCarrierColor()V
.locals 6
const/4 v3, 0x0
const/4 v2, 0x1
iget-object v4, p0, Lcom/android/systemui/statusbar/phone/CarrierLabel;->mContext:Landroid/content/Context;
invoke-virtual {v4}, Landroid/content/Context;->getContentResolver()Landroid/content/ContentResolver;
move-result-object v1
const/4 v0, 0x0
const-string v4, "carrier_label_color"
iget v5, p0, Lcom/android/systemui/statusbar/phone/CarrierLabel;->mCarrierColor:I
invoke-static {v1, v4, v5}, Landroid/provider/Settings$System;->getInt(Landroid/content/ContentResolver;Ljava/lang/String;I)I
move-result v0
if-gez v0, :cond_0
iget v4, p0, Lcom/android/systemui/statusbar/phone/CarrierLabel;->mCarrierColor:I
if-eq v0, v4, :cond_0
iput v0, p0, Lcom/android/systemui/statusbar/phone/CarrierLabel;->mCarrierColor:I
iget v4, p0, Lcom/android/systemui/statusbar/phone/CarrierLabel;->mCarrierColor:I
invoke-virtual {p0, v4}, Lcom/android/systemui/statusbar/phone/CarrierLabel;->setTextColor(I)V
:cond_0
return-void
.end method
Nel metodo .method protected onAttachedToWindow()V ho aggiunto questo:
codice:
.line 83
const/4 v1, 0x1
iput-boolean v1, p0, Lcom/android/systemui/statusbar/phone/CarrierLabel;->mAttached:Z
invoke-virtual {p0}, Lcom/android/systemui/statusbar/phone/CarrierLabel;->getTextColors()Landroid/content/res/ColorStateList;
move-result-object v1
invoke-virtual {v1}, Landroid/content/res/ColorStateList;->getDefaultColor()I
move-result v1
iput v1, p0, Lcom/android/systemui/statusbar/phone/CarrierLabel;->mCarrierColor:I
.line 84
new-instance v0, Landroid/content/IntentFilter;
invoke-direct {v0}, Landroid/content/IntentFilter;-><init>()V
Ed alla fine del metodo
codice:
:cond_0
invoke-direct {p0}, Lcom/android/systemui/statusbar/phone/CarrierLabel;->updateCarrierColor()V
return-void
.end method
Ma non cambia nulla!!! L'ho fatta troppo complicata??
Nel PhoneStatusBar.smali ho trovato ids del carrier_label, ho provato a fare alcune modifiche ma mi crashava per failed newIstance.....
codice:
.line 797
iget-object v9, p0, Lcom/android/systemui/statusbar/phone/PhoneStatusBar;->mStatusBarView:Lcom/android/systemui/statusbar/phone/PhoneStatusBarView;
const v10, 0x7f0d00d7 <---- ids carrier_label
invoke-virtual {v9, v10}, Lcom/android/systemui/statusbar/phone/PhoneStatusBarView;->findViewById(I)Landroid/view/View;
move-result-object v9
check-cast v9, Landroid/widget/TextView;
Edit: che dici ho fatto un macello!???