简书链接:smali语法笔记以及QQ750普通红包点击分析
文章字数:3286,阅读全文大约需要13分钟

1
if-eqz v4, :cond_a #如果!=null

表示如果v4为true就跳转到cond_a 否则继续执行

1
if-nez v4, :cond_a #如果!=null

表示如果v4不为true就跳转到cond_a 否则继续执行

1
if-ltz v4, :cond_a 

如果小于boolean小于0 就跳转到cond_a

1
if-gez v4, :cond_a 

如果大于等于0 就跳转到cond_a

更多

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
“if-eq vA, vB, :cond_**” 如果vA等于vB则跳转到:cond_**

“if-ne vA, vB, :cond_**” 如果vA不等于vB则跳转到:cond_**

“if-lt vA, vB, :cond_**” 如果vA小于vB则跳转到:cond_**

“if-ge vA, vB, :cond_**” 如果vA大于等于vB则跳转到:cond_**

“if-gt vA, vB, :cond_**” 如果vA大于vB则跳转到:cond_**

“if-le vA, vB, :cond_**” 如果vA小于等于vB则跳转到:cond_**

“if-eqz vA, :cond_**” 如果vA等于0则跳转到:cond_**

“if-nez vA, :cond_**” 如果vA不等于0则跳转到:cond_**

“if-ltz vA, :cond_**” 如果vA小于0则跳转到:cond_**

“if-gez vA, :cond_**” 如果vA大于等于0则跳转到:cond_**

“if-gtz vA, :cond_**” 如果vA大于0则跳转到:cond_**

“if-lez vA, :cond_**” 如果vA小于等于0则跳转到:cond_**
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
field  定义变量

.method  方法

.parameter  方法参数

.prologue  方法开始

.line 12  此方法位于第12行

invoke-super  调用父函数

const/high16 v0, 0x7fo3  把0x7fo3赋值给v0

invoke-direct  调用函数

return-void  函数返回void

.end method  函数结束

new-instance  创建实例

iput-object  对象赋值

iget-object  调用对象

invoke-static  调用静态函数

实战qq红包点击事件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
.class public Luhx;
.super Ljava/lang/Object;
.source "ProGuard"

# interfaces
.implements Landroid/view/View$OnClickListener;


# instance fields
.field final synthetic a:Lcom/tencent/mobileqq/activity/aio/item/QQWalletMsgItemBuilder;


# direct methods
.method public constructor <init>(Lcom/tencent/mobileqq/activity/aio/item/QQWalletMsgItemBuilder;)V
.registers 2

.prologue
#.line 435
iput-object p1, p0, Luhx;->a:Lcom/tencent/mobileqq/activity/aio/item/QQWalletMsgItemBuilder;

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

return-void
.end method


# virtual methods
.method public onClick(Landroid/view/View;)V
.registers 21

.prologue
#.line 441
move-object/from16 v0, p0

iget-object v2, v0, Luhx;->a:Lcom/tencent/mobileqq/activity/aio/item/QQWalletMsgItemBuilder;

invoke-static {v2}, Lcom/tencent/mobileqq/activity/aio/item/QQWalletMsgItemBuilder;->a(Lcom/tencent/mobileqq/activity/aio/item/QQWalletMsgItemBuilder;)Z

move-result v2

if-eqz v2, :cond_b #为true就跳转到cond_a (!QQWalletMsgItemBuilder.a(this.a)) {

#.line 609
:cond_a
:goto_a
return-void

#.line 447
:cond_b
invoke-static {}, Ljava/lang/System;->currentTimeMillis()J

move-result-wide v2

#.line 448
move-object/from16 v0, p0

iget-object v4, v0, Luhx;->a:Lcom/tencent/mobileqq/activity/aio/item/QQWalletMsgItemBuilder;

iget-wide v4, v4, Lcom/tencent/mobileqq/activity/aio/item/QQWalletMsgItemBuilder;->c:J

invoke-static {v4, v5, v2, v3}, Lcom/tencent/mobileqq/activity/qwallet/utils/QWalletRedPkgUtils;->a(JJ)Z

move-result v4

if-eqz v4, :cond_a #如果!=null // if (QWalletRedPkgUtils.a(this.a.c, currentTimeMillis)) { 否则跳出去了cond_a

#.line 452
move-object/from16 v0, p0

iget-object v4, v0, Luhx;->a:Lcom/tencent/mobileqq/activity/aio/item/QQWalletMsgItemBuilder;

iput-wide v2, v4, Lcom/tencent/mobileqq/activity/aio/item/QQWalletMsgItemBuilder;->c:J

#.line 454
invoke-static/range {p1 .. p1}, Lcom/tencent/mobileqq/activity/aio/AIOUtils;->a(Landroid/view/View;)Ljava/lang/Object;

move-result-object v2

check-cast v2, Lcom/tencent/mobileqq/activity/aio/item/QQWalletMsgItemBuilder$QWalletMsgHolder;

#.line 455
iget-object v2, v2, Lcom/tencent/mobileqq/activity/aio/item/QQWalletMsgItemBuilder$QWalletMsgHolder;->a:Lcom/tencent/mobileqq/data/ChatMessage;

move-object v14, v2

check-cast v14, Lcom/tencent/mobileqq/data/MessageForQQWalletMsg;

#.line 457
const/4 v2, 0x0

#.line 458
const/16 v16, 0x0

#.line 459
move-object/from16 v0, p0

iget-object v3, v0, Luhx;->a:Lcom/tencent/mobileqq/activity/aio/item/QQWalletMsgItemBuilder;

iget-object v3, v3, Lcom/tencent/mobileqq/activity/aio/item/QQWalletMsgItemBuilder;->a:Lcom/tencent/mobileqq/activity/aio/SessionInfo;

iget-object v15, v3, Lcom/tencent/mobileqq/activity/aio/SessionInfo;->a:Ljava/lang/String;

#.line 460
if-eqz v14, :cond_a # if (messageForQQWalletMsg != null) { 否则又跳出去了

#.line 463
invoke-static {v14}, Lcom/tencent/mobileqq/activity/qwallet/utils/QWalletRedPkgUtils;->a(Lcom/tencent/mobileqq/data/MessageForQQWalletMsg;)Z

move-result v3

#.line 464
if-nez v3, :cond_116

