1 .class public abstract Lcom/android/internal/telephony/SMSDispatcher;
2 .super Landroid/os/Handler;
3 .source "SMSDispatcher.java"
7 .annotation system Ldalvik/annotation/MemberClasses;
9 Lcom/android/internal/telephony/SMSDispatcher$ConfirmDialogListener;,
10 Lcom/android/internal/telephony/SMSDispatcher$SmsTracker;,
11 Lcom/android/internal/telephony/SMSDispatcher$SettingsObserver;
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
75 .field protected final deliveryPendingList:Ljava/util/ArrayList;
76 .annotation system Ldalvik/annotation/Signature;
78 "Ljava/util/ArrayList",
80 "Lcom/android/internal/telephony/SMSDispatcher$SmsTracker;",
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;
122 .method static constructor <clinit>()V
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;
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
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
173 invoke-virtual {v0, v1}, Ljava/util/Random;->nextInt(I)I
177 sput v0, Lcom/android/internal/telephony/SMSDispatcher;->sConcatenatedRef:I
182 .method protected constructor <init>(Lcom/android/internal/telephony/PhoneBase;Lcom/android/internal/telephony/SmsStorageMonitor;Lcom/android/internal/telephony/SmsUsageMonitor;)V
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
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
293 invoke-virtual {v0, v3}, Landroid/content/res/Resources;->getBoolean(I)Z
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
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
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
402 .method private createWakelock()V
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
432 .method private denyIfQueueLimitReached(Lcom/android/internal/telephony/SMSDispatcher$SmsTracker;)Z
437 iget v1, p0, Lcom/android/internal/telephony/SMSDispatcher;->mPendingTrackerCount:I
439 if-lt v1, v2, :cond_16
442 iget-object v1, p1, Lcom/android/internal/telephony/SMSDispatcher$SmsTracker;->mSentIntent:Landroid/app/PendingIntent;
446 invoke-virtual {v1, v2}, Landroid/app/PendingIntent;->send(I)V
448 .catch Landroid/app/PendingIntent$CanceledException; {:try_start_5 .. :try_end_b} :catch_d
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
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
479 .method private getAppLabel(Ljava/lang/String;)Ljava/lang/CharSequence;
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
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;
497 .catch Landroid/content/pm/PackageManager$NameNotFoundException; {:try_start_7 .. :try_end_e} :catch_10
499 move-result-object p1
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
532 .method protected static getNextConcatenatedRef()I
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
546 .method protected static handleNotInService(ILandroid/app/PendingIntent;)V
553 if-ne p0, v0, :cond_a
558 invoke-virtual {p1, v0}, Landroid/app/PendingIntent;->send(I)V
567 invoke-virtual {p1, v0}, Landroid/app/PendingIntent;->send(I)V
569 .catch Landroid/app/PendingIntent$CanceledException; {:try_start_6 .. :try_end_e} :catch_f
579 .method private notifyAndAcknowledgeLastIncomingSms(ZILandroid/os/Message;)V
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
607 invoke-virtual {p0, p1, p2, p3}, Lcom/android/internal/telephony/SMSDispatcher;->acknowledgeLastIncomingSms(ZILandroid/os/Message;)V
612 .method private sendMultipartSms(Lcom/android/internal/telephony/SMSDispatcher$SmsTracker;)V
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
671 invoke-virtual {v3}, Ljava/util/ArrayList;->size()I
676 if-ge v7, v6, :cond_56
682 invoke-virtual {v4}, Ljava/util/ArrayList;->size()I
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;
695 invoke-static {v10, v9}, Lcom/android/internal/telephony/SMSDispatcher;->handleNotInService(ILandroid/app/PendingIntent;)V
697 add-int/lit8 v7, v7, 0x1
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
712 .method protected abstract acknowledgeLastIncomingSms(ZILandroid/os/Message;)V
715 .method protected abstract calculateLength(Ljava/lang/CharSequence;Z)Lcom/android/internal/telephony/GsmAlphabet$TextEncodingDetails;
718 .method checkDestination(Lcom/android/internal/telephony/SMSDispatcher$SmsTracker;)Z
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
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
752 if-eq v3, v6, :cond_1a
754 if-ne v3, v11, :cond_3d
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
765 invoke-virtual {v4}, Ljava/lang/String;->length()I
769 if-eq v8, v10, :cond_35
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
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
794 if-eq v3, v10, :cond_41
796 if-ne v3, v11, :cond_6a
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
807 invoke-virtual {v1}, Ljava/lang/String;->length()I
811 if-eq v8, v10, :cond_5c
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
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
837 invoke-static {v5, v8}, Lcom/android/internal/telephony/SmsUsageMonitor;->mergeShortCodeCategories(II)I
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
863 packed-switch v2, :pswitch_data_ac
865 if-ne v5, v11, :cond_a8
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
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
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
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
922 .method public dispatch(Landroid/content/Intent;Ljava/lang/String;)V
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;
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
952 .method public dispatch(Landroid/content/Intent;Ljava/lang/String;Landroid/content/BroadcastReceiver;)V
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;
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
982 .method protected dispatchBroadcastMessage(Landroid/telephony/SmsCbMessage;)V
985 invoke-virtual {p1}, Landroid/telephony/SmsCbMessage;->isEmergencyMessage()Z
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
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
1038 .method public abstract dispatchMessage(Lcom/android/internal/telephony/SmsMessageBase;)I
1041 .method protected dispatchNormalMessage(Lcom/android/internal/telephony/SmsMessageBase;)I
1048 invoke-virtual {p1}, Lcom/android/internal/telephony/SmsMessageBase;->getUserDataHeader()Lcom/android/internal/telephony/SmsHeader;
1050 move-result-object v13
1054 iget-object v0, v13, Lcom/android/internal/telephony/SmsHeader;->concatRef:Lcom/android/internal/telephony/SmsHeader$ConcatRef;
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;
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
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
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
1106 invoke-virtual {p0, v11}, Lcom/android/internal/telephony/SMSDispatcher;->dispatchPdus([[B)V
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
1133 if-eqz v12, :cond_54
1135 iget v8, v12, Lcom/android/internal/telephony/SmsHeader$PortAddrs;->destPort:I
1140 invoke-virtual/range {v0 .. v9}, Lcom/android/internal/telephony/SMSDispatcher;->processMessagePart([BLjava/lang/String;IIIJIZ)I
1147 .method protected dispatchPdus([[B)V
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
1175 .method protected dispatchPortAddressedPdus([[BI)V
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
1225 .method public abstract dispose()V
1228 .method protected finalize()V
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
1240 .method protected abstract getFormat()Ljava/lang/String;
1243 .method public getPremiumSmsPermission(Ljava/lang/String;)I
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
1255 .method protected handleConfirmShortCode(ZLcom/android/internal/telephony/SMSDispatcher$SmsTracker;)V
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
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
1297 new-array v15, v15, [Ljava/lang/Object;
1301 aput-object v2, v15, v16
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
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
1441 invoke-virtual {v14, v15}, Landroid/view/Window;->setType(I)V
1443 invoke-virtual {v3}, Landroid/app/AlertDialog;->show()V
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
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
1469 .method public handleMessage(Landroid/os/Message;)V
1478 iget v6, p1, Landroid/os/Message;->what:I
1480 packed-switch v6, :pswitch_data_b6
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;
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
1523 iget-object v4, v0, Landroid/os/AsyncResult;->result:Ljava/lang/Object;
1525 check-cast v4, Landroid/telephony/SmsMessage;
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
1536 if-eq v3, v6, :cond_8
1538 if-ne v3, v2, :cond_4d
1543 invoke-direct {p0, v2, v3, v6}, Lcom/android/internal/telephony/SMSDispatcher;->notifyAndAcknowledgeLastIncomingSms(ZILandroid/os/Message;)V
1545 .catch Ljava/lang/RuntimeException; {:try_start_30 .. :try_end_3f} :catch_40
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
1560 invoke-direct {p0, v7, v6, v9}, Lcom/android/internal/telephony/SMSDispatcher;->notifyAndAcknowledgeLastIncomingSms(ZILandroid/os/Message;)V
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
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
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
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
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
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
1631 invoke-direct {p0, v5}, Lcom/android/internal/telephony/SMSDispatcher;->sendMultipartSms(Lcom/android/internal/telephony/SMSDispatcher$SmsTracker;)V
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
1643 invoke-virtual {p0, v5}, Lcom/android/internal/telephony/SMSDispatcher;->sendSms(Lcom/android/internal/telephony/SMSDispatcher$SmsTracker;)V
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;
1657 iget-object v6, v5, Lcom/android/internal/telephony/SMSDispatcher$SmsTracker;->mSentIntent:Landroid/app/PendingIntent;
1661 invoke-virtual {v6, v7}, Landroid/app/PendingIntent;->send(I)V
1663 .catch Landroid/app/PendingIntent$CanceledException; {:try_start_9e .. :try_end_a4} :catch_ac
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
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
1702 .method protected handleReachSentLimit(Lcom/android/internal/telephony/SMSDispatcher$SmsTracker;)V
1705 invoke-direct {p0, p1}, Lcom/android/internal/telephony/SMSDispatcher;->denyIfQueueLimitReached(Lcom/android/internal/telephony/SMSDispatcher$SmsTracker;)Z
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
1731 new-array v6, v6, [Ljava/lang/Object;
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;
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
1759 invoke-virtual {v5, v6}, Landroid/app/AlertDialog$Builder;->setTitle(I)Landroid/app/AlertDialog$Builder;
1761 move-result-object v5
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
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
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
1807 invoke-virtual {v5, v6}, Landroid/view/Window;->setType(I)V
1809 invoke-virtual {v1}, Landroid/app/AlertDialog;->show()V
1814 .method protected handleSendComplete(Landroid/os/AsyncResult;)V
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;
1831 iget-object v8, v7, Lcom/android/internal/telephony/SMSDispatcher$SmsTracker;->mDeliveryIntent:Landroid/app/PendingIntent;
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
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
1862 iget v8, p0, Lcom/android/internal/telephony/SMSDispatcher;->mRemainingMessages:I
1866 new-instance v4, Landroid/content/Intent;
1868 invoke-direct {v4}, Landroid/content/Intent;-><init>()V
1870 const-string v8, "SendNextMsg"
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;
1880 invoke-virtual {v5, v8, v9, v4}, Landroid/app/PendingIntent;->send(Landroid/content/Context;ILandroid/content/Intent;)V
1889 invoke-virtual {v5, v8}, Landroid/app/PendingIntent;->send(I)V
1891 .catch Landroid/app/PendingIntent$CanceledException; {:try_start_1f .. :try_end_43} :catch_44
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
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
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
1955 iget-object v8, v7, Lcom/android/internal/telephony/SMSDispatcher$SmsTracker;->mSentIntent:Landroid/app/PendingIntent;
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
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;
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;
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
2009 iget v8, p0, Lcom/android/internal/telephony/SMSDispatcher;->mRemainingMessages:I
2013 const-string v8, "SendNextMsg"
2017 invoke-virtual {v1, v8, v9}, Landroid/content/Intent;->putExtra(Ljava/lang/String;Z)Landroid/content/Intent;
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
2026 .catch Landroid/app/PendingIntent$CanceledException; {:try_start_8e .. :try_end_bd} :catch_be
2036 .method protected processMessagePart([BLjava/lang/String;IIIJIZ)I
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=?"
2066 new-array v7, v8, [Ljava/lang/String;
2070 aput-object p2, v7, v8
2074 aput-object v21, v7, v8
2078 aput-object v22, v7, v8
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
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
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
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
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
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
2200 .catchall {:try_start_5 .. :try_end_9b} :catchall_19f
2201 .catch Landroid/database/SQLException; {:try_start_5 .. :try_end_9b} :catch_18f
2208 invoke-interface {v9}, Landroid/database/Cursor;->close()V
2216 invoke-interface {v9}, Landroid/database/Cursor;->close()V
2218 const-string v6, "address=? AND reference_number=?"
2222 new-array v7, v3, [Ljava/lang/String;
2226 aput-object p2, v7, v3
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;
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
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
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
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;
2343 .catchall {:try_start_a2 .. :try_end_125} :catchall_19f
2344 .catch Landroid/database/SQLException; {:try_start_a2 .. :try_end_125} :catch_18f
2350 invoke-interface {v9}, Landroid/database/Cursor;->close()V
2358 new-array v0, v0, [[B
2360 move-object/from16 v20, v0
2365 if-ge v15, v10, :cond_15e
2367 invoke-interface {v9}, Landroid/database/Cursor;->moveToNext()Z
2371 invoke-interface {v9, v3}, Landroid/database/Cursor;->getInt(I)I
2375 if-nez p9, :cond_142
2377 add-int/lit8 v11, v11, -0x1
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
2396 invoke-interface {v9, v3}, Landroid/database/Cursor;->isNull(I)Z
2400 if-nez v3, :cond_15b
2404 invoke-interface {v9, v3}, Landroid/database/Cursor;->getInt(I)I
2409 add-int/lit8 v15, v15, 0x1
2414 if-eqz p9, :cond_18a
2416 aput-object p1, v20, p4
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
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
2435 if-eqz p9, :cond_1ce
2437 new-instance v19, Ljava/io/ByteArrayOutputStream;
2439 invoke-direct/range {v19 .. v19}, Ljava/io/ByteArrayOutputStream;-><init>()V
2446 if-ge v15, v0, :cond_1a6
2448 aget-object v3, v20, v15
2452 aget-object v5, v20, v15
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
2465 add-int/lit8 v3, p4, -0x1
2468 aput-object p1, v20, v3
2470 .catchall {:try_start_18c .. :try_end_18e} :catchall_19f
2471 .catch Landroid/database/SQLException; {:try_start_18c .. :try_end_18e} :catch_18f
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
2485 .catchall {:try_start_190 .. :try_end_197} :catchall_19f
2491 invoke-interface {v9}, Landroid/database/Cursor;->close()V
2498 if-eqz v9, :cond_1a5
2500 invoke-interface {v9}, Landroid/database/Cursor;->close()V
2506 invoke-virtual/range {v19 .. v19}, Ljava/io/ByteArrayOutputStream;->toByteArray()[B
2508 move-result-object v13
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
2529 new-array v0, v3, [[B
2531 move-object/from16 v20, v0
2535 aput-object v13, v20, v3
2537 move-object/from16 v0, p0
2539 move-object/from16 v1, v20
2543 invoke-virtual {v0, v1, v2}, Lcom/android/internal/telephony/SMSDispatcher;->dispatchPortAddressedPdus([[BI)V
2554 if-eq v0, v3, :cond_215
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
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
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
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
2615 move-object/from16 v0, p0
2617 move-object/from16 v1, v20
2621 invoke-virtual {v0, v1, v2}, Lcom/android/internal/telephony/SMSDispatcher;->dispatchPortAddressedPdus([[BI)V
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
2638 .method protected abstract sendData(Ljava/lang/String;Ljava/lang/String;I[BLandroid/app/PendingIntent;Landroid/app/PendingIntent;)V
2641 .method protected sendMultipartText(Ljava/lang/String;Ljava/lang/String;Ljava/util/ArrayList;Ljava/util/ArrayList;Ljava/util/ArrayList;)V
2643 .annotation system Ldalvik/annotation/Signature;
2646 "Ljava/lang/String;",
2647 "Ljava/lang/String;",
2648 "Ljava/util/ArrayList",
2650 "Ljava/lang/String;",
2652 "Ljava/util/ArrayList",
2654 "Landroid/app/PendingIntent;",
2656 "Ljava/util/ArrayList",
2658 "Landroid/app/PendingIntent;",
2663 invoke-static {}, Lcom/android/internal/telephony/SMSDispatcher;->getNextConcatenatedRef()I
2667 and-int/lit16 v15, v1, 0xff
2669 invoke-virtual/range {p3 .. p3}, Ljava/util/ArrayList;->size()I
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;
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;
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
2710 if-ne v6, v1, :cond_2e
2713 iget v6, v11, Lcom/android/internal/telephony/GsmAlphabet$TextEncodingDetails;->codeUnitSize:I
2716 aput-object v11, v12, v13
2718 add-int/lit8 v13, v13, 0x1
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
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;
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
2771 invoke-virtual/range {p4 .. p4}, Ljava/util/ArrayList;->size()I
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;
2790 invoke-virtual/range {p5 .. p5}, Ljava/util/ArrayList;->size()I
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;
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
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
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
2844 .method protected sendRawPdu([B[BLandroid/app/PendingIntent;Landroid/app/PendingIntent;Ljava/lang/String;)V
2847 iget-boolean v2, p0, Lcom/android/internal/telephony/SMSDispatcher;->mSmsSendDisabled:Z
2856 invoke-virtual {p3, v2}, Landroid/app/PendingIntent;->send(I)V
2858 .catch Landroid/app/PendingIntent$CanceledException; {:try_start_7 .. :try_end_a} :catch_b7
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
2880 invoke-virtual {p3, v2}, Landroid/app/PendingIntent;->send(I)V
2882 .catch Landroid/app/PendingIntent$CanceledException; {:try_start_17 .. :try_end_1a} :catch_1b
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
2914 invoke-virtual {v9, v2}, Landroid/content/pm/PackageManager;->getPackagesForUid(I)[Ljava/lang/String;
2916 move-result-object v8
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
2936 invoke-virtual {p3, v2}, Landroid/app/PendingIntent;->send(I)V
2938 .catch Landroid/app/PendingIntent$CanceledException; {:try_start_49 .. :try_end_4c} :catch_4d
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
2959 aget-object v2, v8, v2
2963 invoke-virtual {v9, v2, v3}, Landroid/content/pm/PackageManager;->getPackageInfo(Ljava/lang/String;I)Landroid/content/pm/PackageInfo;
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
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
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;
2993 invoke-virtual {v2, v3, v5}, Lcom/android/internal/telephony/SmsUsageMonitor;->check(Ljava/lang/String;I)Z
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
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
3023 invoke-virtual {p3, v2}, Landroid/app/PendingIntent;->send(I)V
3025 .catch Landroid/app/PendingIntent$CanceledException; {:try_start_90 .. :try_end_93} :catch_95
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
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
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
3060 invoke-virtual {p0, v0}, Lcom/android/internal/telephony/SMSDispatcher;->sendSms(Lcom/android/internal/telephony/SMSDispatcher$SmsTracker;)V
3070 .method protected abstract sendSms(Lcom/android/internal/telephony/SMSDispatcher$SmsTracker;)V
3073 .method protected abstract sendText(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/app/PendingIntent;Landroid/app/PendingIntent;)V
3076 .method public setPremiumSmsPermission(Ljava/lang/String;I)V
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