Merge branch 'master' of https://github.com/mateor/auto-patcher
[auto-patcher.git] / patches / openpdroid / 4.2 / provisionals / system / framework / telephony-common.jar.out / smali / com / android / internal / telephony / SMSDispatcher.smali
blob8ac55270f6ebf3ebe618fb2bbb5e4edfe73aeca8
1 .class public abstract Lcom/android/internal/telephony/SMSDispatcher;
2 .super Landroid/os/Handler;
3 .source "SMSDispatcher.java"
6 # annotations
7 .annotation system Ldalvik/annotation/MemberClasses;
8     value = {
9         Lcom/android/internal/telephony/SMSDispatcher$ConfirmDialogListener;,
10         Lcom/android/internal/telephony/SMSDispatcher$SmsTracker;,
11         Lcom/android/internal/telephony/SMSDispatcher$SettingsObserver;
12     }
13 .end annotation
16 # static fields
17 .field private static final DESTINATION_PORT_COLUMN:I = 0x2
19 .field private static final EVENT_CONFIRM_SEND_TO_POSSIBLE_PREMIUM_SHORT_CODE:I = 0x8
21 .field private static final EVENT_CONFIRM_SEND_TO_PREMIUM_SHORT_CODE:I = 0x9
23 .field protected static final EVENT_NEW_SMS:I = 0x1
25 .field static final EVENT_SEND_CONFIRMED_SMS:I = 0x5
27 .field private static final EVENT_SEND_LIMIT_REACHED_CONFIRMATION:I = 0x4
29 .field private static final EVENT_SEND_RETRY:I = 0x3
31 .field protected static final EVENT_SEND_SMS_COMPLETE:I = 0x2
33 .field static final EVENT_STOP_SENDING:I = 0x7
35 .field private static final MAX_SEND_RETRIES:I = 0x3
37 .field private static final MO_MSG_QUEUE_LIMIT:I = 0x5
39 .field private static final PDU_COLUMN:I = 0x0
41 .field private static final PDU_PROJECTION:[Ljava/lang/String; = null
43 .field private static final PDU_SEQUENCE_PORT_PROJECTION:[Ljava/lang/String; = null
45 .field private static final PREMIUM_RULE_USE_BOTH:I = 0x3
47 .field private static final PREMIUM_RULE_USE_NETWORK:I = 0x2
49 .field private static final PREMIUM_RULE_USE_SIM:I = 0x1
51 .field public static final RECEIVE_EMERGENCY_BROADCAST_PERMISSION:Ljava/lang/String; = "android.permission.RECEIVE_EMERGENCY_BROADCAST"
53 .field public static final RECEIVE_SMS_PERMISSION:Ljava/lang/String; = "android.permission.RECEIVE_SMS"
55 .field private static final SEND_NEXT_MSG_EXTRA:Ljava/lang/String; = "SendNextMsg"
57 .field private static final SEND_RETRY_DELAY:I = 0x7d0
59 .field private static final SEND_SMS_NO_CONFIRMATION_PERMISSION:Ljava/lang/String; = "android.permission.SEND_SMS_NO_CONFIRMATION"
61 .field private static final SEQUENCE_COLUMN:I = 0x1
63 .field private static final SINGLE_PART_SMS:I = 0x1
65 .field static final TAG:Ljava/lang/String; = "SMS"
67 .field private static final WAKE_LOCK_TIMEOUT:I = 0x1388
69 .field protected static final mRawUri:Landroid/net/Uri;
71 .field private static sConcatenatedRef:I
74 # instance fields
75 .field protected final deliveryPendingList:Ljava/util/ArrayList;
76     .annotation system Ldalvik/annotation/Signature;
77         value = {
78             "Ljava/util/ArrayList",
79             "<",
80             "Lcom/android/internal/telephony/SMSDispatcher$SmsTracker;",
81             ">;"
82         }
83     .end annotation
84 .end field
86 .field protected final mCm:Lcom/android/internal/telephony/CommandsInterface;
88 .field protected final mContext:Landroid/content/Context;
90 .field private mPendingTrackerCount:I
92 .field protected final mPhone:Lcom/android/internal/telephony/Phone;
94 .field private final mPremiumSmsRule:Ljava/util/concurrent/atomic/AtomicInteger;
96 .field protected mRemainingMessages:I
98 .field protected final mResolver:Landroid/content/ContentResolver;
100 .field private final mResultReceiver:Landroid/content/BroadcastReceiver;
102 .field private final mSettingsObserver:Lcom/android/internal/telephony/SMSDispatcher$SettingsObserver;
104 .field protected mSmsCapable:Z
106 .field protected mSmsReceiveDisabled:Z
108 .field protected mSmsSendDisabled:Z
110 .field protected final mStorageMonitor:Lcom/android/internal/telephony/SmsStorageMonitor;
112 .field protected final mTelephonyManager:Landroid/telephony/TelephonyManager;
114 .field private final mUsageMonitor:Lcom/android/internal/telephony/SmsUsageMonitor;
116 .field private mWakeLock:Landroid/os/PowerManager$WakeLock;
118 .field protected final mWapPush:Lcom/android/internal/telephony/WapPushOverSms;
121 # direct methods
122 .method static constructor <clinit>()V
123     .registers 4
125     const/4 v3, 0x1
127     const/4 v2, 0x0
129     new-array v0, v3, [Ljava/lang/String;
131     const-string v1, "pdu"
133     aput-object v1, v0, v2
135     sput-object v0, Lcom/android/internal/telephony/SMSDispatcher;->PDU_PROJECTION:[Ljava/lang/String;
137     const/4 v0, 0x3
139     new-array v0, v0, [Ljava/lang/String;
141     const-string v1, "pdu"
143     aput-object v1, v0, v2
145     const-string v1, "sequence"
147     aput-object v1, v0, v3
149     const/4 v1, 0x2
151     const-string v2, "destination_port"
153     aput-object v2, v0, v1
155     sput-object v0, Lcom/android/internal/telephony/SMSDispatcher;->PDU_SEQUENCE_PORT_PROJECTION:[Ljava/lang/String;
157     sget-object v0, Landroid/provider/Telephony$Sms;->CONTENT_URI:Landroid/net/Uri;
159     const-string v1, "raw"
161     invoke-static {v0, v1}, Landroid/net/Uri;->withAppendedPath(Landroid/net/Uri;Ljava/lang/String;)Landroid/net/Uri;
163     move-result-object v0
165     sput-object v0, Lcom/android/internal/telephony/SMSDispatcher;->mRawUri:Landroid/net/Uri;
167     new-instance v0, Ljava/util/Random;
169     invoke-direct {v0}, Ljava/util/Random;-><init>()V
171     const/16 v1, 0x100
173     invoke-virtual {v0, v1}, Ljava/util/Random;->nextInt(I)I
175     move-result v0
177     sput v0, Lcom/android/internal/telephony/SMSDispatcher;->sConcatenatedRef:I
179     return-void
180 .end method
182 .method protected constructor <init>(Lcom/android/internal/telephony/PhoneBase;Lcom/android/internal/telephony/SmsStorageMonitor;Lcom/android/internal/telephony/SmsUsageMonitor;)V
183     .registers 9
185     const/4 v2, 0x0
187     const/4 v1, 0x1
189     invoke-direct {p0}, Landroid/os/Handler;-><init>()V
191     new-instance v0, Ljava/util/concurrent/atomic/AtomicInteger;
193     invoke-direct {v0, v1}, Ljava/util/concurrent/atomic/AtomicInteger;-><init>(I)V
195     iput-object v0, p0, Lcom/android/internal/telephony/SMSDispatcher;->mPremiumSmsRule:Ljava/util/concurrent/atomic/AtomicInteger;
197     iput-boolean v1, p0, Lcom/android/internal/telephony/SMSDispatcher;->mSmsCapable:Z
199     const/4 v0, -0x1
201     iput v0, p0, Lcom/android/internal/telephony/SMSDispatcher;->mRemainingMessages:I
203     new-instance v0, Ljava/util/ArrayList;
205     invoke-direct {v0}, Ljava/util/ArrayList;-><init>()V
207     iput-object v0, p0, Lcom/android/internal/telephony/SMSDispatcher;->deliveryPendingList:Ljava/util/ArrayList;
209     new-instance v0, Lcom/android/internal/telephony/SMSDispatcher$1;
211     invoke-direct {v0, p0}, Lcom/android/internal/telephony/SMSDispatcher$1;-><init>(Lcom/android/internal/telephony/SMSDispatcher;)V
213     iput-object v0, p0, Lcom/android/internal/telephony/SMSDispatcher;->mResultReceiver:Landroid/content/BroadcastReceiver;
215     iput-object p1, p0, Lcom/android/internal/telephony/SMSDispatcher;->mPhone:Lcom/android/internal/telephony/Phone;
217     new-instance v0, Lcom/android/internal/telephony/WapPushOverSms;
219     invoke-direct {v0, p1, p0}, Lcom/android/internal/telephony/WapPushOverSms;-><init>(Lcom/android/internal/telephony/Phone;Lcom/android/internal/telephony/SMSDispatcher;)V
221     iput-object v0, p0, Lcom/android/internal/telephony/SMSDispatcher;->mWapPush:Lcom/android/internal/telephony/WapPushOverSms;
223     invoke-virtual {p1}, Lcom/android/internal/telephony/PhoneBase;->getContext()Landroid/content/Context;
225     move-result-object v0
227     iput-object v0, p0, Lcom/android/internal/telephony/SMSDispatcher;->mContext:Landroid/content/Context;
229     iget-object v0, p0, Lcom/android/internal/telephony/SMSDispatcher;->mContext:Landroid/content/Context;
231     invoke-virtual {v0}, Landroid/content/Context;->getContentResolver()Landroid/content/ContentResolver;
233     move-result-object v0
235     iput-object v0, p0, Lcom/android/internal/telephony/SMSDispatcher;->mResolver:Landroid/content/ContentResolver;
237     iget-object v0, p1, Lcom/android/internal/telephony/PhoneBase;->mCM:Lcom/android/internal/telephony/CommandsInterface;
239     iput-object v0, p0, Lcom/android/internal/telephony/SMSDispatcher;->mCm:Lcom/android/internal/telephony/CommandsInterface;
241     iput-object p2, p0, Lcom/android/internal/telephony/SMSDispatcher;->mStorageMonitor:Lcom/android/internal/telephony/SmsStorageMonitor;
243     iput-object p3, p0, Lcom/android/internal/telephony/SMSDispatcher;->mUsageMonitor:Lcom/android/internal/telephony/SmsUsageMonitor;
245     iget-object v0, p0, Lcom/android/internal/telephony/SMSDispatcher;->mContext:Landroid/content/Context;
247     const-string v3, "phone"
249     invoke-virtual {v0, v3}, Landroid/content/Context;->getSystemService(Ljava/lang/String;)Ljava/lang/Object;
251     move-result-object v0
253     check-cast v0, Landroid/telephony/TelephonyManager;
255     iput-object v0, p0, Lcom/android/internal/telephony/SMSDispatcher;->mTelephonyManager:Landroid/telephony/TelephonyManager;
257     new-instance v0, Lcom/android/internal/telephony/SMSDispatcher$SettingsObserver;
259     iget-object v3, p0, Lcom/android/internal/telephony/SMSDispatcher;->mPremiumSmsRule:Ljava/util/concurrent/atomic/AtomicInteger;
261     iget-object v4, p0, Lcom/android/internal/telephony/SMSDispatcher;->mContext:Landroid/content/Context;
263     invoke-direct {v0, p0, v3, v4}, Lcom/android/internal/telephony/SMSDispatcher$SettingsObserver;-><init>(Landroid/os/Handler;Ljava/util/concurrent/atomic/AtomicInteger;Landroid/content/Context;)V
265     iput-object v0, p0, Lcom/android/internal/telephony/SMSDispatcher;->mSettingsObserver:Lcom/android/internal/telephony/SMSDispatcher$SettingsObserver;
267     iget-object v0, p0, Lcom/android/internal/telephony/SMSDispatcher;->mContext:Landroid/content/Context;
269     invoke-virtual {v0}, Landroid/content/Context;->getContentResolver()Landroid/content/ContentResolver;
271     move-result-object v0
273     const-string v3, "sms_short_code_rule"
275     invoke-static {v3}, Landroid/provider/Settings$Global;->getUriFor(Ljava/lang/String;)Landroid/net/Uri;
277     move-result-object v3
279     iget-object v4, p0, Lcom/android/internal/telephony/SMSDispatcher;->mSettingsObserver:Lcom/android/internal/telephony/SMSDispatcher$SettingsObserver;
281     invoke-virtual {v0, v3, v2, v4}, Landroid/content/ContentResolver;->registerContentObserver(Landroid/net/Uri;ZLandroid/database/ContentObserver;)V
283     invoke-direct {p0}, Lcom/android/internal/telephony/SMSDispatcher;->createWakelock()V
285     iget-object v0, p0, Lcom/android/internal/telephony/SMSDispatcher;->mContext:Landroid/content/Context;
287     invoke-virtual {v0}, Landroid/content/Context;->getResources()Landroid/content/res/Resources;
289     move-result-object v0
291     const v3, 0x1110033
293     invoke-virtual {v0, v3}, Landroid/content/res/Resources;->getBoolean(I)Z
295     move-result v0
297     iput-boolean v0, p0, Lcom/android/internal/telephony/SMSDispatcher;->mSmsCapable:Z
299     const-string v0, "telephony.sms.receive"
301     iget-boolean v3, p0, Lcom/android/internal/telephony/SMSDispatcher;->mSmsCapable:Z
303     invoke-static {v0, v3}, Landroid/os/SystemProperties;->getBoolean(Ljava/lang/String;Z)Z
305     move-result v0
307     if-nez v0, :cond_d2
309     move v0, v1
311     :goto_83
312     iput-boolean v0, p0, Lcom/android/internal/telephony/SMSDispatcher;->mSmsReceiveDisabled:Z
314     const-string v0, "telephony.sms.send"
316     iget-boolean v3, p0, Lcom/android/internal/telephony/SMSDispatcher;->mSmsCapable:Z
318     invoke-static {v0, v3}, Landroid/os/SystemProperties;->getBoolean(Ljava/lang/String;Z)Z
320     move-result v0
322     if-nez v0, :cond_d4
324     :goto_8f
325     iput-boolean v1, p0, Lcom/android/internal/telephony/SMSDispatcher;->mSmsSendDisabled:Z
327     const-string v0, "SMS"
329     new-instance v1, Ljava/lang/StringBuilder;
331     invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
333     const-string v2, "SMSDispatcher: ctor mSmsCapable="
335     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
337     move-result-object v1
339     iget-boolean v2, p0, Lcom/android/internal/telephony/SMSDispatcher;->mSmsCapable:Z
341     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Z)Ljava/lang/StringBuilder;
343     move-result-object v1
345     const-string v2, " format="
347     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
349     move-result-object v1
351     invoke-virtual {p0}, Lcom/android/internal/telephony/SMSDispatcher;->getFormat()Ljava/lang/String;
353     move-result-object v2
355     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
357     move-result-object v1
359     const-string v2, " mSmsReceiveDisabled="
361     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
363     move-result-object v1
365     iget-boolean v2, p0, Lcom/android/internal/telephony/SMSDispatcher;->mSmsReceiveDisabled:Z
367     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Z)Ljava/lang/StringBuilder;
369     move-result-object v1
371     const-string v2, " mSmsSendDisabled="
373     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
375     move-result-object v1
377     iget-boolean v2, p0, Lcom/android/internal/telephony/SMSDispatcher;->mSmsSendDisabled:Z
379     invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Z)Ljava/lang/StringBuilder;
381     move-result-object v1
383     invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
385     move-result-object v1
387     invoke-static {v0, v1}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I
389     return-void
391     :cond_d2
392     move v0, v2
394     goto :goto_83
396     :cond_d4
397     move v1, v2
399     goto :goto_8f
400 .end method
402 .method private createWakelock()V
403     .registers 5
405     const/4 v3, 0x1
407     iget-object v1, p0, Lcom/android/internal/telephony/SMSDispatcher;->mContext:Landroid/content/Context;
409     const-string v2, "power"
411     invoke-virtual {v1, v2}, Landroid/content/Context;->getSystemService(Ljava/lang/String;)Ljava/lang/Object;
413     move-result-object v0
415     check-cast v0, Landroid/os/PowerManager;
417     const-string v1, "SMSDispatcher"
419     invoke-virtual {v0, v3, v1}, Landroid/os/PowerManager;->newWakeLock(ILjava/lang/String;)Landroid/os/PowerManager$WakeLock;
421     move-result-object v1
423     iput-object v1, p0, Lcom/android/internal/telephony/SMSDispatcher;->mWakeLock:Landroid/os/PowerManager$WakeLock;
425     iget-object v1, p0, Lcom/android/internal/telephony/SMSDispatcher;->mWakeLock:Landroid/os/PowerManager$WakeLock;
427     invoke-virtual {v1, v3}, Landroid/os/PowerManager$WakeLock;->setReferenceCounted(Z)V
429     return-void
430 .end method
432 .method private denyIfQueueLimitReached(Lcom/android/internal/telephony/SMSDispatcher$SmsTracker;)Z
433     .registers 5
435     const/4 v2, 0x5
437     iget v1, p0, Lcom/android/internal/telephony/SMSDispatcher;->mPendingTrackerCount:I
439     if-lt v1, v2, :cond_16
441     :try_start_5
442     iget-object v1, p1, Lcom/android/internal/telephony/SMSDispatcher$SmsTracker;->mSentIntent:Landroid/app/PendingIntent;
444     const/4 v2, 0x5
446     invoke-virtual {v1, v2}, Landroid/app/PendingIntent;->send(I)V
447     :try_end_b
448     .catch Landroid/app/PendingIntent$CanceledException; {:try_start_5 .. :try_end_b} :catch_d
450     :goto_b
451     const/4 v1, 0x1
453     :goto_c
454     return v1
456     :catch_d
457     move-exception v0
459     const-string v1, "SMS"
461     const-string v2, "failed to send back RESULT_ERROR_LIMIT_EXCEEDED"
463     invoke-static {v1, v2}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I
465     goto :goto_b
467     :cond_16
468     iget v1, p0, Lcom/android/internal/telephony/SMSDispatcher;->mPendingTrackerCount:I
470     add-int/lit8 v1, v1, 0x1
472     iput v1, p0, Lcom/android/internal/telephony/SMSDispatcher;->mPendingTrackerCount:I
474     const/4 v1, 0x0
476     goto :goto_c
477 .end method
479 .method private getAppLabel(Ljava/lang/String;)Ljava/lang/CharSequence;
480     .registers 8
482     iget-object v3, p0, Lcom/android/internal/telephony/SMSDispatcher;->mContext:Landroid/content/Context;
484     invoke-virtual {v3}, Landroid/content/Context;->getPackageManager()Landroid/content/pm/PackageManager;
486     move-result-object v2
488     const/4 v3, 0x0
490     :try_start_7
491     invoke-virtual {v2, p1, v3}, Landroid/content/pm/PackageManager;->getApplicationInfo(Ljava/lang/String;I)Landroid/content/pm/ApplicationInfo;
493     move-result-object v0
495     invoke-virtual {v0, v2}, Landroid/content/pm/ApplicationInfo;->loadLabel(Landroid/content/pm/PackageManager;)Ljava/lang/CharSequence;
496     :try_end_e
497     .catch Landroid/content/pm/PackageManager$NameNotFoundException; {:try_start_7 .. :try_end_e} :catch_10
499     move-result-object p1
501     :goto_f
502     return-object p1
504     :catch_10
505     move-exception v1
507     const-string v3, "SMS"
509     new-instance v4, Ljava/lang/StringBuilder;
511     invoke-direct {v4}, Ljava/lang/StringBuilder;-><init>()V
513     const-string v5, "PackageManager Name Not Found for package "
515     invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
517     move-result-object v4
519     invoke-virtual {v4, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
521     move-result-object v4
523     invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
525     move-result-object v4
527     invoke-static {v3, v4}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I
529     goto :goto_f
530 .end method
532 .method protected static getNextConcatenatedRef()I
533     .registers 1
535     sget v0, Lcom/android/internal/telephony/SMSDispatcher;->sConcatenatedRef:I
537     add-int/lit8 v0, v0, 0x1
539     sput v0, Lcom/android/internal/telephony/SMSDispatcher;->sConcatenatedRef:I
541     sget v0, Lcom/android/internal/telephony/SMSDispatcher;->sConcatenatedRef:I
543     return v0
544 .end method
546 .method protected static handleNotInService(ILandroid/app/PendingIntent;)V
547     .registers 3
549     if-eqz p1, :cond_9
551     const/4 v0, 0x3
553     if-ne p0, v0, :cond_a
555     const/4 v0, 0x2
557     :try_start_6
558     invoke-virtual {p1, v0}, Landroid/app/PendingIntent;->send(I)V
560     :cond_9
561     :goto_9
562     return-void
564     :cond_a
565     const/4 v0, 0x4
567     invoke-virtual {p1, v0}, Landroid/app/PendingIntent;->send(I)V
568     :try_end_e
569     .catch Landroid/app/PendingIntent$CanceledException; {:try_start_6 .. :try_end_e} :catch_f
571     goto :goto_9
573     :catch_f
574     move-exception v0
576     goto :goto_9
577 .end method
579 .method private notifyAndAcknowledgeLastIncomingSms(ZILandroid/os/Message;)V
580     .registers 8
582     if-nez p1, :cond_1c
584     new-instance v0, Landroid/content/Intent;
586     const-string v1, "android.provider.Telephony.SMS_REJECTED"
588     invoke-direct {v0, v1}, Landroid/content/Intent;-><init>(Ljava/lang/String;)V
590     const-string v1, "result"
592     invoke-virtual {v0, v1, p2}, Landroid/content/Intent;->putExtra(Ljava/lang/String;I)Landroid/content/Intent;
594     iget-object v1, p0, Lcom/android/internal/telephony/SMSDispatcher;->mWakeLock:Landroid/os/PowerManager$WakeLock;
596     const-wide/16 v2, 0x1388
598     invoke-virtual {v1, v2, v3}, Landroid/os/PowerManager$WakeLock;->acquire(J)V
600     iget-object v1, p0, Lcom/android/internal/telephony/SMSDispatcher;->mContext:Landroid/content/Context;
602     const-string v2, "android.permission.RECEIVE_SMS"
604     invoke-virtual {v1, v0, v2}, Landroid/content/Context;->sendBroadcast(Landroid/content/Intent;Ljava/lang/String;)V
606     :cond_1c
607     invoke-virtual {p0, p1, p2, p3}, Lcom/android/internal/telephony/SMSDispatcher;->acknowledgeLastIncomingSms(ZILandroid/os/Message;)V
609     return-void
610 .end method
612 .method private sendMultipartSms(Lcom/android/internal/telephony/SMSDispatcher$SmsTracker;)V
613     .registers 13
615     iget-object v8, p1, Lcom/android/internal/telephony/SMSDispatcher$SmsTracker;->mData:Ljava/util/HashMap;
617     const-string v0, "destination"
619     invoke-virtual {v8, v0}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
621     move-result-object v1
623     check-cast v1, Ljava/lang/String;
625     const-string v0, "scaddress"
627     invoke-virtual {v8, v0}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
629     move-result-object v2
631     check-cast v2, Ljava/lang/String;
633     const-string v0, "parts"
635     invoke-virtual {v8, v0}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
637     move-result-object v3
639     check-cast v3, Ljava/util/ArrayList;
641     const-string v0, "sentIntents"
643     invoke-virtual {v8, v0}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
645     move-result-object v4
647     check-cast v4, Ljava/util/ArrayList;
649     const-string v0, "deliveryIntents"
651     invoke-virtual {v8, v0}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
653     move-result-object v5
655     check-cast v5, Ljava/util/ArrayList;
657     iget-object v0, p0, Lcom/android/internal/telephony/SMSDispatcher;->mPhone:Lcom/android/internal/telephony/Phone;
659     invoke-interface {v0}, Lcom/android/internal/telephony/Phone;->getServiceState()Landroid/telephony/ServiceState;
661     move-result-object v0
663     invoke-virtual {v0}, Landroid/telephony/ServiceState;->getState()I
665     move-result v10
667     if-eqz v10, :cond_52
669     const/4 v7, 0x0
671     invoke-virtual {v3}, Ljava/util/ArrayList;->size()I
673     move-result v6
675     :goto_3b
676     if-ge v7, v6, :cond_56
678     const/4 v9, 0x0
680     if-eqz v4, :cond_4c
682     invoke-virtual {v4}, Ljava/util/ArrayList;->size()I
684     move-result v0
686     if-le v0, v7, :cond_4c
688     invoke-virtual {v4, v7}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
690     move-result-object v9
692     check-cast v9, Landroid/app/PendingIntent;
694     :cond_4c
695     invoke-static {v10, v9}, Lcom/android/internal/telephony/SMSDispatcher;->handleNotInService(ILandroid/app/PendingIntent;)V
697     add-int/lit8 v7, v7, 0x1
699     goto :goto_3b
701     :cond_52
702     move-object v0, p0
704     invoke-virtual/range {v0 .. v5}, Lcom/android/internal/telephony/SMSDispatcher;->sendMultipartText(Ljava/lang/String;Ljava/lang/String;Ljava/util/ArrayList;Ljava/util/ArrayList;Ljava/util/ArrayList;)V
706     :cond_56
707     return-void
708 .end method
711 # virtual methods
712 .method protected abstract acknowledgeLastIncomingSms(ZILandroid/os/Message;)V
713 .end method
715 .method protected abstract calculateLength(Ljava/lang/CharSequence;Z)Lcom/android/internal/telephony/GsmAlphabet$TextEncodingDetails;
716 .end method
718 .method checkDestination(Lcom/android/internal/telephony/SMSDispatcher$SmsTracker;)Z
719     .registers 14
721     const/4 v7, 0x0
723     const/4 v11, 0x3
725     const/4 v10, 0x2
727     const/4 v6, 0x1
729     iget-object v8, p0, Lcom/android/internal/telephony/SMSDispatcher;->mContext:Landroid/content/Context;
731     const-string v9, "android.permission.SEND_SMS_NO_CONFIRMATION"
733     invoke-virtual {v8, v9}, Landroid/content/Context;->checkCallingOrSelfPermission(Ljava/lang/String;)I
735     move-result v8
737     if-nez v8, :cond_f
739     :cond_e
740     :goto_e
741     return v6
743     :cond_f
744     iget-object v8, p0, Lcom/android/internal/telephony/SMSDispatcher;->mPremiumSmsRule:Ljava/util/concurrent/atomic/AtomicInteger;
746     invoke-virtual {v8}, Ljava/util/concurrent/atomic/AtomicInteger;->get()I
748     move-result v3
750     const/4 v5, 0x0
752     if-eq v3, v6, :cond_1a
754     if-ne v3, v11, :cond_3d
756     :cond_1a
757     iget-object v8, p0, Lcom/android/internal/telephony/SMSDispatcher;->mTelephonyManager:Landroid/telephony/TelephonyManager;
759     invoke-virtual {v8}, Landroid/telephony/TelephonyManager;->getSimCountryIso()Ljava/lang/String;
761     move-result-object v4
763     if-eqz v4, :cond_28
765     invoke-virtual {v4}, Ljava/lang/String;->length()I
767     move-result v8
769     if-eq v8, v10, :cond_35
771     :cond_28
772     const-string v8, "SMS"
774     const-string v9, "Can\'t get SIM country Iso: trying network country Iso"
776     invoke-static {v8, v9}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I
778     iget-object v8, p0, Lcom/android/internal/telephony/SMSDispatcher;->mTelephonyManager:Landroid/telephony/TelephonyManager;
780     invoke-virtual {v8}, Landroid/telephony/TelephonyManager;->getNetworkCountryIso()Ljava/lang/String;
782     move-result-object v4
784     :cond_35
785     iget-object v8, p0, Lcom/android/internal/telephony/SMSDispatcher;->mUsageMonitor:Lcom/android/internal/telephony/SmsUsageMonitor;
787     iget-object v9, p1, Lcom/android/internal/telephony/SMSDispatcher$SmsTracker;->mDestAddress:Ljava/lang/String;
789     invoke-virtual {v8, v9, v4}, Lcom/android/internal/telephony/SmsUsageMonitor;->checkDestination(Ljava/lang/String;Ljava/lang/String;)I
791     move-result v5
793     :cond_3d
794     if-eq v3, v10, :cond_41
796     if-ne v3, v11, :cond_6a
798     :cond_41
799     iget-object v8, p0, Lcom/android/internal/telephony/SMSDispatcher;->mTelephonyManager:Landroid/telephony/TelephonyManager;
801     invoke-virtual {v8}, Landroid/telephony/TelephonyManager;->getNetworkCountryIso()Ljava/lang/String;
803     move-result-object v1
805     if-eqz v1, :cond_4f
807     invoke-virtual {v1}, Ljava/lang/String;->length()I
809     move-result v8
811     if-eq v8, v10, :cond_5c
813     :cond_4f
814     const-string v8, "SMS"
816     const-string v9, "Can\'t get Network country Iso: trying SIM country Iso"
818     invoke-static {v8, v9}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I
820     iget-object v8, p0, Lcom/android/internal/telephony/SMSDispatcher;->mTelephonyManager:Landroid/telephony/TelephonyManager;
822     invoke-virtual {v8}, Landroid/telephony/TelephonyManager;->getSimCountryIso()Ljava/lang/String;
824     move-result-object v1
826     :cond_5c
827     iget-object v8, p0, Lcom/android/internal/telephony/SMSDispatcher;->mUsageMonitor:Lcom/android/internal/telephony/SmsUsageMonitor;
829     iget-object v8, p0, Lcom/android/internal/telephony/SMSDispatcher;->mUsageMonitor:Lcom/android/internal/telephony/SmsUsageMonitor;
831     iget-object v9, p1, Lcom/android/internal/telephony/SMSDispatcher$SmsTracker;->mDestAddress:Ljava/lang/String;
833     invoke-virtual {v8, v9, v1}, Lcom/android/internal/telephony/SmsUsageMonitor;->checkDestination(Ljava/lang/String;Ljava/lang/String;)I
835     move-result v8
837     invoke-static {v5, v8}, Lcom/android/internal/telephony/SmsUsageMonitor;->mergeShortCodeCategories(II)I
839     move-result v5
841     :cond_6a
842     if-eqz v5, :cond_e
844     if-eq v5, v6, :cond_e
846     if-eq v5, v10, :cond_e
848     iget-object v8, p0, Lcom/android/internal/telephony/SMSDispatcher;->mUsageMonitor:Lcom/android/internal/telephony/SmsUsageMonitor;
850     iget-object v9, p1, Lcom/android/internal/telephony/SMSDispatcher$SmsTracker;->mAppInfo:Landroid/content/pm/PackageInfo;
852     iget-object v9, v9, Landroid/content/pm/PackageInfo;->packageName:Ljava/lang/String;
854     invoke-virtual {v8, v9}, Lcom/android/internal/telephony/SmsUsageMonitor;->getPremiumSmsPermission(Ljava/lang/String;)I
856     move-result v2
858     if-nez v2, :cond_7d
860     const/4 v2, 0x1
862     :cond_7d
863     packed-switch v2, :pswitch_data_ac
865     if-ne v5, v11, :cond_a8
867     const/16 v0, 0x8
869     :goto_84
870     invoke-virtual {p0, v0, p1}, Lcom/android/internal/telephony/SMSDispatcher;->obtainMessage(ILjava/lang/Object;)Landroid/os/Message;
872     move-result-object v6
874     invoke-virtual {p0, v6}, Lcom/android/internal/telephony/SMSDispatcher;->sendMessage(Landroid/os/Message;)Z
876     move v6, v7
878     goto :goto_e
880     :pswitch_8d
881     const-string v7, "SMS"
883     const-string v8, "User approved this app to send to premium SMS"
885     invoke-static {v7, v8}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I
887     goto/16 :goto_e
889     :pswitch_96
890     const-string v6, "SMS"
892     const-string v8, "User denied this app from sending to premium SMS"
894     invoke-static {v6, v8}, Landroid/util/Log;->w(Ljava/lang/String;Ljava/lang/String;)I
896     const/4 v6, 0x7
898     invoke-virtual {p0, v6, p1}, Lcom/android/internal/telephony/SMSDispatcher;->obtainMessage(ILjava/lang/Object;)Landroid/os/Message;
900     move-result-object v6
902     invoke-virtual {p0, v6}, Lcom/android/internal/telephony/SMSDispatcher;->sendMessage(Landroid/os/Message;)Z
904     move v6, v7
906     goto/16 :goto_e
908     :cond_a8
909     const/16 v0, 0x9
911     goto :goto_84
913     nop
915     :pswitch_data_ac
916     .packed-switch 0x2
917         :pswitch_96
918         :pswitch_8d
919     .end packed-switch
920 .end method
922 .method public dispatch(Landroid/content/Intent;Ljava/lang/String;)V
923     .registers 11
925     const/4 v6, 0x0
927     iget-object v0, p0, Lcom/android/internal/telephony/SMSDispatcher;->mWakeLock:Landroid/os/PowerManager$WakeLock;
929     const-wide/16 v1, 0x1388
931     invoke-virtual {v0, v1, v2}, Landroid/os/PowerManager$WakeLock;->acquire(J)V
933     iget-object v0, p0, Lcom/android/internal/telephony/SMSDispatcher;->mContext:Landroid/content/Context;
935     iget-object v3, p0, Lcom/android/internal/telephony/SMSDispatcher;->mResultReceiver:Landroid/content/BroadcastReceiver;
937     const/4 v5, -0x1
939     move-object v1, p1
941     move-object v2, p2
943     move-object v4, p0
945     move-object v7, v6
947     invoke-virtual/range {v0 .. v7}, Landroid/content/Context;->sendOrderedBroadcast(Landroid/content/Intent;Ljava/lang/String;Landroid/content/BroadcastReceiver;Landroid/os/Handler;ILjava/lang/String;Landroid/os/Bundle;)V
949     return-void
950 .end method
952 .method public dispatch(Landroid/content/Intent;Ljava/lang/String;Landroid/content/BroadcastReceiver;)V
953     .registers 12
955     const/4 v6, 0x0
957     iget-object v0, p0, Lcom/android/internal/telephony/SMSDispatcher;->mWakeLock:Landroid/os/PowerManager$WakeLock;
959     const-wide/16 v1, 0x1388
961     invoke-virtual {v0, v1, v2}, Landroid/os/PowerManager$WakeLock;->acquire(J)V
963     iget-object v0, p0, Lcom/android/internal/telephony/SMSDispatcher;->mContext:Landroid/content/Context;
965     const/4 v5, -0x1
967     move-object v1, p1
969     move-object v2, p2
971     move-object v3, p3
973     move-object v4, p0
975     move-object v7, v6
977     invoke-virtual/range {v0 .. v7}, Landroid/content/Context;->sendOrderedBroadcast(Landroid/content/Intent;Ljava/lang/String;Landroid/content/BroadcastReceiver;Landroid/os/Handler;ILjava/lang/String;Landroid/os/Bundle;)V
979     return-void
980 .end method
982 .method protected dispatchBroadcastMessage(Landroid/telephony/SmsCbMessage;)V
983     .registers 5
985     invoke-virtual {p1}, Landroid/telephony/SmsCbMessage;->isEmergencyMessage()Z
987     move-result v1
989     if-eqz v1, :cond_1f
991     new-instance v0, Landroid/content/Intent;
993     const-string v1, "android.provider.Telephony.SMS_EMERGENCY_CB_RECEIVED"
995     invoke-direct {v0, v1}, Landroid/content/Intent;-><init>(Ljava/lang/String;)V
997     const-string v1, "message"
999     invoke-virtual {v0, v1, p1}, Landroid/content/Intent;->putExtra(Ljava/lang/String;Landroid/os/Parcelable;)Landroid/content/Intent;
1001     const-string v1, "SMS"
1003     const-string v2, "Dispatching emergency SMS CB"
1005     invoke-static {v1, v2}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I
1007     const-string v1, "android.permission.RECEIVE_EMERGENCY_BROADCAST"
1009     invoke-virtual {p0, v0, v1}, Lcom/android/internal/telephony/SMSDispatcher;->dispatch(Landroid/content/Intent;Ljava/lang/String;)V
1011     :goto_1e
1012     return-void
1014     :cond_1f
1015     new-instance v0, Landroid/content/Intent;
1017     const-string v1, "android.provider.Telephony.SMS_CB_RECEIVED"
1019     invoke-direct {v0, v1}, Landroid/content/Intent;-><init>(Ljava/lang/String;)V
1021     const-string v1, "message"
1023     invoke-virtual {v0, v1, p1}, Landroid/content/Intent;->putExtra(Ljava/lang/String;Landroid/os/Parcelable;)Landroid/content/Intent;
1025     const-string v1, "SMS"
1027     const-string v2, "Dispatching SMS CB"
1029     invoke-static {v1, v2}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I
1031     const-string v1, "android.permission.RECEIVE_SMS"
1033     invoke-virtual {p0, v0, v1}, Lcom/android/internal/telephony/SMSDispatcher;->dispatch(Landroid/content/Intent;Ljava/lang/String;)V
1035     goto :goto_1e
1036 .end method
1038 .method public abstract dispatchMessage(Lcom/android/internal/telephony/SmsMessageBase;)I
1039 .end method
1041 .method protected dispatchNormalMessage(Lcom/android/internal/telephony/SmsMessageBase;)I
1042     .registers 16
1044     const/4 v9, 0x0
1046     const/4 v8, -0x1
1048     invoke-virtual {p1}, Lcom/android/internal/telephony/SmsMessageBase;->getUserDataHeader()Lcom/android/internal/telephony/SmsHeader;
1050     move-result-object v13
1052     if-eqz v13, :cond_c
1054     iget-object v0, v13, Lcom/android/internal/telephony/SmsHeader;->concatRef:Lcom/android/internal/telephony/SmsHeader$ConcatRef;
1056     if-nez v0, :cond_3a
1058     :cond_c
1059     const/4 v0, 0x1
1061     new-array v11, v0, [[B
1063     invoke-virtual {p1}, Lcom/android/internal/telephony/SmsMessageBase;->getPdu()[B
1065     move-result-object v0
1067     aput-object v0, v11, v9
1069     if-eqz v13, :cond_36
1071     iget-object v0, v13, Lcom/android/internal/telephony/SmsHeader;->portAddrs:Lcom/android/internal/telephony/SmsHeader$PortAddrs;
1073     if-eqz v0, :cond_36
1075     iget-object v0, v13, Lcom/android/internal/telephony/SmsHeader;->portAddrs:Lcom/android/internal/telephony/SmsHeader$PortAddrs;
1077     iget v0, v0, Lcom/android/internal/telephony/SmsHeader$PortAddrs;->destPort:I
1079     const/16 v1, 0xb84
1081     if-ne v0, v1, :cond_2e
1083     iget-object v0, p0, Lcom/android/internal/telephony/SMSDispatcher;->mWapPush:Lcom/android/internal/telephony/WapPushOverSms;
1085     invoke-virtual {p1}, Lcom/android/internal/telephony/SmsMessageBase;->getUserData()[B
1087     move-result-object v1
1089     invoke-virtual {v0, v1}, Lcom/android/internal/telephony/WapPushOverSms;->dispatchWapPdu([B)I
1091     move-result v8
1093     :goto_2d
1094     return v8
1096     :cond_2e
1097     iget-object v0, v13, Lcom/android/internal/telephony/SmsHeader;->portAddrs:Lcom/android/internal/telephony/SmsHeader$PortAddrs;
1099     iget v0, v0, Lcom/android/internal/telephony/SmsHeader$PortAddrs;->destPort:I
1101     invoke-virtual {p0, v11, v0}, Lcom/android/internal/telephony/SMSDispatcher;->dispatchPortAddressedPdus([[BI)V
1103     goto :goto_2d
1105     :cond_36
1106     invoke-virtual {p0, v11}, Lcom/android/internal/telephony/SMSDispatcher;->dispatchPdus([[B)V
1108     goto :goto_2d
1110     :cond_3a
1111     iget-object v10, v13, Lcom/android/internal/telephony/SmsHeader;->concatRef:Lcom/android/internal/telephony/SmsHeader$ConcatRef;
1113     iget-object v12, v13, Lcom/android/internal/telephony/SmsHeader;->portAddrs:Lcom/android/internal/telephony/SmsHeader$PortAddrs;
1115     invoke-virtual {p1}, Lcom/android/internal/telephony/SmsMessageBase;->getPdu()[B
1117     move-result-object v1
1119     invoke-virtual {p1}, Lcom/android/internal/telephony/SmsMessageBase;->getOriginatingAddress()Ljava/lang/String;
1121     move-result-object v2
1123     iget v3, v10, Lcom/android/internal/telephony/SmsHeader$ConcatRef;->refNumber:I
1125     iget v4, v10, Lcom/android/internal/telephony/SmsHeader$ConcatRef;->seqNumber:I
1127     iget v5, v10, Lcom/android/internal/telephony/SmsHeader$ConcatRef;->msgCount:I
1129     invoke-virtual {p1}, Lcom/android/internal/telephony/SmsMessageBase;->getTimestampMillis()J
1131     move-result-wide v6
1133     if-eqz v12, :cond_54
1135     iget v8, v12, Lcom/android/internal/telephony/SmsHeader$PortAddrs;->destPort:I
1137     :cond_54
1138     move-object v0, p0
1140     invoke-virtual/range {v0 .. v9}, Lcom/android/internal/telephony/SMSDispatcher;->processMessagePart([BLjava/lang/String;IIIJIZ)I
1142     move-result v8
1144     goto :goto_2d
1145 .end method
1147 .method protected dispatchPdus([[B)V
1148     .registers 5
1150     new-instance v0, Landroid/content/Intent;
1152     const-string v1, "android.provider.Telephony.SMS_RECEIVED"
1154     invoke-direct {v0, v1}, Landroid/content/Intent;-><init>(Ljava/lang/String;)V
1156     const-string v1, "pdus"
1158     invoke-virtual {v0, v1, p1}, Landroid/content/Intent;->putExtra(Ljava/lang/String;Ljava/io/Serializable;)Landroid/content/Intent;
1160     const-string v1, "format"
1162     invoke-virtual {p0}, Lcom/android/internal/telephony/SMSDispatcher;->getFormat()Ljava/lang/String;
1164     move-result-object v2
1166     invoke-virtual {v0, v1, v2}, Landroid/content/Intent;->putExtra(Ljava/lang/String;Ljava/lang/String;)Landroid/content/Intent;
1168     const-string v1, "android.permission.RECEIVE_SMS"
1170     invoke-virtual {p0, v0, v1}, Lcom/android/internal/telephony/SMSDispatcher;->dispatch(Landroid/content/Intent;Ljava/lang/String;)V
1172     return-void
1173 .end method
1175 .method protected dispatchPortAddressedPdus([[BI)V
1176     .registers 7
1178     new-instance v2, Ljava/lang/StringBuilder;
1180     invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
1182     const-string v3, "sms://localhost:"
1184     invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
1186     move-result-object v2
1188     invoke-virtual {v2, p2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
1190     move-result-object v2
1192     invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
1194     move-result-object v2
1196     invoke-static {v2}, Landroid/net/Uri;->parse(Ljava/lang/String;)Landroid/net/Uri;
1198     move-result-object v1
1200     new-instance v0, Landroid/content/Intent;
1202     const-string v2, "android.intent.action.DATA_SMS_RECEIVED"
1204     invoke-direct {v0, v2, v1}, Landroid/content/Intent;-><init>(Ljava/lang/String;Landroid/net/Uri;)V
1206     const-string v2, "pdus"
1208     invoke-virtual {v0, v2, p1}, Landroid/content/Intent;->putExtra(Ljava/lang/String;Ljava/io/Serializable;)Landroid/content/Intent;
1210     const-string v2, "format"
1212     invoke-virtual {p0}, Lcom/android/internal/telephony/SMSDispatcher;->getFormat()Ljava/lang/String;
1214     move-result-object v3
1216     invoke-virtual {v0, v2, v3}, Landroid/content/Intent;->putExtra(Ljava/lang/String;Ljava/lang/String;)Landroid/content/Intent;
1218     const-string v2, "android.permission.RECEIVE_SMS"
1220     invoke-virtual {p0, v0, v2}, Lcom/android/internal/telephony/SMSDispatcher;->dispatch(Landroid/content/Intent;Ljava/lang/String;)V
1222     return-void
1223 .end method
1225 .method public abstract dispose()V
1226 .end method
1228 .method protected finalize()V
1229     .registers 3
1231     const-string v0, "SMS"
1233     const-string v1, "SMSDispatcher finalized"
1235     invoke-static {v0, v1}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I
1237     return-void
1238 .end method
1240 .method protected abstract getFormat()Ljava/lang/String;
1241 .end method
1243 .method public getPremiumSmsPermission(Ljava/lang/String;)I
1244     .registers 3
1246     iget-object v0, p0, Lcom/android/internal/telephony/SMSDispatcher;->mUsageMonitor:Lcom/android/internal/telephony/SmsUsageMonitor;
1248     invoke-virtual {v0, p1}, Lcom/android/internal/telephony/SmsUsageMonitor;->getPremiumSmsPermission(Ljava/lang/String;)I
1250     move-result v0
1252     return v0
1253 .end method
1255 .method protected handleConfirmShortCode(ZLcom/android/internal/telephony/SMSDispatcher$SmsTracker;)V
1256     .registers 21
1258     move-object/from16 v0, p0
1260     move-object/from16 v1, p2
1262     invoke-direct {v0, v1}, Lcom/android/internal/telephony/SMSDispatcher;->denyIfQueueLimitReached(Lcom/android/internal/telephony/SMSDispatcher$SmsTracker;)Z
1264     move-result v14
1266     if-eqz v14, :cond_b
1268     :goto_a
1269     return-void
1271     :cond_b
1272     if-eqz p1, :cond_d8
1274     const v4, 0x104043e
1276     :goto_10
1277     move-object/from16 v0, p2
1279     iget-object v14, v0, Lcom/android/internal/telephony/SMSDispatcher$SmsTracker;->mAppInfo:Landroid/content/pm/PackageInfo;
1281     iget-object v14, v14, Landroid/content/pm/PackageInfo;->packageName:Ljava/lang/String;
1283     move-object/from16 v0, p0
1285     invoke-direct {v0, v14}, Lcom/android/internal/telephony/SMSDispatcher;->getAppLabel(Ljava/lang/String;)Ljava/lang/CharSequence;
1287     move-result-object v2
1289     invoke-static {}, Landroid/content/res/Resources;->getSystem()Landroid/content/res/Resources;
1291     move-result-object v12
1293     const v14, 0x104043c
1295     const/4 v15, 0x2
1297     new-array v15, v15, [Ljava/lang/Object;
1299     const/16 v16, 0x0
1301     aput-object v2, v15, v16
1303     const/16 v16, 0x1
1305     move-object/from16 v0, p2
1307     iget-object v0, v0, Lcom/android/internal/telephony/SMSDispatcher$SmsTracker;->mDestAddress:Ljava/lang/String;
1309     move-object/from16 v17, v0
1311     aput-object v17, v15, v16
1313     invoke-virtual {v12, v14, v15}, Landroid/content/res/Resources;->getString(I[Ljava/lang/Object;)Ljava/lang/String;
1315     move-result-object v14
1317     invoke-static {v14}, Landroid/text/Html;->fromHtml(Ljava/lang/String;)Landroid/text/Spanned;
1319     move-result-object v10
1321     move-object/from16 v0, p0
1323     iget-object v14, v0, Lcom/android/internal/telephony/SMSDispatcher;->mContext:Landroid/content/Context;
1325     const-string v15, "layout_inflater"
1327     invoke-virtual {v14, v15}, Landroid/content/Context;->getSystemService(Ljava/lang/String;)Ljava/lang/Object;
1329     move-result-object v7
1331     check-cast v7, Landroid/view/LayoutInflater;
1333     const v14, 0x10900ca
1335     const/4 v15, 0x0
1337     invoke-virtual {v7, v14, v15}, Landroid/view/LayoutInflater;->inflate(ILandroid/view/ViewGroup;)Landroid/view/View;
1339     move-result-object v8
1341     new-instance v9, Lcom/android/internal/telephony/SMSDispatcher$ConfirmDialogListener;
1343     const v14, 0x1020374
1345     invoke-virtual {v8, v14}, Landroid/view/View;->findViewById(I)Landroid/view/View;
1347     move-result-object v14
1349     check-cast v14, Landroid/widget/TextView;
1351     move-object/from16 v0, p0
1353     move-object/from16 v1, p2
1355     invoke-direct {v9, v0, v1, v14}, Lcom/android/internal/telephony/SMSDispatcher$ConfirmDialogListener;-><init>(Lcom/android/internal/telephony/SMSDispatcher;Lcom/android/internal/telephony/SMSDispatcher$SmsTracker;Landroid/widget/TextView;)V
1357     const v14, 0x102036e
1359     invoke-virtual {v8, v14}, Landroid/view/View;->findViewById(I)Landroid/view/View;
1361     move-result-object v11
1363     check-cast v11, Landroid/widget/TextView;
1365     invoke-virtual {v11, v10}, Landroid/widget/TextView;->setText(Ljava/lang/CharSequence;)V
1367     const v14, 0x102036f
1369     invoke-virtual {v8, v14}, Landroid/view/View;->findViewById(I)Landroid/view/View;
1371     move-result-object v5
1373     check-cast v5, Landroid/view/ViewGroup;
1375     const v14, 0x1020371
1377     invoke-virtual {v5, v14}, Landroid/view/ViewGroup;->findViewById(I)Landroid/view/View;
1379     move-result-object v6
1381     check-cast v6, Landroid/widget/TextView;
1383     invoke-virtual {v6, v4}, Landroid/widget/TextView;->setText(I)V
1385     const v14, 0x1020372
1387     invoke-virtual {v8, v14}, Landroid/view/View;->findViewById(I)Landroid/view/View;
1389     move-result-object v13
1391     check-cast v13, Landroid/widget/CheckBox;
1393     invoke-virtual {v13, v9}, Landroid/widget/CheckBox;->setOnCheckedChangeListener(Landroid/widget/CompoundButton$OnCheckedChangeListener;)V
1395     new-instance v14, Landroid/app/AlertDialog$Builder;
1397     move-object/from16 v0, p0
1399     iget-object v15, v0, Lcom/android/internal/telephony/SMSDispatcher;->mContext:Landroid/content/Context;
1401     invoke-direct {v14, v15}, Landroid/app/AlertDialog$Builder;-><init>(Landroid/content/Context;)V
1403     invoke-virtual {v14, v8}, Landroid/app/AlertDialog$Builder;->setView(Landroid/view/View;)Landroid/app/AlertDialog$Builder;
1405     move-result-object v14
1407     const v15, 0x104043f
1409     invoke-virtual {v12, v15}, Landroid/content/res/Resources;->getString(I)Ljava/lang/String;
1411     move-result-object v15
1413     invoke-virtual {v14, v15, v9}, Landroid/app/AlertDialog$Builder;->setPositiveButton(Ljava/lang/CharSequence;Landroid/content/DialogInterface$OnClickListener;)Landroid/app/AlertDialog$Builder;
1415     move-result-object v14
1417     const v15, 0x1040440
1419     invoke-virtual {v12, v15}, Landroid/content/res/Resources;->getString(I)Ljava/lang/String;
1421     move-result-object v15
1423     invoke-virtual {v14, v15, v9}, Landroid/app/AlertDialog$Builder;->setNegativeButton(Ljava/lang/CharSequence;Landroid/content/DialogInterface$OnClickListener;)Landroid/app/AlertDialog$Builder;
1425     move-result-object v14
1427     invoke-virtual {v14, v9}, Landroid/app/AlertDialog$Builder;->setOnCancelListener(Landroid/content/DialogInterface$OnCancelListener;)Landroid/app/AlertDialog$Builder;
1429     move-result-object v14
1431     invoke-virtual {v14}, Landroid/app/AlertDialog$Builder;->create()Landroid/app/AlertDialog;
1433     move-result-object v3
1435     invoke-virtual {v3}, Landroid/app/AlertDialog;->getWindow()Landroid/view/Window;
1437     move-result-object v14
1439     const/16 v15, 0x7d3
1441     invoke-virtual {v14, v15}, Landroid/view/Window;->setType(I)V
1443     invoke-virtual {v3}, Landroid/app/AlertDialog;->show()V
1445     const/4 v14, -0x1
1447     invoke-virtual {v3, v14}, Landroid/app/AlertDialog;->getButton(I)Landroid/widget/Button;
1449     move-result-object v14
1451     invoke-virtual {v9, v14}, Lcom/android/internal/telephony/SMSDispatcher$ConfirmDialogListener;->setPositiveButton(Landroid/widget/Button;)V
1453     const/4 v14, -0x2
1455     invoke-virtual {v3, v14}, Landroid/app/AlertDialog;->getButton(I)Landroid/widget/Button;
1457     move-result-object v14
1459     invoke-virtual {v9, v14}, Lcom/android/internal/telephony/SMSDispatcher$ConfirmDialogListener;->setNegativeButton(Landroid/widget/Button;)V
1461     goto/16 :goto_a
1463     :cond_d8
1464     const v4, 0x104043d
1466     goto/16 :goto_10
1467 .end method
1469 .method public handleMessage(Landroid/os/Message;)V
1470     .registers 12
1472     const/4 v9, 0x0
1474     const/4 v2, 0x1
1476     const/4 v7, 0x0
1478     iget v6, p1, Landroid/os/Message;->what:I
1480     packed-switch v6, :pswitch_data_b6
1482     :cond_8
1483     :goto_8
1484     :pswitch_8
1485     return-void
1487     :pswitch_9
1488     iget-object v0, p1, Landroid/os/Message;->obj:Ljava/lang/Object;
1490     check-cast v0, Landroid/os/AsyncResult;
1492     iget-object v6, v0, Landroid/os/AsyncResult;->exception:Ljava/lang/Throwable;
1494     if-eqz v6, :cond_2c
1496     const-string v6, "SMS"
1498     new-instance v7, Ljava/lang/StringBuilder;
1500     invoke-direct {v7}, Ljava/lang/StringBuilder;-><init>()V
1502     const-string v8, "Exception processing incoming SMS. Exception:"
1504     invoke-virtual {v7, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
1506     move-result-object v7
1508     iget-object v8, v0, Landroid/os/AsyncResult;->exception:Ljava/lang/Throwable;
1510     invoke-virtual {v7, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
1512     move-result-object v7
1514     invoke-virtual {v7}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
1516     move-result-object v7
1518     invoke-static {v6, v7}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I
1520     goto :goto_8
1522     :cond_2c
1523     iget-object v4, v0, Landroid/os/AsyncResult;->result:Ljava/lang/Object;
1525     check-cast v4, Landroid/telephony/SmsMessage;
1527     :try_start_30
1528     iget-object v6, v4, Landroid/telephony/SmsMessage;->mWrappedSmsMessage:Lcom/android/internal/telephony/SmsMessageBase;
1530     invoke-virtual {p0, v6}, Lcom/android/internal/telephony/SMSDispatcher;->dispatchMessage(Lcom/android/internal/telephony/SmsMessageBase;)I
1532     move-result v3
1534     const/4 v6, -0x1
1536     if-eq v3, v6, :cond_8
1538     if-ne v3, v2, :cond_4d
1540     :goto_3b
1541     const/4 v6, 0x0
1543     invoke-direct {p0, v2, v3, v6}, Lcom/android/internal/telephony/SMSDispatcher;->notifyAndAcknowledgeLastIncomingSms(ZILandroid/os/Message;)V
1544     :try_end_3f
1545     .catch Ljava/lang/RuntimeException; {:try_start_30 .. :try_end_3f} :catch_40
1547     goto :goto_8
1549     :catch_40
1550     move-exception v1
1552     const-string v6, "SMS"
1554     const-string v8, "Exception dispatching message"
1556     invoke-static {v6, v8, v1}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
1558     const/4 v6, 0x2
1560     invoke-direct {p0, v7, v6, v9}, Lcom/android/internal/telephony/SMSDispatcher;->notifyAndAcknowledgeLastIncomingSms(ZILandroid/os/Message;)V
1562     goto :goto_8
1564     :cond_4d
1565     move v2, v7
1567     goto :goto_3b
1569     :pswitch_4f
1570     iget-object v6, p1, Landroid/os/Message;->obj:Ljava/lang/Object;
1572     check-cast v6, Landroid/os/AsyncResult;
1574     invoke-virtual {p0, v6}, Lcom/android/internal/telephony/SMSDispatcher;->handleSendComplete(Landroid/os/AsyncResult;)V
1576     goto :goto_8
1578     :pswitch_57
1579     iget-object v6, p1, Landroid/os/Message;->obj:Ljava/lang/Object;
1581     check-cast v6, Lcom/android/internal/telephony/SMSDispatcher$SmsTracker;
1583     invoke-virtual {p0, v6}, Lcom/android/internal/telephony/SMSDispatcher;->sendSms(Lcom/android/internal/telephony/SMSDispatcher$SmsTracker;)V
1585     goto :goto_8
1587     :pswitch_5f
1588     iget-object v6, p1, Landroid/os/Message;->obj:Ljava/lang/Object;
1590     check-cast v6, Lcom/android/internal/telephony/SMSDispatcher$SmsTracker;
1592     check-cast v6, Lcom/android/internal/telephony/SMSDispatcher$SmsTracker;
1594     invoke-virtual {p0, v6}, Lcom/android/internal/telephony/SMSDispatcher;->handleReachSentLimit(Lcom/android/internal/telephony/SMSDispatcher$SmsTracker;)V
1596     goto :goto_8
1598     :pswitch_69
1599     iget-object v6, p1, Landroid/os/Message;->obj:Ljava/lang/Object;
1601     check-cast v6, Lcom/android/internal/telephony/SMSDispatcher$SmsTracker;
1603     check-cast v6, Lcom/android/internal/telephony/SMSDispatcher$SmsTracker;
1605     invoke-virtual {p0, v7, v6}, Lcom/android/internal/telephony/SMSDispatcher;->handleConfirmShortCode(ZLcom/android/internal/telephony/SMSDispatcher$SmsTracker;)V
1607     goto :goto_8
1609     :pswitch_73
1610     iget-object v6, p1, Landroid/os/Message;->obj:Ljava/lang/Object;
1612     check-cast v6, Lcom/android/internal/telephony/SMSDispatcher$SmsTracker;
1614     check-cast v6, Lcom/android/internal/telephony/SMSDispatcher$SmsTracker;
1616     invoke-virtual {p0, v2, v6}, Lcom/android/internal/telephony/SMSDispatcher;->handleConfirmShortCode(ZLcom/android/internal/telephony/SMSDispatcher$SmsTracker;)V
1618     goto :goto_8
1620     :pswitch_7d
1621     iget-object v5, p1, Landroid/os/Message;->obj:Ljava/lang/Object;
1623     check-cast v5, Lcom/android/internal/telephony/SMSDispatcher$SmsTracker;
1625     invoke-virtual {v5}, Lcom/android/internal/telephony/SMSDispatcher$SmsTracker;->isMultipart()Z
1627     move-result v6
1629     if-eqz v6, :cond_92
1631     invoke-direct {p0, v5}, Lcom/android/internal/telephony/SMSDispatcher;->sendMultipartSms(Lcom/android/internal/telephony/SMSDispatcher$SmsTracker;)V
1633     :goto_8a
1634     iget v6, p0, Lcom/android/internal/telephony/SMSDispatcher;->mPendingTrackerCount:I
1636     add-int/lit8 v6, v6, -0x1
1638     iput v6, p0, Lcom/android/internal/telephony/SMSDispatcher;->mPendingTrackerCount:I
1640     goto/16 :goto_8
1642     :cond_92
1643     invoke-virtual {p0, v5}, Lcom/android/internal/telephony/SMSDispatcher;->sendSms(Lcom/android/internal/telephony/SMSDispatcher$SmsTracker;)V
1645     goto :goto_8a
1647     :pswitch_96
1648     iget-object v5, p1, Landroid/os/Message;->obj:Ljava/lang/Object;
1650     check-cast v5, Lcom/android/internal/telephony/SMSDispatcher$SmsTracker;
1652     iget-object v6, v5, Lcom/android/internal/telephony/SMSDispatcher$SmsTracker;->mSentIntent:Landroid/app/PendingIntent;
1654     if-eqz v6, :cond_a4
1656     :try_start_9e
1657     iget-object v6, v5, Lcom/android/internal/telephony/SMSDispatcher$SmsTracker;->mSentIntent:Landroid/app/PendingIntent;
1659     const/4 v7, 0x5
1661     invoke-virtual {v6, v7}, Landroid/app/PendingIntent;->send(I)V
1662     :try_end_a4
1663     .catch Landroid/app/PendingIntent$CanceledException; {:try_start_9e .. :try_end_a4} :catch_ac
1665     :cond_a4
1666     :goto_a4
1667     iget v6, p0, Lcom/android/internal/telephony/SMSDispatcher;->mPendingTrackerCount:I
1669     add-int/lit8 v6, v6, -0x1
1671     iput v6, p0, Lcom/android/internal/telephony/SMSDispatcher;->mPendingTrackerCount:I
1673     goto/16 :goto_8
1675     :catch_ac
1676     move-exception v1
1678     const-string v6, "SMS"
1680     const-string v7, "failed to send RESULT_ERROR_LIMIT_EXCEEDED"
1682     invoke-static {v6, v7}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I
1684     goto :goto_a4
1686     nop
1688     :pswitch_data_b6
1689     .packed-switch 0x1
1690         :pswitch_9
1691         :pswitch_4f
1692         :pswitch_57
1693         :pswitch_5f
1694         :pswitch_7d
1695         :pswitch_8
1696         :pswitch_96
1697         :pswitch_69
1698         :pswitch_73
1699     .end packed-switch
1700 .end method
1702 .method protected handleReachSentLimit(Lcom/android/internal/telephony/SMSDispatcher$SmsTracker;)V
1703     .registers 10
1705     invoke-direct {p0, p1}, Lcom/android/internal/telephony/SMSDispatcher;->denyIfQueueLimitReached(Lcom/android/internal/telephony/SMSDispatcher$SmsTracker;)Z
1707     move-result v5
1709     if-eqz v5, :cond_7
1711     :goto_6
1712     return-void
1714     :cond_7
1715     iget-object v5, p1, Lcom/android/internal/telephony/SMSDispatcher$SmsTracker;->mAppInfo:Landroid/content/pm/PackageInfo;
1717     iget-object v5, v5, Landroid/content/pm/PackageInfo;->packageName:Ljava/lang/String;
1719     invoke-direct {p0, v5}, Lcom/android/internal/telephony/SMSDispatcher;->getAppLabel(Ljava/lang/String;)Ljava/lang/CharSequence;
1721     move-result-object v0
1723     invoke-static {}, Landroid/content/res/Resources;->getSystem()Landroid/content/res/Resources;
1725     move-result-object v4
1727     const v5, 0x1040439
1729     const/4 v6, 0x1
1731     new-array v6, v6, [Ljava/lang/Object;
1733     const/4 v7, 0x0
1735     aput-object v0, v6, v7
1737     invoke-virtual {v4, v5, v6}, Landroid/content/res/Resources;->getString(I[Ljava/lang/Object;)Ljava/lang/String;
1739     move-result-object v5
1741     invoke-static {v5}, Landroid/text/Html;->fromHtml(Ljava/lang/String;)Landroid/text/Spanned;
1743     move-result-object v3
1745     new-instance v2, Lcom/android/internal/telephony/SMSDispatcher$ConfirmDialogListener;
1747     const/4 v5, 0x0
1749     invoke-direct {v2, p0, p1, v5}, Lcom/android/internal/telephony/SMSDispatcher$ConfirmDialogListener;-><init>(Lcom/android/internal/telephony/SMSDispatcher;Lcom/android/internal/telephony/SMSDispatcher$SmsTracker;Landroid/widget/TextView;)V
1751     new-instance v5, Landroid/app/AlertDialog$Builder;
1753     iget-object v6, p0, Lcom/android/internal/telephony/SMSDispatcher;->mContext:Landroid/content/Context;
1755     invoke-direct {v5, v6}, Landroid/app/AlertDialog$Builder;-><init>(Landroid/content/Context;)V
1757     const v6, 0x1040438
1759     invoke-virtual {v5, v6}, Landroid/app/AlertDialog$Builder;->setTitle(I)Landroid/app/AlertDialog$Builder;
1761     move-result-object v5
1763     const v6, 0x108008a
1765     invoke-virtual {v5, v6}, Landroid/app/AlertDialog$Builder;->setIcon(I)Landroid/app/AlertDialog$Builder;
1767     move-result-object v5
1769     invoke-virtual {v5, v3}, Landroid/app/AlertDialog$Builder;->setMessage(Ljava/lang/CharSequence;)Landroid/app/AlertDialog$Builder;
1771     move-result-object v5
1773     const v6, 0x104043a
1775     invoke-virtual {v4, v6}, Landroid/content/res/Resources;->getString(I)Ljava/lang/String;
1777     move-result-object v6
1779     invoke-virtual {v5, v6, v2}, Landroid/app/AlertDialog$Builder;->setPositiveButton(Ljava/lang/CharSequence;Landroid/content/DialogInterface$OnClickListener;)Landroid/app/AlertDialog$Builder;
1781     move-result-object v5
1783     const v6, 0x104043b
1785     invoke-virtual {v4, v6}, Landroid/content/res/Resources;->getString(I)Ljava/lang/String;
1787     move-result-object v6
1789     invoke-virtual {v5, v6, v2}, Landroid/app/AlertDialog$Builder;->setNegativeButton(Ljava/lang/CharSequence;Landroid/content/DialogInterface$OnClickListener;)Landroid/app/AlertDialog$Builder;
1791     move-result-object v5
1793     invoke-virtual {v5, v2}, Landroid/app/AlertDialog$Builder;->setOnCancelListener(Landroid/content/DialogInterface$OnCancelListener;)Landroid/app/AlertDialog$Builder;
1795     move-result-object v5
1797     invoke-virtual {v5}, Landroid/app/AlertDialog$Builder;->create()Landroid/app/AlertDialog;
1799     move-result-object v1
1801     invoke-virtual {v1}, Landroid/app/AlertDialog;->getWindow()Landroid/view/Window;
1803     move-result-object v5
1805     const/16 v6, 0x7d3
1807     invoke-virtual {v5, v6}, Landroid/view/Window;->setType(I)V
1809     invoke-virtual {v1}, Landroid/app/AlertDialog;->show()V
1811     goto :goto_6
1812 .end method
1814 .method protected handleSendComplete(Landroid/os/AsyncResult;)V
1815     .registers 14
1817     const/4 v11, 0x3
1819     const/4 v10, -0x1
1821     iget-object v7, p1, Landroid/os/AsyncResult;->userObj:Ljava/lang/Object;
1823     check-cast v7, Lcom/android/internal/telephony/SMSDispatcher$SmsTracker;
1825     iget-object v5, v7, Lcom/android/internal/telephony/SMSDispatcher$SmsTracker;->mSentIntent:Landroid/app/PendingIntent;
1827     iget-object v8, p1, Landroid/os/AsyncResult;->exception:Ljava/lang/Throwable;
1829     if-nez v8, :cond_46
1831     iget-object v8, v7, Lcom/android/internal/telephony/SMSDispatcher$SmsTracker;->mDeliveryIntent:Landroid/app/PendingIntent;
1833     if-eqz v8, :cond_1d
1835     iget-object v8, p1, Landroid/os/AsyncResult;->result:Ljava/lang/Object;
1837     check-cast v8, Lcom/android/internal/telephony/SmsResponse;
1839     iget v2, v8, Lcom/android/internal/telephony/SmsResponse;->messageRef:I
1841     iput v2, v7, Lcom/android/internal/telephony/SMSDispatcher$SmsTracker;->mMessageRef:I
1843     iget-object v8, p0, Lcom/android/internal/telephony/SMSDispatcher;->deliveryPendingList:Ljava/util/ArrayList;
1845     invoke-virtual {v8, v7}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
1847     :cond_1d
1848     if-eqz v5, :cond_3e
1850     :try_start_1f
1851     iget v8, p0, Lcom/android/internal/telephony/SMSDispatcher;->mRemainingMessages:I
1853     if-le v8, v10, :cond_29
1855     iget v8, p0, Lcom/android/internal/telephony/SMSDispatcher;->mRemainingMessages:I
1857     add-int/lit8 v8, v8, -0x1
1859     iput v8, p0, Lcom/android/internal/telephony/SMSDispatcher;->mRemainingMessages:I
1861     :cond_29
1862     iget v8, p0, Lcom/android/internal/telephony/SMSDispatcher;->mRemainingMessages:I
1864     if-nez v8, :cond_3f
1866     new-instance v4, Landroid/content/Intent;
1868     invoke-direct {v4}, Landroid/content/Intent;-><init>()V
1870     const-string v8, "SendNextMsg"
1872     const/4 v9, 0x1
1874     invoke-virtual {v4, v8, v9}, Landroid/content/Intent;->putExtra(Ljava/lang/String;Z)Landroid/content/Intent;
1876     iget-object v8, p0, Lcom/android/internal/telephony/SMSDispatcher;->mContext:Landroid/content/Context;
1878     const/4 v9, -0x1
1880     invoke-virtual {v5, v8, v9, v4}, Landroid/app/PendingIntent;->send(Landroid/content/Context;ILandroid/content/Intent;)V
1882     :cond_3e
1883     :goto_3e
1884     return-void
1886     :cond_3f
1887     const/4 v8, -0x1
1889     invoke-virtual {v5, v8}, Landroid/app/PendingIntent;->send(I)V
1890     :try_end_43
1891     .catch Landroid/app/PendingIntent$CanceledException; {:try_start_1f .. :try_end_43} :catch_44
1893     goto :goto_3e
1895     :catch_44
1896     move-exception v8
1898     goto :goto_3e
1900     :cond_46
1901     iget-object v8, p0, Lcom/android/internal/telephony/SMSDispatcher;->mPhone:Lcom/android/internal/telephony/Phone;
1903     invoke-interface {v8}, Lcom/android/internal/telephony/Phone;->getServiceState()Landroid/telephony/ServiceState;
1905     move-result-object v8
1907     invoke-virtual {v8}, Landroid/telephony/ServiceState;->getState()I
1909     move-result v6
1911     if-eqz v6, :cond_58
1913     iget-object v8, v7, Lcom/android/internal/telephony/SMSDispatcher$SmsTracker;->mSentIntent:Landroid/app/PendingIntent;
1915     invoke-static {v6, v8}, Lcom/android/internal/telephony/SMSDispatcher;->handleNotInService(ILandroid/app/PendingIntent;)V
1917     goto :goto_3e
1919     :cond_58
1920     iget-object v8, p1, Landroid/os/AsyncResult;->exception:Ljava/lang/Throwable;
1922     check-cast v8, Lcom/android/internal/telephony/CommandException;
1924     check-cast v8, Lcom/android/internal/telephony/CommandException;
1926     invoke-virtual {v8}, Lcom/android/internal/telephony/CommandException;->getCommandError()Lcom/android/internal/telephony/CommandException$Error;
1928     move-result-object v8
1930     sget-object v9, Lcom/android/internal/telephony/CommandException$Error;->SMS_FAIL_RETRY:Lcom/android/internal/telephony/CommandException$Error;
1932     if-ne v8, v9, :cond_7a
1934     iget v8, v7, Lcom/android/internal/telephony/SMSDispatcher$SmsTracker;->mRetryCount:I
1936     if-ge v8, v11, :cond_7a
1938     iget v8, v7, Lcom/android/internal/telephony/SMSDispatcher$SmsTracker;->mRetryCount:I
1940     add-int/lit8 v8, v8, 0x1
1942     iput v8, v7, Lcom/android/internal/telephony/SMSDispatcher$SmsTracker;->mRetryCount:I
1944     invoke-virtual {p0, v11, v7}, Lcom/android/internal/telephony/SMSDispatcher;->obtainMessage(ILjava/lang/Object;)Landroid/os/Message;
1946     move-result-object v3
1948     const-wide/16 v8, 0x7d0
1950     invoke-virtual {p0, v3, v8, v9}, Lcom/android/internal/telephony/SMSDispatcher;->sendMessageDelayed(Landroid/os/Message;J)Z
1952     goto :goto_3e
1954     :cond_7a
1955     iget-object v8, v7, Lcom/android/internal/telephony/SMSDispatcher$SmsTracker;->mSentIntent:Landroid/app/PendingIntent;
1957     if-eqz v8, :cond_3e
1959     const/4 v0, 0x1
1961     iget-object v8, p1, Landroid/os/AsyncResult;->exception:Ljava/lang/Throwable;
1963     check-cast v8, Lcom/android/internal/telephony/CommandException;
1965     check-cast v8, Lcom/android/internal/telephony/CommandException;
1967     invoke-virtual {v8}, Lcom/android/internal/telephony/CommandException;->getCommandError()Lcom/android/internal/telephony/CommandException$Error;
1969     move-result-object v8
1971     sget-object v9, Lcom/android/internal/telephony/CommandException$Error;->FDN_CHECK_FAILURE:Lcom/android/internal/telephony/CommandException$Error;
1973     if-ne v8, v9, :cond_8e
1975     const/4 v0, 0x6
1977     :cond_8e
1978     :try_start_8e
1979     new-instance v1, Landroid/content/Intent;
1981     invoke-direct {v1}, Landroid/content/Intent;-><init>()V
1983     iget-object v8, p1, Landroid/os/AsyncResult;->result:Ljava/lang/Object;
1985     if-eqz v8, :cond_a2
1987     const-string v9, "errorCode"
1989     iget-object v8, p1, Landroid/os/AsyncResult;->result:Ljava/lang/Object;
1991     check-cast v8, Lcom/android/internal/telephony/SmsResponse;
1993     iget v8, v8, Lcom/android/internal/telephony/SmsResponse;->errorCode:I
1995     invoke-virtual {v1, v9, v8}, Landroid/content/Intent;->putExtra(Ljava/lang/String;I)Landroid/content/Intent;
1997     :cond_a2
1998     iget v8, p0, Lcom/android/internal/telephony/SMSDispatcher;->mRemainingMessages:I
2000     if-le v8, v10, :cond_ac
2002     iget v8, p0, Lcom/android/internal/telephony/SMSDispatcher;->mRemainingMessages:I
2004     add-int/lit8 v8, v8, -0x1
2006     iput v8, p0, Lcom/android/internal/telephony/SMSDispatcher;->mRemainingMessages:I
2008     :cond_ac
2009     iget v8, p0, Lcom/android/internal/telephony/SMSDispatcher;->mRemainingMessages:I
2011     if-nez v8, :cond_b6
2013     const-string v8, "SendNextMsg"
2015     const/4 v9, 0x1
2017     invoke-virtual {v1, v8, v9}, Landroid/content/Intent;->putExtra(Ljava/lang/String;Z)Landroid/content/Intent;
2019     :cond_b6
2020     iget-object v8, v7, Lcom/android/internal/telephony/SMSDispatcher$SmsTracker;->mSentIntent:Landroid/app/PendingIntent;
2022     iget-object v9, p0, Lcom/android/internal/telephony/SMSDispatcher;->mContext:Landroid/content/Context;
2024     invoke-virtual {v8, v9, v0, v1}, Landroid/app/PendingIntent;->send(Landroid/content/Context;ILandroid/content/Intent;)V
2025     :try_end_bd
2026     .catch Landroid/app/PendingIntent$CanceledException; {:try_start_8e .. :try_end_bd} :catch_be
2028     goto :goto_3e
2030     :catch_be
2031     move-exception v8
2033     goto/16 :goto_3e
2034 .end method
2036 .method protected processMessagePart([BLjava/lang/String;IIIJIZ)I
2037     .registers 34
2039     const/16 v20, 0x0
2041     check-cast v20, [[B
2043     const/4 v9, 0x0
2045     :try_start_5
2046     invoke-static/range {p3 .. p3}, Ljava/lang/Integer;->toString(I)Ljava/lang/String;
2048     move-result-object v21
2050     invoke-static/range {p4 .. p4}, Ljava/lang/Integer;->toString(I)Ljava/lang/String;
2052     move-result-object v22
2054     move-object/from16 v0, p0
2056     iget-object v3, v0, Lcom/android/internal/telephony/SMSDispatcher;->mResolver:Landroid/content/ContentResolver;
2058     sget-object v4, Lcom/android/internal/telephony/SMSDispatcher;->mRawUri:Landroid/net/Uri;
2060     sget-object v5, Lcom/android/internal/telephony/SMSDispatcher;->PDU_PROJECTION:[Ljava/lang/String;
2062     const-string v6, "address=? AND reference_number=? AND sequence=?"
2064     const/4 v8, 0x3
2066     new-array v7, v8, [Ljava/lang/String;
2068     const/4 v8, 0x0
2070     aput-object p2, v7, v8
2072     const/4 v8, 0x1
2074     aput-object v21, v7, v8
2076     const/4 v8, 0x2
2078     aput-object v22, v7, v8
2080     const/4 v8, 0x0
2082     invoke-virtual/range {v3 .. v8}, Landroid/content/ContentResolver;->query(Landroid/net/Uri;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor;
2084     move-result-object v9
2086     invoke-interface {v9}, Landroid/database/Cursor;->moveToNext()Z
2088     move-result v3
2090     if-eqz v3, :cond_a2
2092     const-string v3, "SMS"
2094     new-instance v4, Ljava/lang/StringBuilder;
2096     invoke-direct {v4}, Ljava/lang/StringBuilder;-><init>()V
2098     const-string v5, "Discarding duplicate message segment from address="
2100     invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
2102     move-result-object v4
2104     move-object/from16 v0, p2
2106     invoke-virtual {v4, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
2108     move-result-object v4
2110     const-string v5, " refNumber="
2112     invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
2114     move-result-object v4
2116     move-object/from16 v0, v21
2118     invoke-virtual {v4, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
2120     move-result-object v4
2122     const-string v5, " seqNumber="
2124     invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
2126     move-result-object v4
2128     move-object/from16 v0, v22
2130     invoke-virtual {v4, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
2132     move-result-object v4
2134     invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
2136     move-result-object v4
2138     invoke-static {v3, v4}, Landroid/util/Log;->w(Ljava/lang/String;Ljava/lang/String;)I
2140     const/4 v3, 0x0
2142     invoke-interface {v9, v3}, Landroid/database/Cursor;->getString(I)Ljava/lang/String;
2144     move-result-object v18
2146     invoke-static/range {v18 .. v18}, Lcom/android/internal/util/HexDump;->hexStringToByteArray(Ljava/lang/String;)[B
2148     move-result-object v17
2150     move-object/from16 v0, v17
2152     move-object/from16 v1, p1
2154     invoke-static {v0, v1}, Ljava/util/Arrays;->equals([B[B)Z
2156     move-result v3
2158     if-nez v3, :cond_9b
2160     const-string v3, "SMS"
2162     new-instance v4, Ljava/lang/StringBuilder;
2164     invoke-direct {v4}, Ljava/lang/StringBuilder;-><init>()V
2166     const-string v5, "Warning: dup message segment PDU of length "
2168     invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
2170     move-result-object v4
2172     move-object/from16 v0, p1
2174     array-length v5, v0
2176     invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
2178     move-result-object v4
2180     const-string v5, " is different from existing PDU of length "
2182     invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
2184     move-result-object v4
2186     move-object/from16 v0, v17
2188     array-length v5, v0
2190     invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
2192     move-result-object v4
2194     invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
2196     move-result-object v4
2198     invoke-static {v3, v4}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I
2199     :try_end_9b
2200     .catchall {:try_start_5 .. :try_end_9b} :catchall_19f
2201     .catch Landroid/database/SQLException; {:try_start_5 .. :try_end_9b} :catch_18f
2203     :cond_9b
2204     const/4 v3, 0x1
2206     if-eqz v9, :cond_a1
2208     invoke-interface {v9}, Landroid/database/Cursor;->close()V
2210     :cond_a1
2211     :goto_a1
2212     return v3
2214     :cond_a2
2215     :try_start_a2
2216     invoke-interface {v9}, Landroid/database/Cursor;->close()V
2218     const-string v6, "address=? AND reference_number=?"
2220     const/4 v3, 0x2
2222     new-array v7, v3, [Ljava/lang/String;
2224     const/4 v3, 0x0
2226     aput-object p2, v7, v3
2228     const/4 v3, 0x1
2230     aput-object v21, v7, v3
2232     move-object/from16 v0, p0
2234     iget-object v3, v0, Lcom/android/internal/telephony/SMSDispatcher;->mResolver:Landroid/content/ContentResolver;
2236     sget-object v4, Lcom/android/internal/telephony/SMSDispatcher;->mRawUri:Landroid/net/Uri;
2238     sget-object v5, Lcom/android/internal/telephony/SMSDispatcher;->PDU_SEQUENCE_PORT_PROJECTION:[Ljava/lang/String;
2240     const/4 v8, 0x0
2242     invoke-virtual/range {v3 .. v8}, Landroid/content/ContentResolver;->query(Landroid/net/Uri;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor;
2244     move-result-object v9
2246     invoke-interface {v9}, Landroid/database/Cursor;->getCount()I
2248     move-result v10
2250     add-int/lit8 v3, p5, -0x1
2252     if-eq v10, v3, :cond_12d
2254     new-instance v23, Landroid/content/ContentValues;
2256     invoke-direct/range {v23 .. v23}, Landroid/content/ContentValues;-><init>()V
2258     const-string v3, "date"
2260     invoke-static/range {p6 .. p7}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long;
2262     move-result-object v4
2264     move-object/from16 v0, v23
2266     invoke-virtual {v0, v3, v4}, Landroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/Long;)V
2268     const-string v3, "pdu"
2270     invoke-static/range {p1 .. p1}, Lcom/android/internal/util/HexDump;->toHexString([B)Ljava/lang/String;
2272     move-result-object v4
2274     move-object/from16 v0, v23
2276     invoke-virtual {v0, v3, v4}, Landroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/String;)V
2278     const-string v3, "address"
2280     move-object/from16 v0, v23
2282     move-object/from16 v1, p2
2284     invoke-virtual {v0, v3, v1}, Landroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/String;)V
2286     const-string v3, "reference_number"
2288     invoke-static/range {p3 .. p3}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
2290     move-result-object v4
2292     move-object/from16 v0, v23
2294     invoke-virtual {v0, v3, v4}, Landroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/Integer;)V
2296     const-string v3, "count"
2298     invoke-static/range {p5 .. p5}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
2300     move-result-object v4
2302     move-object/from16 v0, v23
2304     invoke-virtual {v0, v3, v4}, Landroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/Integer;)V
2306     const-string v3, "sequence"
2308     invoke-static/range {p4 .. p4}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
2310     move-result-object v4
2312     move-object/from16 v0, v23
2314     invoke-virtual {v0, v3, v4}, Landroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/Integer;)V
2316     const/4 v3, -0x1
2318     move/from16 v0, p8
2320     if-eq v0, v3, :cond_11a
2322     const-string v3, "destination_port"
2324     invoke-static/range {p8 .. p8}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
2326     move-result-object v4
2328     move-object/from16 v0, v23
2330     invoke-virtual {v0, v3, v4}, Landroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/Integer;)V
2332     :cond_11a
2333     move-object/from16 v0, p0
2335     iget-object v3, v0, Lcom/android/internal/telephony/SMSDispatcher;->mResolver:Landroid/content/ContentResolver;
2337     sget-object v4, Lcom/android/internal/telephony/SMSDispatcher;->mRawUri:Landroid/net/Uri;
2339     move-object/from16 v0, v23
2341     invoke-virtual {v3, v4, v0}, Landroid/content/ContentResolver;->insert(Landroid/net/Uri;Landroid/content/ContentValues;)Landroid/net/Uri;
2342     :try_end_125
2343     .catchall {:try_start_a2 .. :try_end_125} :catchall_19f
2344     .catch Landroid/database/SQLException; {:try_start_a2 .. :try_end_125} :catch_18f
2346     const/4 v3, 0x1
2348     if-eqz v9, :cond_a1
2350     invoke-interface {v9}, Landroid/database/Cursor;->close()V
2352     goto/16 :goto_a1
2354     :cond_12d
2355     :try_start_12d
2356     move/from16 v0, p5
2358     new-array v0, v0, [[B
2360     move-object/from16 v20, v0
2362     const/4 v15, 0x0
2364     :goto_134
2365     if-ge v15, v10, :cond_15e
2367     invoke-interface {v9}, Landroid/database/Cursor;->moveToNext()Z
2369     const/4 v3, 0x1
2371     invoke-interface {v9, v3}, Landroid/database/Cursor;->getInt(I)I
2373     move-result v11
2375     if-nez p9, :cond_142
2377     add-int/lit8 v11, v11, -0x1
2379     :cond_142
2380     const/4 v3, 0x0
2382     invoke-interface {v9, v3}, Landroid/database/Cursor;->getString(I)Ljava/lang/String;
2384     move-result-object v3
2386     invoke-static {v3}, Lcom/android/internal/util/HexDump;->hexStringToByteArray(Ljava/lang/String;)[B
2388     move-result-object v3
2390     aput-object v3, v20, v11
2392     if-nez v11, :cond_15b
2394     const/4 v3, 0x2
2396     invoke-interface {v9, v3}, Landroid/database/Cursor;->isNull(I)Z
2398     move-result v3
2400     if-nez v3, :cond_15b
2402     const/4 v3, 0x2
2404     invoke-interface {v9, v3}, Landroid/database/Cursor;->getInt(I)I
2406     move-result p8
2408     :cond_15b
2409     add-int/lit8 v15, v15, 0x1
2411     goto :goto_134
2413     :cond_15e
2414     if-eqz p9, :cond_18a
2416     aput-object p1, v20, p4
2418     :goto_162
2419     move-object/from16 v0, p0
2421     iget-object v3, v0, Lcom/android/internal/telephony/SMSDispatcher;->mResolver:Landroid/content/ContentResolver;
2423     sget-object v4, Lcom/android/internal/telephony/SMSDispatcher;->mRawUri:Landroid/net/Uri;
2425     invoke-virtual {v3, v4, v6, v7}, Landroid/content/ContentResolver;->delete(Landroid/net/Uri;Ljava/lang/String;[Ljava/lang/String;)I
2426     :try_end_16b
2427     .catchall {:try_start_12d .. :try_end_16b} :catchall_19f
2428     .catch Landroid/database/SQLException; {:try_start_12d .. :try_end_16b} :catch_18f
2430     if-eqz v9, :cond_170
2432     invoke-interface {v9}, Landroid/database/Cursor;->close()V
2434     :cond_170
2435     if-eqz p9, :cond_1ce
2437     new-instance v19, Ljava/io/ByteArrayOutputStream;
2439     invoke-direct/range {v19 .. v19}, Ljava/io/ByteArrayOutputStream;-><init>()V
2441     const/4 v15, 0x0
2443     :goto_178
2444     move/from16 v0, p5
2446     if-ge v15, v0, :cond_1a6
2448     aget-object v3, v20, v15
2450     const/4 v4, 0x0
2452     aget-object v5, v20, v15
2454     array-length v5, v5
2456     move-object/from16 v0, v19
2458     invoke-virtual {v0, v3, v4, v5}, Ljava/io/ByteArrayOutputStream;->write([BII)V
2460     add-int/lit8 v15, v15, 0x1
2462     goto :goto_178
2464     :cond_18a
2465     add-int/lit8 v3, p4, -0x1
2467     :try_start_18c
2468     aput-object p1, v20, v3
2469     :try_end_18e
2470     .catchall {:try_start_18c .. :try_end_18e} :catchall_19f
2471     .catch Landroid/database/SQLException; {:try_start_18c .. :try_end_18e} :catch_18f
2473     goto :goto_162
2475     :catch_18f
2476     move-exception v14
2478     :try_start_190
2479     const-string v3, "SMS"
2481     const-string v4, "Can\'t access multipart SMS database"
2483     invoke-static {v3, v4, v14}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
2484     :try_end_197
2485     .catchall {:try_start_190 .. :try_end_197} :catchall_19f
2487     const/4 v3, 0x2
2489     if-eqz v9, :cond_a1
2491     invoke-interface {v9}, Landroid/database/Cursor;->close()V
2493     goto/16 :goto_a1
2495     :catchall_19f
2496     move-exception v3
2498     if-eqz v9, :cond_1a5
2500     invoke-interface {v9}, Landroid/database/Cursor;->close()V
2502     :cond_1a5
2503     throw v3
2505     :cond_1a6
2506     invoke-virtual/range {v19 .. v19}, Ljava/io/ByteArrayOutputStream;->toByteArray()[B
2508     move-result-object v13
2510     const/16 v3, 0xb84
2512     move/from16 v0, p8
2514     if-ne v0, v3, :cond_1ba
2516     move-object/from16 v0, p0
2518     iget-object v3, v0, Lcom/android/internal/telephony/SMSDispatcher;->mWapPush:Lcom/android/internal/telephony/WapPushOverSms;
2520     invoke-virtual {v3, v13}, Lcom/android/internal/telephony/WapPushOverSms;->dispatchWapPdu([B)I
2522     move-result v3
2524     goto/16 :goto_a1
2526     :cond_1ba
2527     const/4 v3, 0x1
2529     new-array v0, v3, [[B
2531     move-object/from16 v20, v0
2533     const/4 v3, 0x0
2535     aput-object v13, v20, v3
2537     move-object/from16 v0, p0
2539     move-object/from16 v1, v20
2541     move/from16 v2, p8
2543     invoke-virtual {v0, v1, v2}, Lcom/android/internal/telephony/SMSDispatcher;->dispatchPortAddressedPdus([[BI)V
2545     const/4 v3, -0x1
2547     goto/16 :goto_a1
2549     :cond_1ce
2550     const/4 v3, -0x1
2552     move/from16 v0, p8
2554     if-eq v0, v3, :cond_215
2556     const/16 v3, 0xb84
2558     move/from16 v0, p8
2560     if-ne v0, v3, :cond_209
2562     new-instance v19, Ljava/io/ByteArrayOutputStream;
2564     invoke-direct/range {v19 .. v19}, Ljava/io/ByteArrayOutputStream;-><init>()V
2566     const/4 v15, 0x0
2568     :goto_1df
2569     move/from16 v0, p5
2571     if-ge v15, v0, :cond_1fb
2573     aget-object v3, v20, v15
2575     invoke-virtual/range {p0 .. p0}, Lcom/android/internal/telephony/SMSDispatcher;->getFormat()Ljava/lang/String;
2577     move-result-object v4
2579     invoke-static {v3, v4}, Landroid/telephony/SmsMessage;->createFromPdu([BLjava/lang/String;)Landroid/telephony/SmsMessage;
2581     move-result-object v16
2583     invoke-virtual/range {v16 .. v16}, Landroid/telephony/SmsMessage;->getUserData()[B
2585     move-result-object v12
2587     const/4 v3, 0x0
2589     array-length v4, v12
2591     move-object/from16 v0, v19
2593     invoke-virtual {v0, v12, v3, v4}, Ljava/io/ByteArrayOutputStream;->write([BII)V
2595     add-int/lit8 v15, v15, 0x1
2597     goto :goto_1df
2599     :cond_1fb
2600     move-object/from16 v0, p0
2602     iget-object v3, v0, Lcom/android/internal/telephony/SMSDispatcher;->mWapPush:Lcom/android/internal/telephony/WapPushOverSms;
2604     invoke-virtual/range {v19 .. v19}, Ljava/io/ByteArrayOutputStream;->toByteArray()[B
2606     move-result-object v4
2608     invoke-virtual {v3, v4}, Lcom/android/internal/telephony/WapPushOverSms;->dispatchWapPdu([B)I
2610     move-result v3
2612     goto/16 :goto_a1
2614     :cond_209
2615     move-object/from16 v0, p0
2617     move-object/from16 v1, v20
2619     move/from16 v2, p8
2621     invoke-virtual {v0, v1, v2}, Lcom/android/internal/telephony/SMSDispatcher;->dispatchPortAddressedPdus([[BI)V
2623     :goto_212
2624     const/4 v3, -0x1
2626     goto/16 :goto_a1
2628     :cond_215
2629     move-object/from16 v0, p0
2631     move-object/from16 v1, v20
2633     invoke-virtual {v0, v1}, Lcom/android/internal/telephony/SMSDispatcher;->dispatchPdus([[B)V
2635     goto :goto_212
2636 .end method
2638 .method protected abstract sendData(Ljava/lang/String;Ljava/lang/String;I[BLandroid/app/PendingIntent;Landroid/app/PendingIntent;)V
2639 .end method
2641 .method protected sendMultipartText(Ljava/lang/String;Ljava/lang/String;Ljava/util/ArrayList;Ljava/util/ArrayList;Ljava/util/ArrayList;)V
2642     .registers 22
2643     .annotation system Ldalvik/annotation/Signature;
2644         value = {
2645             "(",
2646             "Ljava/lang/String;",
2647             "Ljava/lang/String;",
2648             "Ljava/util/ArrayList",
2649             "<",
2650             "Ljava/lang/String;",
2651             ">;",
2652             "Ljava/util/ArrayList",
2653             "<",
2654             "Landroid/app/PendingIntent;",
2655             ">;",
2656             "Ljava/util/ArrayList",
2657             "<",
2658             "Landroid/app/PendingIntent;",
2659             ">;)V"
2660         }
2661     .end annotation
2663     invoke-static {}, Lcom/android/internal/telephony/SMSDispatcher;->getNextConcatenatedRef()I
2665     move-result v1
2667     and-int/lit16 v15, v1, 0xff
2669     invoke-virtual/range {p3 .. p3}, Ljava/util/ArrayList;->size()I
2671     move-result v14
2673     const/4 v6, 0x0
2675     move-object/from16 v0, p0
2677     iput v14, v0, Lcom/android/internal/telephony/SMSDispatcher;->mRemainingMessages:I
2679     new-array v12, v14, [Lcom/android/internal/telephony/GsmAlphabet$TextEncodingDetails;
2681     const/4 v13, 0x0
2683     :goto_12
2684     if-ge v13, v14, :cond_33
2686     move-object/from16 v0, p3
2688     invoke-virtual {v0, v13}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
2690     move-result-object v1
2692     check-cast v1, Ljava/lang/CharSequence;
2694     const/4 v2, 0x0
2696     move-object/from16 v0, p0
2698     invoke-virtual {v0, v1, v2}, Lcom/android/internal/telephony/SMSDispatcher;->calculateLength(Ljava/lang/CharSequence;Z)Lcom/android/internal/telephony/GsmAlphabet$TextEncodingDetails;
2700     move-result-object v11
2702     iget v1, v11, Lcom/android/internal/telephony/GsmAlphabet$TextEncodingDetails;->codeUnitSize:I
2704     if-eq v6, v1, :cond_2e
2706     if-eqz v6, :cond_2c
2708     const/4 v1, 0x1
2710     if-ne v6, v1, :cond_2e
2712     :cond_2c
2713     iget v6, v11, Lcom/android/internal/telephony/GsmAlphabet$TextEncodingDetails;->codeUnitSize:I
2715     :cond_2e
2716     aput-object v11, v12, v13
2718     add-int/lit8 v13, v13, 0x1
2720     goto :goto_12
2722     :cond_33
2723     const/4 v13, 0x0
2725     :goto_34
2726     if-ge v13, v14, :cond_99
2728     new-instance v10, Lcom/android/internal/telephony/SmsHeader$ConcatRef;
2730     invoke-direct {v10}, Lcom/android/internal/telephony/SmsHeader$ConcatRef;-><init>()V
2732     iput v15, v10, Lcom/android/internal/telephony/SmsHeader$ConcatRef;->refNumber:I
2734     add-int/lit8 v1, v13, 0x1
2736     iput v1, v10, Lcom/android/internal/telephony/SmsHeader$ConcatRef;->seqNumber:I
2738     iput v14, v10, Lcom/android/internal/telephony/SmsHeader$ConcatRef;->msgCount:I
2740     const/4 v1, 0x1
2742     iput-boolean v1, v10, Lcom/android/internal/telephony/SmsHeader$ConcatRef;->isEightBits:Z
2744     new-instance v5, Lcom/android/internal/telephony/SmsHeader;
2746     invoke-direct {v5}, Lcom/android/internal/telephony/SmsHeader;-><init>()V
2748     iput-object v10, v5, Lcom/android/internal/telephony/SmsHeader;->concatRef:Lcom/android/internal/telephony/SmsHeader$ConcatRef;
2750     const/4 v1, 0x1
2752     if-ne v6, v1, :cond_5c
2754     aget-object v1, v12, v13
2756     iget v1, v1, Lcom/android/internal/telephony/GsmAlphabet$TextEncodingDetails;->languageTable:I
2758     iput v1, v5, Lcom/android/internal/telephony/SmsHeader;->languageTable:I
2760     aget-object v1, v12, v13
2762     iget v1, v1, Lcom/android/internal/telephony/GsmAlphabet$TextEncodingDetails;->languageShiftTable:I
2764     iput v1, v5, Lcom/android/internal/telephony/SmsHeader;->languageShiftTable:I
2766     :cond_5c
2767     const/4 v7, 0x0
2769     if-eqz p4, :cond_6d
2771     invoke-virtual/range {p4 .. p4}, Ljava/util/ArrayList;->size()I
2773     move-result v1
2775     if-le v1, v13, :cond_6d
2777     move-object/from16 v0, p4
2779     invoke-virtual {v0, v13}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
2781     move-result-object v7
2783     check-cast v7, Landroid/app/PendingIntent;
2785     :cond_6d
2786     const/4 v8, 0x0
2788     if-eqz p5, :cond_7e
2790     invoke-virtual/range {p5 .. p5}, Ljava/util/ArrayList;->size()I
2792     move-result v1
2794     if-le v1, v13, :cond_7e
2796     move-object/from16 v0, p5
2798     invoke-virtual {v0, v13}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
2800     move-result-object v8
2802     check-cast v8, Landroid/app/PendingIntent;
2804     :cond_7e
2805     move-object/from16 v0, p3
2807     invoke-virtual {v0, v13}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
2809     move-result-object v4
2811     check-cast v4, Ljava/lang/String;
2813     add-int/lit8 v1, v14, -0x1
2815     if-ne v13, v1, :cond_97
2817     const/4 v9, 0x1
2819     :goto_8b
2820     move-object/from16 v1, p0
2822     move-object/from16 v2, p1
2824     move-object/from16 v3, p2
2826     invoke-virtual/range {v1 .. v9}, Lcom/android/internal/telephony/SMSDispatcher;->sendNewSubmitPdu(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/android/internal/telephony/SmsHeader;ILandroid/app/PendingIntent;Landroid/app/PendingIntent;Z)V
2828     add-int/lit8 v13, v13, 0x1
2830     goto :goto_34
2832     :cond_97
2833     const/4 v9, 0x0
2835     goto :goto_8b
2837     :cond_99
2838     return-void
2839 .end method
2841 .method protected abstract sendNewSubmitPdu(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/android/internal/telephony/SmsHeader;ILandroid/app/PendingIntent;Landroid/app/PendingIntent;Z)V
2842 .end method
2844 .method protected sendRawPdu([B[BLandroid/app/PendingIntent;Landroid/app/PendingIntent;Ljava/lang/String;)V
2845     .registers 17
2847     iget-boolean v2, p0, Lcom/android/internal/telephony/SMSDispatcher;->mSmsSendDisabled:Z
2849     if-eqz v2, :cond_12
2851     if-eqz p3, :cond_a
2853     const/4 v2, 0x4
2855     :try_start_7
2856     invoke-virtual {p3, v2}, Landroid/app/PendingIntent;->send(I)V
2857     :try_end_a
2858     .catch Landroid/app/PendingIntent$CanceledException; {:try_start_7 .. :try_end_a} :catch_b7
2860     :cond_a
2861     :goto_a
2862     const-string v2, "SMS"
2864     const-string v3, "Device does not support sending sms."
2866     invoke-static {v2, v3}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I
2868     :cond_11
2869     :goto_11
2870     return-void
2872     :cond_12
2873     if-nez p2, :cond_1d
2875     if-eqz p3, :cond_11
2877     const/4 v2, 0x3
2879     :try_start_17
2880     invoke-virtual {p3, v2}, Landroid/app/PendingIntent;->send(I)V
2881     :try_end_1a
2882     .catch Landroid/app/PendingIntent$CanceledException; {:try_start_17 .. :try_end_1a} :catch_1b
2884     goto :goto_11
2886     :catch_1b
2887     move-exception v2
2889     goto :goto_11
2891     :cond_1d
2892     new-instance v1, Ljava/util/HashMap;
2894     invoke-direct {v1}, Ljava/util/HashMap;-><init>()V
2896     const-string v2, "smsc"
2898     invoke-virtual {v1, v2, p1}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
2900     const-string v2, "pdu"
2902     invoke-virtual {v1, v2, p2}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
2904     iget-object v2, p0, Lcom/android/internal/telephony/SMSDispatcher;->mContext:Landroid/content/Context;
2906     invoke-virtual {v2}, Landroid/content/Context;->getPackageManager()Landroid/content/pm/PackageManager;
2908     move-result-object v9
2910     invoke-static {}, Landroid/os/Binder;->getCallingUid()I
2912     move-result v2
2914     invoke-virtual {v9, v2}, Landroid/content/pm/PackageManager;->getPackagesForUid(I)[Ljava/lang/String;
2916     move-result-object v8
2918     if-eqz v8, :cond_3f
2920     array-length v2, v8
2922     if-nez v2, :cond_56
2924     :cond_3f
2925     const-string v2, "SMS"
2927     const-string v3, "Can\'t get calling app package name: refusing to send SMS"
2929     invoke-static {v2, v3}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I
2931     if-eqz p3, :cond_11
2933     const/4 v2, 0x1
2935     :try_start_49
2936     invoke-virtual {p3, v2}, Landroid/app/PendingIntent;->send(I)V
2937     :try_end_4c
2938     .catch Landroid/app/PendingIntent$CanceledException; {:try_start_49 .. :try_end_4c} :catch_4d
2940     goto :goto_11
2942     :catch_4d
2943     move-exception v7
2945     const-string v2, "SMS"
2947     const-string v3, "failed to send error result"
2949     invoke-static {v2, v3}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I
2951     goto :goto_11
2953     :cond_56
2954     const/4 v4, 0x0
2956     const/4 v2, 0x0
2958     :try_start_58
2959     aget-object v2, v8, v2
2961     const/16 v3, 0x40
2963     invoke-virtual {v9, v2, v3}, Landroid/content/pm/PackageManager;->getPackageInfo(Ljava/lang/String;I)Landroid/content/pm/PackageInfo;
2964     :try_end_5f
2965     .catch Landroid/content/pm/PackageManager$NameNotFoundException; {:try_start_58 .. :try_end_5f} :catch_85
2967     move-result-object v4
2969     new-instance v0, Lcom/android/internal/telephony/SMSDispatcher$SmsTracker;
2971     invoke-static/range {p5 .. p5}, Landroid/telephony/PhoneNumberUtils;->extractNetworkPortion(Ljava/lang/String;)Ljava/lang/String;
2973     move-result-object v5
2975     move-object v2, p3
2977     move-object v3, p4
2979     invoke-direct/range {v0 .. v5}, Lcom/android/internal/telephony/SMSDispatcher$SmsTracker;-><init>(Ljava/util/HashMap;Landroid/app/PendingIntent;Landroid/app/PendingIntent;Landroid/content/pm/PackageInfo;Ljava/lang/String;)V
2981     invoke-virtual {p0, v0}, Lcom/android/internal/telephony/SMSDispatcher;->checkDestination(Lcom/android/internal/telephony/SMSDispatcher$SmsTracker;)Z
2983     move-result v2
2985     if-eqz v2, :cond_11
2987     iget-object v2, p0, Lcom/android/internal/telephony/SMSDispatcher;->mUsageMonitor:Lcom/android/internal/telephony/SmsUsageMonitor;
2989     iget-object v3, v4, Landroid/content/pm/PackageInfo;->packageName:Ljava/lang/String;
2991     const/4 v5, 0x1
2993     invoke-virtual {v2, v3, v5}, Lcom/android/internal/telephony/SmsUsageMonitor;->check(Ljava/lang/String;I)Z
2995     move-result v2
2997     if-nez v2, :cond_9f
2999     const/4 v2, 0x4
3001     invoke-virtual {p0, v2, v0}, Lcom/android/internal/telephony/SMSDispatcher;->obtainMessage(ILjava/lang/Object;)Landroid/os/Message;
3003     move-result-object v2
3005     invoke-virtual {p0, v2}, Lcom/android/internal/telephony/SMSDispatcher;->sendMessage(Landroid/os/Message;)Z
3007     goto :goto_11
3009     :catch_85
3010     move-exception v6
3012     const-string v2, "SMS"
3014     const-string v3, "Can\'t get calling app package info: refusing to send SMS"
3016     invoke-static {v2, v3}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I
3018     if-eqz p3, :cond_11
3020     const/4 v2, 0x1
3022     :try_start_90
3023     invoke-virtual {p3, v2}, Landroid/app/PendingIntent;->send(I)V
3024     :try_end_93
3025     .catch Landroid/app/PendingIntent$CanceledException; {:try_start_90 .. :try_end_93} :catch_95
3027     goto/16 :goto_11
3029     :catch_95
3030     move-exception v7
3032     const-string v2, "SMS"
3034     const-string v3, "failed to send error result"
3036     invoke-static {v2, v3}, Landroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I
3038     goto/16 :goto_11
3040     :cond_9f
3041     iget-object v2, p0, Lcom/android/internal/telephony/SMSDispatcher;->mPhone:Lcom/android/internal/telephony/Phone;
3043     invoke-interface {v2}, Lcom/android/internal/telephony/Phone;->getServiceState()Landroid/telephony/ServiceState;
3045     move-result-object v2
3047     invoke-virtual {v2}, Landroid/telephony/ServiceState;->getState()I
3049     move-result v10
3051     if-eqz v10, :cond_b2
3053     iget-object v2, v0, Lcom/android/internal/telephony/SMSDispatcher$SmsTracker;->mSentIntent:Landroid/app/PendingIntent;
3055     invoke-static {v10, v2}, Lcom/android/internal/telephony/SMSDispatcher;->handleNotInService(ILandroid/app/PendingIntent;)V
3057     goto/16 :goto_11
3059     :cond_b2
3060     invoke-virtual {p0, v0}, Lcom/android/internal/telephony/SMSDispatcher;->sendSms(Lcom/android/internal/telephony/SMSDispatcher$SmsTracker;)V
3062     goto/16 :goto_11
3064     :catch_b7
3065     move-exception v2
3067     goto/16 :goto_a
3068 .end method
3070 .method protected abstract sendSms(Lcom/android/internal/telephony/SMSDispatcher$SmsTracker;)V
3071 .end method
3073 .method protected abstract sendText(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/app/PendingIntent;Landroid/app/PendingIntent;)V
3074 .end method
3076 .method public setPremiumSmsPermission(Ljava/lang/String;I)V
3077     .registers 4
3079     iget-object v0, p0, Lcom/android/internal/telephony/SMSDispatcher;->mUsageMonitor:Lcom/android/internal/telephony/SmsUsageMonitor;
3081     invoke-virtual {v0, p1, p2}, Lcom/android/internal/telephony/SmsUsageMonitor;->setPremiumSmsPermission(Ljava/lang/String;I)V
3083     return-void
3084 .end method