iget-object v4, v14, Lcom/tencent/mobileqq/data/MessageForQQWalletMsg;->mQQWalletTransferMsg:Lcom/tencent/mobileqq/data/QQWalletTransferMsg;

if-eqz v4, :cond_116 # if (!a && messageForQQWalletMsg.mQQWalletTransferMsg != null) { 就会走类型是不是等于9

#.line 465
iget-object v2, v14, Lcom/tencent/mobileqq/data/MessageForQQWalletMsg;->mQQWalletTransferMsg:Lcom/tencent/mobileqq/data/QQWalletTransferMsg;

iget-object v0, v2, Lcom/tencent/mobileqq/data/QQWalletTransferMsg;->elem:Lcom/tencent/mobileqq/data/QQWalletTransferMsgElem;

move-object/from16 v17, v0

#.line 467
iget v2, v14, Lcom/tencent/mobileqq/data/MessageForQQWalletMsg;->messageType:I

const/16 v3, 0x9

if-ne v2, v3, :cond_de

#.line 468
iget-object v2, v14, Lcom/tencent/mobileqq/data/MessageForQQWalletMsg;->mQQWalletTransferMsg:Lcom/tencent/mobileqq/data/QQWalletTransferMsg;

iget-object v2, v2, Lcom/tencent/mobileqq/data/QQWalletTransferMsg;->body:Lcom/tencent/mobileqq/data/QQWalletAioBodys;

#.line 470
if-eqz v2, :cond_b7

iget v2, v2, Lcom/tencent/mobileqq/data/QQWalletAioBodys;->pfa_type:I

move/from16 v18, v2

#.line 471
:goto_59
const/4 v2, 0x1

move/from16 v0, v18

if-ne v0, v2, :cond_bb

#.line 472
move-object/from16 v0, p0

iget-object v2, v0, Luhx;->a:Lcom/tencent/mobileqq/activity/aio/item/QQWalletMsgItemBuilder;

iget-object v2, v2, Lcom/tencent/mobileqq/activity/aio/item/QQWalletMsgItemBuilder;->a:Lcom/tencent/mobileqq/app/QQAppInterface;

const-string v3, "P_CliOper"

const-string v4, "Vip_pay_mywallet"

const-string v5, ""

const-string v6, "wallet"

const-string v7, "autofriendpay.aio.qiukaitong.click"

const/4 v8, 0x0

const/4 v9, 0x0

const-string v10, ""

const-string v11, ""

const-string v12, ""

const-string v13, ""

