[Android Software/Hacking General [Developers Only]] ThunderStick:
Ok I gotta problem...

first thanks for this tutorial, everything is pretty straight forward util I get to the StatusBarService.smali

i got all the framwork.jar edits to be successfull.

Most of the systemui.apk edits also ok

The code in the makeNotificationView is a lot different, I cant seem to determine where to insert the modified code and make it work. I tried a few different things, it compiles fine but just force closes. Please help.

Here is what I got.

unedited

.method makeNotificationView(Lcom/android/internal/statusbar/StatusBarNotification;Landroid/view/ViewGroup;)[Landroid/view/View;
.locals 9
.parameter
.parameter

.prologue
.line 657
iget-object v1, p1, Lcom/android/internal/statusbar/StatusBarNotification;->notification:Landroid/app/Notification;

.line 658
iget-object v6, v1, Landroid/app/Notification;->contentView:Landroid/widget/RemoteViews;

.line 659
if-nez v6, :cond_0

.line 660
const/4 v0, 0x0

.line 701
:goto_0
return-object v0

.line 664
:cond_0
const-string v0, "layout_inflater"

invoke-virtual {p0, v0}, Lcom/android/systemui/statusbar/StatusBarService;->getSystemService(Ljava/lang/String;)Ljava/lang/Object;

move-result-object v0

check-cast v0, Landroid/view/LayoutInflater;

.line 665
const v2, 0x7f030005

const/4 v3, 0x0

invoke-virtual {v0, v2, p2, v3}, Landroid/view/LayoutInflater;->inflate(ILandroid/view/ViewGroup;Z)Landroid/view/View;

move-result-object v7

.line 666
const-string v0, "com.android.systemui"

iget-object v2, p1, Lcom/android/internal/statusbar/StatusBarNotification;->pkg:Ljava/lang/String;

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

move-result v0

if-eqz v0, :cond_2

iget v0, p1, Lcom/android/internal/statusbar/StatusBarNotification;->id:I

const/4 v2, 0x2

if-eq v0, v2, :cond_1

iget v0, p1, Lcom/android/internal/statusbar/StatusBarNotification;->id:I

const/4 v2, 0x3

if-ne v0, v2, :cond_2

.line 669
:cond_1
const/16 v0, 0x8

invoke-virtual {v7, v0}, Landroid/view/View;->setVisibility(I)V

.line 673
:cond_2
const v0, 0x7f0b001d

invoke-virtual {v7, v0}, Landroid/view/View;->findViewById(I)Landroid/view/View;

move-result-object p2

check-cast p2, Landroid/view/ViewGroup;

.line 674
const/high16 v0, 0x6

invoke-virtual {p2, v0}, Landroid/view/ViewGroup;->setDescendantFocusability(I)V

.line 675
iget-object v0, p0, Lcom/android/systemui/statusbar/StatusBarService;->mFocusChangeListener:Landroid/view/View$OnFocusChangeListener;

invoke-virtual {p2, v0}, Landroid/view/ViewGroup;->setOnFocusChangeListener(Landroid/view/View$OnFocusChangeListener;)V

.line 676
iget-object v2, v1, Landroid/app/Notification;->contentIntent:Landroid/app/PendingIntent;

.line 677
if-eqz v2, :cond_3

.line 678
new-instance v0, Lcom/android/systemui/statusbar/StatusBarService$Launcher;

iget-object v3, p1, Lcom/android/internal/statusbar/StatusBarNotification;->pkg:Ljava/lang/String;

iget-object v4, p1, Lcom/android/internal/statusbar/StatusBarNotification;->tag:Ljava/lang/String;

iget v5, p1, Lcom/android/internal/statusbar/StatusBarNotification;->id:I

move-object v1, p0

invoke-direct/range {v0 .. v5}, Lcom/android/systemui/statusbar/StatusBarService$Launcher;-><init>(Lcom/android/systemui/statusbar/StatusBarService;Landroid/app/PendingIntent;Ljava/lang/String;Ljava/lang/String;I)V

invoke-virtual {p2, v0}, Landroid/view/ViewGroup;->setOnClickListener(Landroid/view/View$OnClickListener;)V

.line 682
:cond_3
const/4 v0, 0x0

.line 683
const/4 v1, 0x0

.line 685
:try_start_0
invoke-virtual {v6, p0, p2}, Landroid/widget/RemoteViews;->apply(Landroid/content/Context;Landroid/view/ViewGroup;)Landroid/view/View;
:try_end_0
.catch Ljava/lang/RuntimeException; {:try_start_0 .. :try_end_0} :catch_0

move-result-object v0

.line 687
const/4 v2, 0x0

:try_start_1
invoke-virtual {v0, v2}, Landroid/view/View;->setBackgroundDrawable(Landroid/graphics/drawable/Drawable;)V
:try_end_1
.catch Ljava/lang/RuntimeException; {:try_start_1 .. :try_end_1} :catch_1

move-object v8, v1

move-object v1, v0

move-object v0, v8

.line 692
:goto_1
if-nez v1, :cond_4

.line 693
new-instance v1, Ljava/lang/StringBuilder;

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

iget-object v2, p1, Lcom/android/internal/statusbar/StatusBarNotification;->pkg:Ljava/lang/String;

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

move-result-object v1

const-string v2, "/0x"

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

move-result-object v1

iget v2, p1, Lcom/android/internal/statusbar/StatusBarNotification;->id:I

invoke-static {v2}, Ljava/lang/Integer;->toHexString(I)Ljava/lang/String;

move-result-object v2

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

move-result-object v1

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

move-result-object v1

.line 694
const-string v2, "StatusBarService"

new-instance v3, Ljava/lang/StringBuilder;

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

const-string v4, "couldn\'t inflate view for notification "

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

move-result-object v3

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

move-result-object v1

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

move-result-object v1

invoke-static {v2, v1, v0}, Landroid/util/Slog;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I

.line 695
const/4 v0, 0x0

goto/16 :goto_0

.line 697
:cond_4
invoke-virtual {p2, v1}, Landroid/view/ViewGroup;->addView(Landroid/view/View;)V

.line 698
const/4 v0, 0x1

invoke-virtual {v7, v0}, Landroid/view/View;->setDrawingCacheEnabled(Z)V

.line 701
const/4 v0, 0x3

new-array v0, v0, [Landroid/view/View;

const/4 v2, 0x0

aput-object v7, v0, v2

const/4 v2, 0x1

aput-object p2, v0, v2

const/4 v2, 0x2

aput-object v1, v0, v2

goto/16 :goto_0

.line 689
:catch_0
move-exception v1

move-object v8, v1

move-object v1, v0

move-object v0, v8

goto :goto_1

:catch_1
move-exception v1

move-object v8, v1

move-object v1, v0

move-object v0, v8

goto :goto_1
.end method