invoke-static/range {v2 .. v13}, Lcom/tencent/mobileqq/statistics/ReportController;->b(Lcom/tencent/mobileqq/app/QQAppInterface;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;IILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V

#.line 476
:cond_7b
:goto_7b
invoke-static {}, Lcom/tencent/qphone/base/util/QLog;->isColorLevel()Z

move-result v2

if-eqz v2, :cond_9c

#.line 477
const-string v2, "QQWalletMsgItemBuilder"

const/4 v3, 0x2

new-instance v4, Ljava/lang/StringBuilder;

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

const-string v5, "onClick pfa_type="

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

move-result-object v4

move/from16 v0, v18

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

move-result-object v4

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

move-result-object v4

invoke-static {v2, v3, v4}, Lcom/tencent/qphone/base/util/QLog;->d(Ljava/lang/String;ILjava/lang/String;)V

:cond_9c
move-object v6, v15

move-object/from16 v5, v16

move-object/from16 v10, v17

#.line 566
:goto_a1
const/4 v3, 0x0#=================== 从领取红包那边过来的

#.line 567
if-eqz v10, :cond_a

#.line 570
iget-object v2, v10, Lcom/tencent/mobileqq/data/QQWalletTransferMsgElem;->actionsPriority:Ljava/lang/String;

invoke-static {v2}, Landroid/text/TextUtils;->isEmpty(Ljava/lang/CharSequence;)Z

move-result v2

if-eqz v2, :cond_262 #判断 actionsPriority是否不为空

#.line 571
invoke-virtual/range {p1 .. p1}, Landroid/view/View;->getContext()Landroid/content/Context; #为空的话 QWalletRedPkgUtils.b(view.getContext(), qQWalletTransferMsgElem.linkUrl);并返回

move-result-object v2

iget-object v3, v10, Lcom/tencent/mobileqq/data/QQWalletTransferMsgElem;->linkUrl:Ljava/lang/String;

invoke-static {v2, v3}, Lcom/tencent/mobileqq/activity/qwallet/utils/QWalletRedPkgUtils;->b(Landroid/content/Context;Ljava/lang/String;)Z

goto/16 :goto_a

#.line 470
:cond_b7
const/4 v2, 0x0

move/from16 v18, v2

goto :goto_59

#.line 473
:cond_bb
const/4 v2, 0x2

move/from16 v0, v18

if-ne v0, v2, :cond_7b

#.line 474
move-object/from16 v0, p0

iget-object v2, v0, Luhx;->a:Lcom/tencent/mobileqq/activity/aio/item/QQWalletMsgItemBuilder;

iget-object v2, v2, Lcom/tencent/mobileqq/activity/aio/item/QQWalletMsgItemBuilder;->a:Lcom/tencent/mobileqq/app/QQAppInterface;

const-string v3, "P_CliOper"

const-string v4, "Vip_pay_mywallet"

const-string v5, ""

const-string v6, "wallet"

const-string v7, "autofriendpay.aio.yikaitong.click"

const/4 v8, 0x0

const/4 v9, 0x0

const-string v10, ""

const-string v11, ""

const-string v12, ""

const-string v13, ""

invoke-static/range {v2 .. v13}, Lcom/tencent/mobileqq/statistics/ReportController;->b(Lcom/tencent/mobileqq/app/QQAppInterface;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;IILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V

goto :goto_7b

#.line 481
:cond_de
move-object/from16 v0, p0

iget-object v2, v0, Luhx;->a:Lcom/tencent/mobileqq/activity/aio/item/QQWalletMsgItemBuilder;

iget-object v2, v2, Lcom/tencent/mobileqq/activity/aio/item/QQWalletMsgItemBuilder;->a:Lcom/tencent/mobileqq/app/QQAppInterface;

const-string v3, "P_CliOper"

const-string v4, "Vip_pay_mywallet"

const-string v5, ""

const-string v6, "transferaccountmsg"

const-string v7, "show"

const/4 v8, 0x0

const/4 v9, 0x0

new-instance v10, Ljava/lang/StringBuilder;

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

const-string v11, ""

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

move-result-object v10

iget-object v11, v14, Lcom/tencent/mobileqq/data/MessageForQQWalletMsg;->mQQWalletTransferMsg:Lcom/tencent/mobileqq/data/QQWalletTransferMsg;

iget v11, v11, Lcom/tencent/mobileqq/data/QQWalletTransferMsg;->templateId:I

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

move-result-object v10

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

move-result-object v10

const-string v11, ""

const-string v12, ""

const-string v13, ""

invoke-static/range {v2 .. v13}, Lcom/tencent/mobileqq/statistics/ReportController;->b(Lcom/tencent/mobileqq/app/QQAppInterface;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;IILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V

move-object v6, v15

move-object/from16 v5, v16

move-object/from16 v10, v17

goto :goto_a1

#.line 484
:cond_116
if-eqz v3, :cond_17e

iget-object v4, v14, Lcom/tencent/mobileqq/data/MessageForQQWalletMsg;->mQQWalletTransferMsg:Lcom/tencent/mobileqq/data/QQWalletTransferMsg;#if (!a && messageForQQWalletMsg.mQQWalletTransferMsg != null) {第二条判断不是否为空 否则走第二个或者第三个else

if-eqz v4, :cond_17e #不等于空就继续?? 又到了 Object obj = (this.a.a.a == 0 || this.a.a.a == 1000 || this.a.a.a == 1004 |

#.line 485
iget-object v2, v14, Lcom/tencent/mobileqq/data/MessageForQQWalletMsg;->mQQWalletTransferMsg:Lcom/tencent/mobileqq/data/QQWalletTransferMsg;

iget-object v2, v2, Lcom/tencent/mobileqq/data/QQWalletTransferMsg;->elem:Lcom/tencent/mobileqq/data/QQWalletTransferMsgElem;

#.line 490
new-instance v3, Lcom/tencent/mobileqq/data/QQWalletRedPacketMsg;

invoke-direct {v3}, Lcom/tencent/mobileqq/data/QQWalletRedPacketMsg;-><init>()V

iput-object v3, v14, Lcom/tencent/mobileqq/data/MessageForQQWalletMsg;->mQQWalletRedPacketMsg:Lcom/tencent/mobileqq/data/QQWalletRedPacketMsg;

#.line 491
iget-object v3, v14, Lcom/tencent/mobileqq/data/MessageForQQWalletMsg;->mQQWalletRedPacketMsg:Lcom/tencent/mobileqq/data/QQWalletRedPacketMsg;

iget-object v4, v14, Lcom/tencent/mobileqq/data/MessageForQQWalletMsg;->mQQWalletTransferMsg:Lcom/tencent/mobileqq/data/QQWalletTransferMsg;

iget-object v4, v4, Lcom/tencent/mobileqq/data/QQWalletTransferMsg;->elem:Lcom/tencent/mobileqq/data/QQWalletTransferMsgElem;

iput-object v4, v3, Lcom/tencent/mobileqq/data/QQWalletRedPacketMsg;->elem:Lcom/tencent/mobileqq/data/QQWalletTransferMsgElem;

#.line 492
const/16 v3, -0x7e9

iput v3, v14, Lcom/tencent/mobileqq/data/MessageForQQWalletMsg;->msgtype:I

#.line 493
iget-object v3, v14, Lcom/tencent/mobileqq/data/MessageForQQWalletMsg;->mQQWalletRedPacketMsg:Lcom/tencent/mobileqq/data/QQWalletRedPacketMsg;

const-string v4, ""

iput-object v4, v3, Lcom/tencent/mobileqq/data/QQWalletRedPacketMsg;->authkey:Ljava/lang/String;

#.line 494
iget-object v3, v14, Lcom/tencent/mobileqq/data/MessageForQQWalletMsg;->mQQWalletRedPacketMsg:Lcom/tencent/mobileqq/data/QQWalletRedPacketMsg;

const-string v4, ""

iput-object v4, v3, Lcom/tencent/mobileqq/data/QQWalletRedPacketMsg;->redPacketId:Ljava/lang/String;

#.line 495
iget-object v3, v14, Lcom/tencent/mobileqq/data/MessageForQQWalletMsg;->mQQWalletRedPacketMsg:Lcom/tencent/mobileqq/data/QQWalletRedPacketMsg;

const/4 v4, 0x0

iput v4, v3, Lcom/tencent/mobileqq/data/QQWalletRedPacketMsg;->redtype:I

#.line 496
iget-object v3, v14, Lcom/tencent/mobileqq/data/MessageForQQWalletMsg;->mQQWalletRedPacketMsg:Lcom/tencent/mobileqq/data/QQWalletRedPacketMsg;

const/4 v4, 0x0

iput v4, v3, Lcom/tencent/mobileqq/data/QQWalletRedPacketMsg;->templateId:I

#.line 497
iget-object v3, v14, Lcom/tencent/mobileqq/data/MessageForQQWalletMsg;->mQQWalletRedPacketMsg:Lcom/tencent/mobileqq/data/QQWalletRedPacketMsg;

const/4 v4, 0x1

iput-boolean v4, v3, Lcom/tencent/mobileqq/data/QQWalletRedPacketMsg;->isOpened:Z

#.line 498
const/4 v3, 0x0

iput-object v3, v14, Lcom/tencent/mobileqq/data/MessageForQQWalletMsg;->mQQWalletTransferMsg:Lcom/tencent/mobileqq/data/QQWalletTransferMsg;

#.line 499
invoke-virtual {v14}, Lcom/tencent/mobileqq/data/MessageForQQWalletMsg;->getBytes()[B

move-result-object v3

iput-object v3, v14, Lcom/tencent/mobileqq/data/MessageForQQWalletMsg;->msgData:[B

#.line 500
move-object/from16 v0, p0

iget-object v3, v0, Luhx;->a:Lcom/tencent/mobileqq/activity/aio/item/QQWalletMsgItemBuilder;

iget-object v3, v3, Lcom/tencent/mobileqq/activity/aio/item/QQWalletMsgItemBuilder;->a:Lcom/tencent/mobileqq/app/QQAppInterface;

invoke-virtual {v3}, Lcom/tencent/mobileqq/app/QQAppInterface;->a()Lcom/tencent/mobileqq/app/message/QQMessageFacade;

move-result-object v3

move-object/from16 v0, p0

iget-object v4, v0, Luhx;->a:Lcom/tencent/mobileqq/activity/aio/item/QQWalletMsgItemBuilder;

iget-object v4, v4, Lcom/tencent/mobileqq/activity/aio/item/QQWalletMsgItemBuilder;->a:Lcom/tencent/mobileqq/activity/aio/SessionInfo;

iget-object v4, v4, Lcom/tencent/mobileqq/activity/aio/SessionInfo;->a:Ljava/lang/String;

move-object/from16 v0, p0

iget-object v5, v0, Luhx;->a:Lcom/tencent/mobileqq/activity/aio/item/QQWalletMsgItemBuilder;

iget-object v5, v5, Lcom/tencent/mobileqq/activity/aio/item/QQWalletMsgItemBuilder;->a:Lcom/tencent/mobileqq/activity/aio/SessionInfo;

iget v5, v5, Lcom/tencent/mobileqq/activity/aio/SessionInfo;->a:I

iget-wide v6, v14, Lcom/tencent/mobileqq/data/MessageForQQWalletMsg;->uniseq:J

iget-object v8, v14, Lcom/tencent/mobileqq/data/MessageForQQWalletMsg;->msgData:[B

invoke-virtual/range {v3 .. v8}, Lcom/tencent/mobileqq/app/message/QQMessageFacade;->a(Ljava/lang/String;IJ[B)V

move-object v6, v15

move-object/from16 v5, v16

move-object v10, v2

goto/16 :goto_a1

#.line 502
:cond_17e
if-eqz v3, :cond_2f8 #y真正领取红包逻辑1

iget-object v3, v14, Lcom/tencent/mobileqq/data/MessageForQQWalletMsg;->mQQWalletRedPacketMsg:Lcom/tencent/mobileqq/data/QQWalletRedPacketMsg;

if-eqz v3, :cond_2f8 #可能是判断是否不为空 那么这里肯定不为空

#.line 504
move-object/from16 v0, p0

iget-object v2, v0, Luhx;->a:Lcom/tencent/mobileqq/activity/aio/item/QQWalletMsgItemBuilder;

iget-object v2, v2, Lcom/tencent/mobileqq/activity/aio/item/QQWalletMsgItemBuilder;->a:Lcom/tencent/mobileqq/activity/aio/SessionInfo;

iget v2, v2, Lcom/tencent/mobileqq/activity/aio/SessionInfo;->a:I
#===========
if-eqz v2, :cond_1d6

move-object/from16 v0, p0

iget-object v2, v0, Luhx;->a:Lcom/tencent/mobileqq/activity/aio/item/QQWalletMsgItemBuilder;

iget-object v2, v2, Lcom/tencent/mobileqq/activity/aio/item/QQWalletMsgItemBuilder;->a:Lcom/tencent/mobileqq/activity/aio/SessionInfo;

iget v2, v2, Lcom/tencent/mobileqq/activity/aio/SessionInfo;->a:I

const/16 v3, 0x3e8 #1000

if-eq v2, v3, :cond_1d6

move-object/from16 v0, p0

iget-object v2, v0, Luhx;->a:Lcom/tencent/mobileqq/activity/aio/item/QQWalletMsgItemBuilder;

iget-object v2, v2, Lcom/tencent/mobileqq/activity/aio/item/QQWalletMsgItemBuilder;->a:Lcom/tencent/mobileqq/activity/aio/SessionInfo;#正常领取逻辑某

iget v2, v2, Lcom/tencent/mobileqq/activity/aio/SessionInfo;->a:I

const/16 v3, 0x3ec

if-eq v2, v3, :cond_1d6

move-object/from16 v0, p0#pass

iget-object v2, v0, Luhx;->a:Lcom/tencent/mobileqq/activity/aio/item/QQWalletMsgItemBuilder;

iget-object v2, v2, Lcom/tencent/mobileqq/activity/aio/item/QQWalletMsgItemBuilder;->a:Lcom/tencent/mobileqq/activity/aio/SessionInfo;

iget v2, v2, Lcom/tencent/mobileqq/activity/aio/SessionInfo;->a:I

const/16 v3, 0x3e9

if-eq v2, v3, :cond_1d6

move-object/from16 v0, p0#===========

iget-object v2, v0, Luhx;->a:Lcom/tencent/mobileqq/activity/aio/item/QQWalletMsgItemBuilder;

iget-object v2, v2, Lcom/tencent/mobileqq/activity/aio/item/QQWalletMsgItemBuilder;->a:Lcom/tencent/mobileqq/activity/aio/SessionInfo;

iget v2, v2, Lcom/tencent/mobileqq/activity/aio/SessionInfo;->a:I

const/16 v3, 0x2712

if-eq v2, v3, :cond_1d6

move-object/from16 v0, p0

iget-object v2, v0, Luhx;->a:Lcom/tencent/mobileqq/activity/aio/item/QQWalletMsgItemBuilder;#======exit

iget-object v2, v2, Lcom/tencent/mobileqq/activity/aio/item/QQWalletMsgItemBuilder;->a:Lcom/tencent/mobileqq/activity/aio/SessionInfo;

iget v2, v2, Lcom/tencent/mobileqq/activity/aio/SessionInfo;->a:I

const/16 v3, 0x2714 #1004

if-eq v2, v3, :cond_1d6 #如果不等于1004就跳转cond_1d6这里等于 继续往下走

move-object/from16 v0, p0

iget-object v2, v0, Luhx;->a:Lcom/tencent/mobileqq/activity/aio/item/QQWalletMsgItemBuilder;#pase

iget-object v2, v2, Lcom/tencent/mobileqq/activity/aio/item/QQWalletMsgItemBuilder;->a:Lcom/tencent/mobileqq/activity/aio/SessionInfo;

iget v2, v2, Lcom/tencent/mobileqq/activity/aio/SessionInfo;->a:I

const/16 v3, 0x3f0 #1008

if-ne v2, v3, :cond_25f #如果v2的值不等于1008就跳转到cond_25f显然城里

:cond_1d6
const/4 v2, 0x1

#.line 512
:goto_1d7
if-eqz v2, :cond_1ea #判断是否是一件发送 刚刚默认为0?

#.line 513
invoke-virtual {v14}, Lcom/tencent/mobileqq/data/MessageForQQWalletMsg;->isSend()Z

move-result v2

if-nez v2, :cond_1ea

#.line 514
move-object/from16 v0, p0

iget-object v2, v0, Luhx;->a:Lcom/tencent/mobileqq/activity/aio/item/QQWalletMsgItemBuilder;

iget-object v2, v2, Lcom/tencent/mobileqq/activity/aio/item/QQWalletMsgItemBuilder;->a:Lcom/tencent/mobileqq/app/QQAppInterface;

invoke-virtual {v2}, Lcom/tencent/mobileqq/app/QQAppInterface;->getCurrentAccountUin()Ljava/lang/String;

move-result-object v2

move-object v15, v2

#.line 518
:cond_1ea #又到了authkey来了
iget-object v2, v14, Lcom/tencent/mobileqq/data/MessageForQQWalletMsg;->mQQWalletRedPacketMsg:Lcom/tencent/mobileqq/data/QQWalletRedPacketMsg;

iget-object v0, v2, Lcom/tencent/mobileqq/data/QQWalletRedPacketMsg;->elem:Lcom/tencent/mobileqq/data/QQWalletTransferMsgElem;

move-object/from16 v17, v0
#开始autokey
#.line 519
iget-object v2, v14, Lcom/tencent/mobileqq/data/MessageForQQWalletMsg;->mQQWalletRedPacketMsg:Lcom/tencent/mobileqq/data/QQWalletRedPacketMsg;

iget-object v0, v2, Lcom/tencent/mobileqq/data/QQWalletRedPacketMsg;->authkey:Ljava/lang/String;

move-object/from16 v16, v0

#.line 520
const/16 v2, -0x7e9#-2025

iput v2, v14, Lcom/tencent/mobileqq/data/MessageForQQWalletMsg;->msgtype:I#赋值msgtype=

#.line 521
iget-object v2, v14, Lcom/tencent/mobileqq/data/MessageForQQWalletMsg;->mQQWalletRedPacketMsg:Lcom/tencent/mobileqq/data/QQWalletRedPacketMsg;

const/4 v3, 0x1 #给isOpened设置为true

iput-boolean v3, v2, Lcom/tencent/mobileqq/data/QQWalletRedPacketMsg;->isOpened:Z

#.line 522
invoke-virtual {v14}, Lcom/tencent/mobileqq/data/MessageForQQWalletMsg;->getBytes()[B

move-result-object v2

iput-object v2, v14, Lcom/tencent/mobileqq/data/MessageForQQWalletMsg;->msgData:[B

#.line 524
move-object/from16 v0, p0

iget-object v2, v0, Luhx;->a:Lcom/tencent/mobileqq/activity/aio/item/QQWalletMsgItemBuilder;

iget-object v2, v2, Lcom/tencent/mobileqq/activity/aio/item/QQWalletMsgItemBuilder;->a:Lcom/tencent/mobileqq/app/QQAppInterface;

invoke-virtual {v2}, Lcom/tencent/mobileqq/app/QQAppInterface;->a()Lcom/tencent/mobileqq/app/message/QQMessageFacade;

move-result-object v3

move-object/from16 v0, p0

iget-object v2, v0, Luhx;->a:Lcom/tencent/mobileqq/activity/aio/item/QQWalletMsgItemBuilder;

iget-object v2, v2, Lcom/tencent/mobileqq/activity/aio/item/QQWalletMsgItemBuilder;->a:Lcom/tencent/mobileqq/activity/aio/SessionInfo;

iget-object v4, v2, Lcom/tencent/mobileqq/activity/aio/SessionInfo;->a:Ljava/lang/String;

move-object/from16 v0, p0

iget-object v2, v0, Luhx;->a:Lcom/tencent/mobileqq/activity/aio/item/QQWalletMsgItemBuilder;

iget-object v2, v2, Lcom/tencent/mobileqq/activity/aio/item/QQWalletMsgItemBuilder;->a:Lcom/tencent/mobileqq/activity/aio/SessionInfo;

iget v5, v2, Lcom/tencent/mobileqq/activity/aio/SessionInfo;->a:I

iget-wide v6, v14, Lcom/tencent/mobileqq/data/MessageForQQWalletMsg;->uniseq:J

iget-object v8, v14, Lcom/tencent/mobileqq/data/MessageForQQWalletMsg;->msgData:[B

invoke-virtual/range {v3 .. v8}, Lcom/tencent/mobileqq/app/message/QQMessageFacade;->a(Ljava/lang/String;IJ[B)V
#=============没打开都执行了
#.line 561
move-object/from16 v0, p0

iget-object v2, v0, Luhx;->a:Lcom/tencent/mobileqq/activity/aio/item/QQWalletMsgItemBuilder;

iget-object v2, v2, Lcom/tencent/mobileqq/activity/aio/item/QQWalletMsgItemBuilder;->a:Lcom/tencent/mobileqq/app/QQAppInterface;

const-string v3, "P_CliOper"#======================这里的代码是领取未打卡的红包会执行的逻辑

const-string v4, "Vip_pay_mywallet"

const-string v5, ""

const-string v6, "transferaccountmsg"

const-string v7, "show"

const/4 v8, 0x0

const/4 v9, 0x0

new-instance v10, Ljava/lang/StringBuilder;

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

const-string v11, ""

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

move-result-object v10

iget-object v11, v14, Lcom/tencent/mobileqq/data/MessageForQQWalletMsg;->mQQWalletRedPacketMsg:Lcom/tencent/mobileqq/data/QQWalletRedPacketMsg;

iget v11, v11, Lcom/tencent/mobileqq/data/QQWalletRedPacketMsg;->templateId:I

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

move-result-object v10

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

move-result-object v10

const-string v11, ""

const-string v12, ""

const-string v13, ""

invoke-static/range {v2 .. v13}, Lcom/tencent/mobileqq/statistics/ReportController;->b(Lcom/tencent/mobileqq/app/QQAppInterface;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;IILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V

move-object v6, v15

move-object/from16 v5, v16

move-object/from16 v10, v17

goto/16 :goto_a1#跳转到另外一个段代码块了

#.line 504
:cond_25f #直接跳转到这里来了
const/4 v2, 0x0

goto/16 :goto_1d7

#.line 575
:cond_262 #刚刚不为空那么进入了分割字符串逻辑 可惜as调试不能知道具体局部变量代码是多少。
iget-object v2, v10, Lcom/tencent/mobileqq/data/QQWalletTransferMsgElem;->actionsPriority:Ljava/lang/String;

const-string v4, "\\|"

invoke-virtual {v2, v4}, Ljava/lang/String;->split(Ljava/lang/String;)[Ljava/lang/String;

move-result-object v11

#.line 576
const/4 v2, 0x0

move v9, v2

move v2, v3

:goto_26d
array-length v3, v11

if-ge v9, v3, :cond_a#如果v9大于v3就跳转到cond_a也就是退出了

#.line 577
aget-object v3, v11, v9 #显然没有大于 进入while循环

invoke-static {v3}, Landroid/text/TextUtils;->isEmpty(Ljava/lang/CharSequence;)Z

move-result v3

if-eqz v3, :cond_27e #如果不为空就跳转到cond_27e

move v3, v2

#.line 576
:goto_279
add-int/lit8 v2, v9, 0x1

move v9, v2

move v2, v3

goto :goto_26d

#.line 581
:cond_27e
:try_start_27e
aget-object v3, v11, v9

invoke-static {v3}, Ljava/lang/Integer;->valueOf(Ljava/lang/String;)Ljava/lang/Integer;# i3 = Integer.valueOf(split[i2]).intValue();

move-result-object v3

invoke-virtual {v3}, Ljava/lang/Integer;->intValue()I
:try_end_287
.catch Ljava/lang/Exception; {:try_start_27e .. :try_end_287} :catch_299

move-result v2

#.line 591
:cond_288
:goto_288
const/4 v3, 0x1

if-ne v2, v3, :cond_2cb# if (i3 == 1) #如果不等于1就跳转到cond_2cb

#.line 592
invoke-virtual/range {p1 .. p1}, Landroid/view/View;->getContext()Landroid/content/Context;

move-result-object v2

iget-object v3, v10, Lcom/tencent/mobileqq/data/QQWalletTransferMsgElem;->linkUrl:Ljava/lang/String;

invoke-static {v2, v3}, Lcom/tencent/mobileqq/activity/qwallet/utils/QWalletRedPkgUtils;->b(Landroid/content/Context;Ljava/lang/String;)Z

move-result v2

if-nez v2, :cond_a

#.line 605
:cond_297
const/4 v3, -0x1

goto :goto_279

#.line 582
:catch_299
move-exception v3

#.line 583
invoke-static {}, Lcom/tencent/qphone/base/util/QLog;->isDevelopLevel()Z

move-result v4

if-eqz v4, :cond_2a3

#.line 584
invoke-virtual {v3}, Ljava/lang/Exception;->printStackTrace()V

#.line 586
:cond_2a3
invoke-static {}, Lcom/tencent/qphone/base/util/QLog;->isColorLevel()Z

move-result v4

if-eqz v4, :cond_288

#.line 587
const-string v4, "QQWalletMsgItemBuilder"

const/4 v7, 0x2

new-instance v8, Ljava/lang/StringBuilder;

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

const-string v12, "QQWalletMsgItemBuilder failed to convert String:"

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

move-result-object v8

aget-object v12, v11, v9

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

move-result-object v8

const-string v12, " to Interger,"

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

move-result-object v8

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

move-result-object v8

invoke-static {v4, v7, v8, v3}, Lcom/tencent/qphone/base/util/QLog;->d(Ljava/lang/String;ILjava/lang/String;Ljava/lang/Throwable;)V

goto :goto_288

#.line 595
:cond_2cb
const/4 v3, 0x2#刚才不等于1那么判断是否不等于 ==2 不等于的话继续跳转

if-ne v2, v3, :cond_2dc

#.line 596
invoke-virtual/range {p1 .. p1}, Landroid/view/View;->getContext()Landroid/content/Context;

move-result-object v2

iget-object v3, v10, Lcom/tencent/mobileqq/data/QQWalletTransferMsgElem;->jumpUrl:Ljava/lang/String;

invoke-static {v2, v3}, Lcom/tencent/mobileqq/activity/qwallet/utils/QWalletRedPkgUtils;->a(Landroid/content/Context;Ljava/lang/String;)Z

move-result v2

if-eqz v2, :cond_297

goto/16 :goto_a

#.line 599
:cond_2dc
const/4 v3, 0x3 #由于还是不等于又跳到我这里来了

if-ne v2, v3, :cond_297 #还是不等于3就继续跳转

#.line 600
move-object/from16 v0, p0#等于3 执行了 if (QQWalletMsgItemBuilder.a(this.a, view.getContext(), qQWalletTransferMsgElem.nativeAndroi

iget-object v2, v0, Luhx;->a:Lcom/tencent/mobileqq/activity/aio/item/QQWalletMsgItemBuilder;

invoke-virtual/range {p1 .. p1}, Landroid/view/View;->getContext()Landroid/content/Context;

move-result-object v3

iget-object v4, v10, Lcom/tencent/mobileqq/data/QQWalletTransferMsgElem;->nativeAndroid:Ljava/lang/String;

move-object/from16 v0, p0

iget-object v7, v0, Luhx;->a:Lcom/tencent/mobileqq/activity/aio/item/QQWalletMsgItemBuilder;

iget-object v8, v7, Lcom/tencent/mobileqq/activity/aio/item/QQWalletMsgItemBuilder;->a:Lcom/tencent/mobileqq/activity/aio/SessionInfo;

move-object v7, v14

invoke-static/range {v2 .. v8}, Lcom/tencent/mobileqq/activity/aio/item/QQWalletMsgItemBuilder;->a(Lcom/tencent/mobileqq/activity/aio/item/QQWalletMsgItemBuilder;Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/tencent/mobileqq/data/MessageForQQWalletMsg;Lcom/tencent/mobileqq/activity/aio/SessionInfo;)Z

move-result v2

if-eqz v2, :cond_297 #如果是true就返回了。

goto/16 :goto_a #果然为true

:cond_2f8
move-object v6, v15

move-object/from16 v5, v16

move-object v10, v2

goto/16 :goto_a1
.end method

对应的源代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127

/* compiled from: ProGuard */
public class uhx implements OnClickListener {
final /* synthetic */ QQWalletMsgItemBuilder a;

public uhx(QQWalletMsgItemBuilder qQWalletMsgItemBuilder) {
this.a = qQWalletMsgItemBuilder;
}

public void onClick(View view) {
if (!QQWalletMsgItemBuilder.a(this.a)) {
long currentTimeMillis = System.currentTimeMillis();
if (QWalletRedPkgUtils.a(this.a.c, currentTimeMillis)) {
this.a.c = currentTimeMillis;
MessageForQQWalletMsg messageForQQWalletMsg = (MessageForQQWalletMsg) ((QWalletMsgHolder) AIOUtils.a(view)).a;
String str = this.a.a.a;
if (messageForQQWalletMsg != null) {
String str2;
String str3;
QQWalletTransferMsgElem qQWalletTransferMsgElem;
boolean a = QWalletRedPkgUtils.a(messageForQQWalletMsg);//如果已经领取了
QQWalletTransferMsgElem qQWalletTransferMsgElem2;
if (!a && messageForQQWalletMsg.mQQWalletTransferMsg != null) {
qQWalletTransferMsgElem2 = messageForQQWalletMsg.mQQWalletTransferMsg.elem;
if (messageForQQWalletMsg.messageType == 9) {
QQWalletAioBodys qQWalletAioBodys = messageForQQWalletMsg.mQQWalletTransferMsg.body;
int i = qQWalletAioBodys != null ? qQWalletAioBodys.pfa_type : 0;
if (i == 1) {
ReportController.b(this.a.a, "P_CliOper", "Vip_pay_mywallet", "", "wallet", "autofriendpay.aio.qiukaitong.click", 0, 0, "", "", "", "");
} else if (i == 2) {
ReportController.b(this.a.a, "P_CliOper", "Vip_pay_mywallet", "", "wallet", "autofriendpay.aio.yikaitong.click", 0, 0, "", "", "", "");
}
if (QLog.isColorLevel()) {
QLog.d("QQWalletMsgItemBuilder", 2, "onClick pfa_type=" + i);
}
str2 = str;
str3 = null;
qQWalletTransferMsgElem = qQWalletTransferMsgElem2;
} else {
ReportController.b(this.a.a, "P_CliOper", "Vip_pay_mywallet", "", "transferaccountmsg", "show", 0, 0, "" + messageForQQWalletMsg.mQQWalletTransferMsg.templateId, "", "", "");
str2 = str;
str3 = null;
qQWalletTransferMsgElem = qQWalletTransferMsgElem2;
}
} else if (a && messageForQQWalletMsg.mQQWalletTransferMsg != null) {
QQWalletTransferMsgElem qQWalletTransferMsgElem3 = messageForQQWalletMsg.mQQWalletTransferMsg.elem;
messageForQQWalletMsg.mQQWalletRedPacketMsg = new QQWalletRedPacketMsg();
messageForQQWalletMsg.mQQWalletRedPacketMsg.elem = messageForQQWalletMsg.mQQWalletTransferMsg.elem;
messageForQQWalletMsg.msgtype = -2025;
messageForQQWalletMsg.mQQWalletRedPacketMsg.authkey = "";
messageForQQWalletMsg.mQQWalletRedPacketMsg.redPacketId = "";
messageForQQWalletMsg.mQQWalletRedPacketMsg.redtype = 0;
messageForQQWalletMsg.mQQWalletRedPacketMsg.templateId = 0;
messageForQQWalletMsg.mQQWalletRedPacketMsg.isOpened = true;
messageForQQWalletMsg.mQQWalletTransferMsg = null;
messageForQQWalletMsg.msgData = messageForQQWalletMsg.getBytes();
this.a.a.a().a(this.a.a.a, this.a.a.a, messageForQQWalletMsg.uniseq, messageForQQWalletMsg.msgData);
str2 = str;
str3 = null;
qQWalletTransferMsgElem = qQWalletTransferMsgElem3;
} else if (!a || messageForQQWalletMsg.mQQWalletRedPacketMsg == null) {
str2 = str;
str3 = null;
qQWalletTransferMsgElem = null;
} else { //可疑执行代码 又是执行这里看来是知道有没有领取的啊
Object obj = (this.a.a.a == 0 || this.a.a.a == 1000 || this.a.a.a == 1004 || this.a.a.a == 1001 || this.a.a.a == 10002 || this.a.a.a == 10004 || this.a.a.a == 1008) ? 1 : null;
if (!(obj == null || messageForQQWalletMsg.isSend())) {
str = this.a.a.getCurrentAccountUin();
}//这里是真实领取红包调用的代码
qQWalletTransferMsgElem2 = messageForQQWalletMsg.mQQWalletRedPacketMsg.elem;
String str4 = messageForQQWalletMsg.mQQWalletRedPacketMsg.authkey;
messageForQQWalletMsg.msgtype = -2025;
messageForQQWalletMsg.mQQWalletRedPacketMsg.isOpened = true;
messageForQQWalletMsg.msgData = messageForQQWalletMsg.getBytes();
this.a.a.a().a(this.a.a.a, this.a.a.a, messageForQQWalletMsg.uniseq, messageForQQWalletMsg.msgData);
ReportController.b(this.a.a, "P_CliOper", "Vip_pay_mywallet", "", "transferaccountmsg", "show", 0, 0, "" + messageForQQWalletMsg.mQQWalletRedPacketMsg.templateId, "", "", "");
str2 = str;
str3 = str4;
qQWalletTransferMsgElem = qQWalletTransferMsgElem2;
}
if (qQWalletTransferMsgElem == null) {
return;
}
if (TextUtils.isEmpty(qQWalletTransferMsgElem.actionsPriority)) {
QWalletRedPkgUtils.b(view.getContext(), qQWalletTransferMsgElem.linkUrl);
return;
}
String[] split = qQWalletTransferMsgElem.actionsPriority.split("\\|");
int i2 = 0;
int i3 = 0;
while (i2 < split.length) {
int i4;
if (TextUtils.isEmpty(split[i2])) {
i4 = i3;
} else {
try {
i3 = Integer.valueOf(split[i2]).intValue();
} catch (Throwable e) {
if (QLog.isDevelopLevel()) {
e.printStackTrace();
}
if (QLog.isColorLevel()) {
QLog.d("QQWalletMsgItemBuilder", 2, "QQWalletMsgItemBuilder failed to convert String:" + split[i2] + " to Interger,", e);
}
}
if (i3 == 1) {
if (QWalletRedPkgUtils.b(view.getContext(), qQWalletTransferMsgElem.linkUrl)) {
return;
}
} else if (i3 == 2) {
if (QWalletRedPkgUtils.a(view.getContext(), qQWalletTransferMsgElem.jumpUrl)) {
return;
}
} else if (i3 == 3) {//执行了这个代码 if -ne v2 v3
if (QQWalletMsgItemBuilder.a(this.a, view.getContext(), qQWalletTransferMsgElem.nativeAndroid, str3, str2, messageForQQWalletMsg, this.a.a)) {
return;
}
}
i4 = -1;
}
i2++;
i3 = i4;
}
}
}
}
}

最后不得不吐槽,smali跳转的晕头转向的。没有一个api如果记不住还真的有点晕!
最后调用了这里

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
private boolean a(Context context, String str, String str2, String str3, MessageForQQWalletMsg messageForQQWalletMsg, SessionInfo sessionInfo) {
if (context == null || TextUtils.isEmpty(str)) {
return false;
}
String[] split = str.split("\\?");
String str4 = split[0];
if (TextUtils.isEmpty(str4)) {
return false;
}
HashMap parseUrlParams;
Intent intent;
if (split.length > 1) {
parseUrlParams = messageForQQWalletMsg.parseUrlParams(split[1]);
} else {
parseUrlParams = new HashMap();
}
String str5;
String str6;
if (str4.equals("pay")) {
str5 = (String) parseUrlParams.get("payData");
str6 = (String) parseUrlParams.get("reqCode");
if (TextUtils.isEmpty(str6) || TextUtils.isEmpty(str5)) {
return false;
}
Bundle bundle = new Bundle();
bundle.putString("json", str5);
bundle.putString("callbackSn", "0");
intent = new Intent(context, PayBridgeActivity.class);
intent.putExtras(bundle);
intent.putExtra("pay_requestcode", Integer.valueOf(str6).intValue());
} else if (str4.equals("red")) {
String str7 = (String) parseUrlParams.get("id");
if (TextUtils.isEmpty(str7)) {
return false;
}
String str8 = messageForQQWalletMsg.mQQWalletRedPacketMsg.elem.cftImage;
Bundle a = QWalletRedPkgUtils.a(this.a, sessionInfo, messageForQQWalletMsg);
int i = a.getInt("groupType");
String string = a.getString("name");
r2 = QWalletRedPkgUtils.a(this.a, messageForQQWalletMsg, sessionInfo, i, string, str7, str2, str3, "appid#1344242394|bargainor_id#1000030201|channel#msg", "graphb", str8);
if (this.f6783a != null && messageForQQWalletMsg.mQQWalletRedPacketMsg.envelopeid > 0) {
try {
JSONObject jSONObject = r2.getJSONObject("extra_data");
r4 = this.f6783a.a(String.valueOf(messageForQQWalletMsg.mQQWalletRedPacketMsg.envelopeid), messageForQQWalletMsg.mQQWalletRedPacketMsg.envelopeName);
if (QLog.isColorLevel()) {
QLog.d("vipBgImage", 2, r4);
}
jSONObject.put("vipBgImage", r4);
} catch (Exception e) {
}
}
Bundle bundle2 = new Bundle();
bundle2.putString("json", r2.toString());
bundle2.putString("callbackSn", "0");
if (str8 != null) {
bundle2.putString("cftImageUrl", str8);
}
if (str7 != null && str7.length() > 4) {
str7 = "****" + str7.substring(4);
}
bundle2.putLong("vacreport_key_seq", VACDReportUtil.a(null, "qqwallet", "graphb", "open", "groupType=" + i + "&msgType=" + messageForQQWalletMsg.messageType + "&redId=" + str7, 0, null));
intent = new Intent(context, PayBridgeActivity.class);
intent.putExtras(bundle2);
intent.putExtra("pay_requestcode", 5);
} else if (str4.equals("pfa")) {
r4 = "appid#1344242394|bargainor_id#1000030201|channel#paymsg";
String str9 = "payByFriendConfirm";
str5 = (String) parseUrlParams.get("data");
str6 = (String) parseUrlParams.get("tokenid");
if (TextUtils.isEmpty(str6) || TextUtils.isEmpty(str5)) {
return false;
}
JSONObject jSONObject2 = new JSONObject();
try {
jSONObject2.put("userId", this.a.getCurrentAccountUin());
jSONObject2.put("viewTag", str9);
jSONObject2.put("appInfo", r4);
jSONObject2.put("comeForm", 2);
r2 = new JSONObject();
r2.put("pfa_req", str);
r2.put("token_id", str6);
jSONObject2.put("extra_data", r2);
} catch (Exception e2) {
if (QLog.isDevelopLevel()) {
e2.printStackTrace();
}
}
Bundle bundle3 = new Bundle();
bundle3.putString("json", jSONObject2.toString());
bundle3.putString("callbackSn", "0");
intent = new Intent(context, PayBridgeActivity.class);
intent.putExtras(bundle3);
intent.putExtra("pay_requestcode", 5);
} else {
Class loadClass;
try {
ClassLoader classLoader = QQWalletMsgItemBuilder.class.getClassLoader();
if (classLoader == null) {
return false;
}
loadClass = classLoader.loadClass(str4);
if (loadClass == null) {
return false;
}
Intent intent2 = new Intent(context, loadClass);
for (Entry entry : parseUrlParams.entrySet()) {
intent2.putExtra((String) entry.getKey(), (String) entry.getValue());
}
intent = intent2;
} catch (Throwable e3) {
if (QLog.isDevelopLevel()) {
e3.printStackTrace();
}
if (QLog.isColorLevel()) {
QLog.d("QQWalletMsgItemBuilder", 2, "QQWalletMsgItemBuilder failed to find Class : " + str4, e3);
}
loadClass = null;
}
}
try {
context.startActivity(intent);
return true;
} catch (Throwable e32) {
if (QLog.isDevelopLevel()) {
e32.printStackTrace();
}
if (QLog.isColorLevel()) {
QLog.d("QQWalletMsgItemBuilder", 2, "QQWalletMsgItemBuilder failed to startActivity : " + str4, e32);
}
return false;
}
}