Skip to content

Instantly share code, notes, and snippets.

@erraggy
Created September 2, 2014 22:08
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save erraggy/50a1378b9f8e3edb4497 to your computer and use it in GitHub Desktop.
Save erraggy/50a1378b9f8e3edb4497 to your computer and use it in GitHub Desktop.
From Decompiled SecMms_Blue.apk
package com.android.mms.transaction;
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SqliteWrapper;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.net.Uri;
import android.provider.Telephony.Mms.Inbox;
import android.provider.Telephony.Mms.Outbox;
import com.android.mms.Log;
import com.google.android.mms.pdu.PduPersister;
public class RetryScheduler
implements Observer
{
private static final String TAG = "Mms:transaction";
private static RetryScheduler sInstance;
private final ContentResolver mContentResolver;
private final Context mContext;
private BroadcastReceiver mReceiver = new BroadcastReceiver()
{
public void onReceive(Context paramAnonymousContext, Intent paramAnonymousIntent)
{
RetryScheduler.access$002(RetryScheduler.this, paramAnonymousIntent.getBooleanExtra("IMS_REG_STATUS", false));
if (RetryScheduler.this.mWifiCall)
{
Intent localIntent = new Intent("com.android.mms.transaction.MESSAGE_SENT");
localIntent.setClassName("com.android.mms", "com.android.mms.transaction.SmsReceiverService");
localIntent.putExtra("result", -1);
localIntent.putExtra("LastSentMsg", true);
RetryScheduler.this.mContext.startService(localIntent);
}
}
};
private boolean mWifiCall = false;
private RetryScheduler(Context paramContext)
{
this.mContext = paramContext;
this.mContentResolver = paramContext.getContentResolver();
}
public static RetryScheduler getInstance()
{
return sInstance;
}
public static RetryScheduler getInstance(Context paramContext)
{
if (sInstance == null)
sInstance = new RetryScheduler(paramContext);
return sInstance;
}
private int getResponseStatus(long paramLong)
{
Cursor localCursor = null;
try
{
localCursor = SqliteWrapper.query(this.mContext, this.mContentResolver, Telephony.Mms.Outbox.CONTENT_URI, null, "_id=" + paramLong, null, null);
int i = 0;
if (localCursor != null)
{
boolean bool = localCursor.moveToFirst();
i = 0;
if (bool)
{
int j = localCursor.getInt(localCursor.getColumnIndexOrThrow("resp_st"));
i = j;
}
}
if (localCursor != null)
localCursor.close();
if (i != 0)
Log.e("Mms:transaction", "[RetryScheduler] Response status is: " + i);
return i;
}
finally
{
if (localCursor != null)
localCursor.close();
}
}
private String getResponseText(long paramLong)
{
Cursor localCursor = null;
try
{
localCursor = SqliteWrapper.query(this.mContext, this.mContentResolver, Telephony.Mms.Outbox.CONTENT_URI, null, "_id=" + paramLong, null, null);
Object localObject2 = null;
if (localCursor != null)
{
boolean bool = localCursor.moveToFirst();
localObject2 = null;
if (bool)
{
String str = localCursor.getString(localCursor.getColumnIndexOrThrow("resp_txt"));
localObject2 = str;
}
}
if (localCursor != null)
localCursor.close();
if (localObject2 != null)
Log.e("Mms:transaction", "Response text is: " + localObject2);
return localObject2;
}
finally
{
if (localCursor != null)
localCursor.close();
}
}
private int getRetrieveStatus(long paramLong)
{
Cursor localCursor = SqliteWrapper.query(this.mContext, this.mContentResolver, Telephony.Mms.Inbox.CONTENT_URI, null, "_id=" + paramLong, null, null);
int i = 0;
if (localCursor != null);
try
{
boolean bool = localCursor.moveToFirst();
i = 0;
if (bool)
{
int j = localCursor.getInt(localCursor.getColumnIndexOrThrow("resp_st"));
i = j;
}
if (localCursor != null)
localCursor.close();
if (i != 0)
Log.e("Mms:transaction", "[RetryScheduler] Response status is: " + i);
return i;
}
finally
{
if (localCursor != null)
localCursor.close();
}
}
private boolean isConnected()
{
NetworkInfo localNetworkInfo = ((ConnectivityManager)this.mContext.getSystemService("connectivity")).getNetworkInfo(2);
if (localNetworkInfo != null)
Log.m("Mms:transaction", "[RetryScheduler] isConnected() : " + localNetworkInfo.isConnected());
if (localNetworkInfo == null)
return false;
return localNetworkInfo.isConnected();
}
// ERROR //
private void scheduleRetry(Uri paramUri, Transaction paramTransaction)
{
// Byte code:
// 0: aload_1
// 1: invokestatic 164 android/content/ContentUris:parseId (Landroid/net/Uri;)J
// 4: lstore_3
// 5: getstatic 167 android/provider/Telephony$MmsSms$PendingMessages:CONTENT_URI Landroid/net/Uri;
// 8: invokevirtual 173 android/net/Uri:buildUpon ()Landroid/net/Uri$Builder;
// 11: astore 5
// 13: aload 5
// 15: ldc 175
// 17: ldc 177
// 19: invokevirtual 183 android/net/Uri$Builder:appendQueryParameter (Ljava/lang/String;Ljava/lang/String;)Landroid/net/Uri$Builder;
// 22: pop
// 23: aload 5
// 25: ldc 185
// 27: lload_3
// 28: invokestatic 190 java/lang/String:valueOf (J)Ljava/lang/String;
// 31: invokevirtual 183 android/net/Uri$Builder:appendQueryParameter (Ljava/lang/String;Ljava/lang/String;)Landroid/net/Uri$Builder;
// 34: pop
// 35: aload_0
// 36: getfield 36 com/android/mms/transaction/RetryScheduler:mContext Landroid/content/Context;
// 39: aload_0
// 40: getfield 44 com/android/mms/transaction/RetryScheduler:mContentResolver Landroid/content/ContentResolver;
// 43: aload 5
// 45: invokevirtual 194 android/net/Uri$Builder:build ()Landroid/net/Uri;
// 48: aconst_null
// 49: aconst_null
// 50: aconst_null
// 51: aconst_null
// 52: invokestatic 87 android/database/sqlite/SqliteWrapper:query (Landroid/content/Context;Landroid/content/ContentResolver;Landroid/net/Uri;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor;
// 55: astore 8
// 57: aload 8
// 59: ifnull +525 -> 584
// 62: aload 8
// 64: invokeinterface 198 1 0
// 69: iconst_1
// 70: if_icmpne +1154 -> 1224
// 73: aload 8
// 75: invokeinterface 93 1 0
// 80: ifeq +1144 -> 1224
// 83: aload 8
// 85: aload 8
// 87: ldc 200
// 89: invokeinterface 99 2 0
// 94: invokeinterface 103 2 0
// 99: istore 10
// 101: ldc 10
// 103: new 67 java/lang/StringBuilder
// 106: dup
// 107: invokespecial 68 java/lang/StringBuilder:<init> ()V
// 110: ldc 202
// 112: invokevirtual 74 java/lang/StringBuilder:append (Ljava/lang/String;)Ljava/lang/StringBuilder;
// 115: iload 10
// 117: invokevirtual 111 java/lang/StringBuilder:append (I)Ljava/lang/StringBuilder;
// 120: invokevirtual 81 java/lang/StringBuilder:toString ()Ljava/lang/String;
// 123: invokestatic 156 com/android/mms/Log:m (Ljava/lang/String;Ljava/lang/String;)V
// 126: iconst_1
// 127: aload 8
// 129: aload 8
// 131: ldc 204
// 133: invokeinterface 99 2 0
// 138: invokeinterface 103 2 0
// 143: iadd
// 144: istore 11
// 146: iconst_1
// 147: istore 12
// 149: new 206 com/android/mms/transaction/DefaultRetryScheme
// 152: dup
// 153: aload_0
// 154: getfield 36 com/android/mms/transaction/RetryScheduler:mContext Landroid/content/Context;
// 157: iload 11
// 159: invokespecial 209 com/android/mms/transaction/DefaultRetryScheme:<init> (Landroid/content/Context;I)V
// 162: astore 13
// 164: new 211 android/content/ContentValues
// 167: dup
// 168: iconst_4
// 169: invokespecial 214 android/content/ContentValues:<init> (I)V
// 172: astore 14
// 174: invokestatic 220 java/lang/System:currentTimeMillis ()J
// 177: lstore 15
// 179: iload 10
// 181: sipush 130
// 184: if_icmpne +401 -> 585
// 187: iconst_1
// 188: istore 17
// 190: iconst_1
// 191: istore 18
// 193: aload_0
// 194: lload_3
// 195: invokespecial 222 com/android/mms/transaction/RetryScheduler:getResponseStatus (J)I
// 198: istore 19
// 200: ldc 10
// 202: new 67 java/lang/StringBuilder
// 205: dup
// 206: invokespecial 68 java/lang/StringBuilder:<init> ()V
// 209: ldc 224
// 211: invokevirtual 74 java/lang/StringBuilder:append (Ljava/lang/String;)Ljava/lang/StringBuilder;
// 214: iload 19
// 216: invokevirtual 111 java/lang/StringBuilder:append (I)Ljava/lang/StringBuilder;
// 219: invokevirtual 81 java/lang/StringBuilder:toString ()Ljava/lang/String;
// 222: invokestatic 227 com/android/mms/Log:v (Ljava/lang/String;Ljava/lang/String;)V
// 225: iload 17
// 227: ifne +466 -> 693
// 230: iconst_0
// 231: istore 20
// 233: iload 19
// 235: lookupswitch default:+73->308, 130:+411->646, 132:+356->591, 134:+1055->1290, 194:+1063->1298, 224:+1071->1306, 225:+370->605, 226:+425->660, 228:+1063->1298
// 309: ldc2_w -26368
// 312: dconst_0
// 313: invokestatic 232 com/android/mms/util/DownloadManager:getInstance ()Lcom/android/mms/util/DownloadManager;
// 316: iload 20
// 318: invokevirtual 235 com/android/mms/util/DownloadManager:showErrorCodeToast (I)V
// 321: iconst_0
// 322: istore 18
// 324: iload 19
// 326: sipush 224
// 329: if_icmplt +49 -> 378
// 332: iload 19
// 334: sipush 255
// 337: if_icmpgt +41 -> 378
// 340: invokestatic 240 com/android/mms/MmsConfig:getEnableChameleon ()Z
// 343: ifeq +504 -> 847
// 346: iload 19
// 348: sipush 225
// 351: if_icmpne +496 -> 847
// 354: ldc 242
// 356: invokestatic 248 android/os/SystemProperties:get (Ljava/lang/String;)Ljava/lang/String;
// 359: ldc 250
// 361: invokevirtual 254 java/lang/String:equalsIgnoreCase (Ljava/lang/String;)Z
// 364: ifeq +454 -> 818
// 367: invokestatic 232 com/android/mms/util/DownloadManager:getInstance ()Lcom/android/mms/util/DownloadManager;
// 370: ldc 255
// 372: invokevirtual 235 com/android/mms/util/DownloadManager:showErrorCodeToast (I)V
// 375: goto +877 -> 1252
// 378: iload 11
// 380: aload 13
// 382: invokevirtual 258 com/android/mms/transaction/DefaultRetryScheme:getRetryLimit ()I
// 385: if_icmpge +473 -> 858
// 388: iload 18
// 390: ifeq +468 -> 858
// 393: lload 15
// 395: aload 13
// 397: invokevirtual 261 com/android/mms/transaction/DefaultRetryScheme:getWaitingInterval ()J
// 400: ladd
// 401: lstore 21
// 403: ldc 10
// 405: new 67 java/lang/StringBuilder
// 408: dup
// 409: invokespecial 68 java/lang/StringBuilder:<init> ()V
// 412: ldc_w 263
// 415: invokevirtual 74 java/lang/StringBuilder:append (Ljava/lang/String;)Ljava/lang/StringBuilder;
// 418: aload_1
// 419: invokevirtual 266 java/lang/StringBuilder:append (Ljava/lang/Object;)Ljava/lang/StringBuilder;
// 422: ldc_w 268
// 425: invokevirtual 74 java/lang/StringBuilder:append (Ljava/lang/String;)Ljava/lang/StringBuilder;
// 428: lload 21
// 430: invokestatic 220 java/lang/System:currentTimeMillis ()J
// 433: lsub
// 434: invokevirtual 77 java/lang/StringBuilder:append (J)Ljava/lang/StringBuilder;
// 437: ldc_w 270
// 440: invokevirtual 74 java/lang/StringBuilder:append (Ljava/lang/String;)Ljava/lang/StringBuilder;
// 443: invokevirtual 81 java/lang/StringBuilder:toString ()Ljava/lang/String;
// 446: invokestatic 227 com/android/mms/Log:v (Ljava/lang/String;Ljava/lang/String;)V
// 449: aload 14
// 451: ldc_w 272
// 454: lload 21
// 456: invokestatic 277 java/lang/Long:valueOf (J)Ljava/lang/Long;
// 459: invokevirtual 281 android/content/ContentValues:put (Ljava/lang/String;Ljava/lang/Long;)V
// 462: iload 17
// 464: ifeq +13 -> 477
// 467: invokestatic 232 com/android/mms/util/DownloadManager:getInstance ()Lcom/android/mms/util/DownloadManager;
// 470: aload_1
// 471: sipush 130
// 474: invokevirtual 285 com/android/mms/util/DownloadManager:markState (Landroid/net/Uri;I)V
// 477: aload 14
// 479: ldc_w 287
// 482: iload 12
// 484: invokestatic 292 java/lang/Integer:valueOf (I)Ljava/lang/Integer;
// 487: invokevirtual 295 android/content/ContentValues:put (Ljava/lang/String;Ljava/lang/Integer;)V
// 490: aload 14
// 492: ldc 204
// 494: iload 11
// 496: invokestatic 292 java/lang/Integer:valueOf (I)Ljava/lang/Integer;
// 499: invokevirtual 295 android/content/ContentValues:put (Ljava/lang/String;Ljava/lang/Integer;)V
// 502: aload 14
// 504: ldc_w 297
// 507: lload 15
// 509: invokestatic 277 java/lang/Long:valueOf (J)Ljava/lang/Long;
// 512: invokevirtual 281 android/content/ContentValues:put (Ljava/lang/String;Ljava/lang/Long;)V
// 515: aload 8
// 517: aload 8
// 519: ldc_w 299
// 522: invokeinterface 99 2 0
// 527: invokeinterface 303 2 0
// 532: lstore 23
// 534: aload_0
// 535: getfield 36 com/android/mms/transaction/RetryScheduler:mContext Landroid/content/Context;
// 538: aload_0
// 539: getfield 44 com/android/mms/transaction/RetryScheduler:mContentResolver Landroid/content/ContentResolver;
// 542: getstatic 167 android/provider/Telephony$MmsSms$PendingMessages:CONTENT_URI Landroid/net/Uri;
// 545: aload 14
// 547: new 67 java/lang/StringBuilder
// 550: dup
// 551: invokespecial 68 java/lang/StringBuilder:<init> ()V
// 554: ldc 70
// 556: invokevirtual 74 java/lang/StringBuilder:append (Ljava/lang/String;)Ljava/lang/StringBuilder;
// 559: lload 23
// 561: invokevirtual 77 java/lang/StringBuilder:append (J)Ljava/lang/StringBuilder;
// 564: invokevirtual 81 java/lang/StringBuilder:toString ()Ljava/lang/String;
// 567: aconst_null
// 568: invokestatic 307 android/database/sqlite/SqliteWrapper:update (Landroid/content/Context;Landroid/content/ContentResolver;Landroid/net/Uri;Landroid/content/ContentValues;Ljava/lang/String;[Ljava/lang/String;)I
// 571: pop
// 572: aload 8
// 574: ifnull +10 -> 584
// 577: aload 8
// 579: invokeinterface 106 1 0
// 584: return
// 585: iconst_0
// 586: istore 17
// 588: goto -398 -> 190
// 591: invokestatic 310 com/android/mms/MmsConfig:getEnableMmsDetailVzw ()Z
// 594: ifeq +664 -> 1258
// 597: ldc_w 311
// 600: istore 20
// 602: goto -294 -> 308
// 605: invokestatic 310 com/android/mms/MmsConfig:getEnableMmsDetailVzw ()Z
// 608: ifeq +11 -> 619
// 611: ldc_w 312
// 614: istore 20
// 616: goto -308 -> 308
// 619: invokestatic 240 com/android/mms/MmsConfig:getEnableChameleon ()Z
// 622: ifeq +652 -> 1274
// 625: ldc 242
// 627: invokestatic 248 android/os/SystemProperties:get (Ljava/lang/String;)Ljava/lang/String;
// 630: ldc 250
// 632: invokevirtual 254 java/lang/String:equalsIgnoreCase (Ljava/lang/String;)Z
// 635: ifeq +631 -> 1266
// 638: ldc_w 313
// 641: istore 20
// 643: goto -335 -> 308
// 646: invokestatic 310 com/android/mms/MmsConfig:getEnableMmsDetailVzw ()Z
// 649: ifeq +633 -> 1282
// 652: ldc_w 312
// 655: istore 20
// 657: goto -349 -> 308
// 660: invokestatic 316 com/android/mms/MmsConfig:getEnableMmsTransactionCustomize4Korea ()Z
// 663: istore 45
// 665: iconst_0
// 666: istore 20
// 668: iload 45
// 670: ifeq -362 -> 308
// 673: invokestatic 232 com/android/mms/util/DownloadManager:getInstance ()Lcom/android/mms/util/DownloadManager;
// 676: aload_0
// 677: lload_3
// 678: invokespecial 318 com/android/mms/transaction/RetryScheduler:getResponseText (J)Ljava/lang/String;
// 681: invokevirtual 321 com/android/mms/util/DownloadManager:showErrorCodeToast (Ljava/lang/String;)V
// 684: iconst_0
// 685: istore 20
// 687: iconst_0
// 688: istore 18
// 690: goto -382 -> 308
// 693: aload_0
// 694: lload_3
// 695: invokespecial 323 com/android/mms/transaction/RetryScheduler:getRetrieveStatus (J)I
// 698: istore 19
// 700: iload 19
// 702: sipush 228
// 705: if_icmpne +62 -> 767
// 708: invokestatic 232 com/android/mms/util/DownloadManager:getInstance ()Lcom/android/mms/util/DownloadManager;
// 711: ldc_w 324
// 714: invokevirtual 235 com/android/mms/util/DownloadManager:showErrorCodeToast (I)V
// 717: invokestatic 316 com/android/mms/MmsConfig:getEnableMmsTransactionCustomize4Korea ()Z
// 720: ifeq +16 -> 736
// 723: invokestatic 327 com/android/mms/MmsConfig:getEnableDeletePermanentFailure ()Z
// 726: istore 47
// 728: iconst_0
// 729: istore 18
// 731: iload 47
// 733: ifeq -409 -> 324
// 736: aload_0
// 737: getfield 36 com/android/mms/transaction/RetryScheduler:mContext Landroid/content/Context;
// 740: aload_0
// 741: getfield 36 com/android/mms/transaction/RetryScheduler:mContext Landroid/content/Context;
// 744: invokevirtual 42 android/content/Context:getContentResolver ()Landroid/content/ContentResolver;
// 747: aload_1
// 748: aconst_null
// 749: aconst_null
// 750: invokestatic 331 android/database/sqlite/SqliteWrapper:delete (Landroid/content/Context;Landroid/content/ContentResolver;Landroid/net/Uri;Ljava/lang/String;[Ljava/lang/String;)I
// 753: pop
// 754: aload 8
// 756: ifnull -172 -> 584
// 759: aload 8
// 761: invokeinterface 106 1 0
// 766: return
// 767: invokestatic 316 com/android/mms/MmsConfig:getEnableMmsTransactionCustomize4Korea ()Z
// 770: ifeq -446 -> 324
// 773: invokestatic 327 com/android/mms/MmsConfig:getEnableDeletePermanentFailure ()Z
// 776: ifeq -452 -> 324
// 779: iload 19
// 781: sipush 224
// 784: if_icmpne -460 -> 324
// 787: aload_0
// 788: getfield 36 com/android/mms/transaction/RetryScheduler:mContext Landroid/content/Context;
// 791: aload_0
// 792: getfield 36 com/android/mms/transaction/RetryScheduler:mContext Landroid/content/Context;
// 795: invokevirtual 42 android/content/Context:getContentResolver ()Landroid/content/ContentResolver;
// 798: aload_1
// 799: aconst_null
// 800: aconst_null
// 801: invokestatic 331 android/database/sqlite/SqliteWrapper:delete (Landroid/content/Context;Landroid/content/ContentResolver;Landroid/net/Uri;Ljava/lang/String;[Ljava/lang/String;)I
// 804: pop
// 805: aload 8
// 807: ifnull -223 -> 584
// 810: aload 8
// 812: invokeinterface 106 1 0
// 817: return
// 818: invokestatic 232 com/android/mms/util/DownloadManager:getInstance ()Lcom/android/mms/util/DownloadManager;
// 821: ldc_w 332
// 824: invokevirtual 235 com/android/mms/util/DownloadManager:showErrorCodeToast (I)V
// 827: goto +425 -> 1252
// 830: astore 9
// 832: aload 8
// 834: ifnull +10 -> 844
// 837: aload 8
// 839: invokeinterface 106 1 0
// 844: aload 9
// 846: athrow
// 847: invokestatic 232 com/android/mms/util/DownloadManager:getInstance ()Lcom/android/mms/util/DownloadManager;
// 850: ldc 255
// 852: invokevirtual 235 com/android/mms/util/DownloadManager:showErrorCodeToast (I)V
// 855: goto +397 -> 1252
// 858: bipush 10
// 860: istore 12
// 862: iload 17
// 864: ifeq +295 -> 1159
// 867: aload_0
// 868: getfield 36 com/android/mms/transaction/RetryScheduler:mContext Landroid/content/Context;
// 871: aload_0
// 872: getfield 36 com/android/mms/transaction/RetryScheduler:mContext Landroid/content/Context;
// 875: invokevirtual 42 android/content/Context:getContentResolver ()Landroid/content/ContentResolver;
// 878: aload_1
// 879: iconst_1
// 880: anewarray 187 java/lang/String
// 883: dup
// 884: iconst_0
// 885: ldc_w 334
// 888: aastore
// 889: aconst_null
// 890: aconst_null
// 891: aconst_null
// 892: invokestatic 87 android/database/sqlite/SqliteWrapper:query (Landroid/content/Context;Landroid/content/ContentResolver;Landroid/net/Uri;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor;
// 895: astore 26
// 897: ldc2_w 335
// 900: lstore 27
// 902: aload 26
// 904: ifnull +39 -> 943
// 907: aload 26
// 909: invokeinterface 93 1 0
// 914: ifeq +17 -> 931
// 917: aload 26
// 919: iconst_0
// 920: invokeinterface 303 2 0
// 925: lstore 41
// 927: lload 41
// 929: lstore 27
// 931: aload 26
// 933: ifnull +10 -> 943
// 936: aload 26
// 938: invokeinterface 106 1 0
// 943: lload 27
// 945: ldc2_w 335
// 948: lcmp
// 949: ifeq +12 -> 961
// 952: aload_0
// 953: getfield 36 com/android/mms/transaction/RetryScheduler:mContext Landroid/content/Context;
// 956: lload 27
// 958: invokestatic 342 com/android/mms/transaction/MessagingNotification:notifyDownloadFailed (Landroid/content/Context;J)V
// 961: invokestatic 232 com/android/mms/util/DownloadManager:getInstance ()Lcom/android/mms/util/DownloadManager;
// 964: aload_1
// 965: sipush 135
// 968: invokevirtual 285 com/android/mms/util/DownloadManager:markState (Landroid/net/Uri;I)V
// 971: aload_2
// 972: instanceof 344
// 975: ifeq -498 -> 477
// 978: iconst_m1
// 979: istore 29
// 981: aload_0
// 982: getfield 36 com/android/mms/transaction/RetryScheduler:mContext Landroid/content/Context;
// 985: invokevirtual 42 android/content/Context:getContentResolver ()Landroid/content/ContentResolver;
// 988: aload_1
// 989: iconst_2
// 990: anewarray 187 java/lang/String
// 993: dup
// 994: iconst_0
// 995: ldc_w 346
// 998: aastore
// 999: dup
// 1000: iconst_1
// 1001: ldc_w 348
// 1004: aastore
// 1005: ldc_w 350
// 1008: aconst_null
// 1009: aconst_null
// 1010: invokevirtual 355 android/content/ContentResolver:query (Landroid/net/Uri;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor;
// 1013: astore 30
// 1015: iconst_0
// 1016: istore 31
// 1018: aload 30
// 1020: ifnull +51 -> 1071
// 1023: aload 30
// 1025: invokeinterface 93 1 0
// 1030: istore 38
// 1032: iconst_0
// 1033: istore 31
// 1035: iload 38
// 1037: ifeq +27 -> 1064
// 1040: aload 30
// 1042: iconst_0
// 1043: invokeinterface 103 2 0
// 1048: istore 31
// 1050: aload 30
// 1052: iconst_1
// 1053: invokeinterface 103 2 0
// 1058: istore 39
// 1060: iload 39
// 1062: istore 29
// 1064: aload 30
// 1066: invokeinterface 106 1 0
// 1071: iload 31
// 1073: ifle -596 -> 477
// 1076: new 357 android/content/Intent
// 1079: dup
// 1080: ldc_w 359
// 1083: invokespecial 361 android/content/Intent:<init> (Ljava/lang/String;)V
// 1086: astore 32
// 1088: aload 32
// 1090: ldc_w 363
// 1093: iconst_2
// 1094: invokevirtual 367 android/content/Intent:putExtra (Ljava/lang/String;I)Landroid/content/Intent;
// 1097: pop
// 1098: aload 32
// 1100: ldc_w 369
// 1103: iconst_1
// 1104: invokevirtual 367 android/content/Intent:putExtra (Ljava/lang/String;I)Landroid/content/Intent;
// 1107: pop
// 1108: aload 32
// 1110: ldc_w 371
// 1113: iload 31
// 1115: invokevirtual 367 android/content/Intent:putExtra (Ljava/lang/String;I)Landroid/content/Intent;
// 1118: pop
// 1119: aload 32
// 1121: ldc_w 373
// 1124: iload 29
// 1126: invokevirtual 367 android/content/Intent:putExtra (Ljava/lang/String;I)Landroid/content/Intent;
// 1129: pop
// 1130: aload_0
// 1131: getfield 36 com/android/mms/transaction/RetryScheduler:mContext Landroid/content/Context;
// 1134: aload 32
// 1136: invokevirtual 377 android/content/Context:sendBroadcast (Landroid/content/Intent;)V
// 1139: goto -662 -> 477
// 1142: astore 40
// 1144: aload 26
// 1146: ifnull +10 -> 1156
// 1149: aload 26
// 1151: invokeinterface 106 1 0
// 1156: aload 40
// 1158: athrow
// 1159: new 211 android/content/ContentValues
// 1162: dup
// 1163: iconst_1
// 1164: invokespecial 214 android/content/ContentValues:<init> (I)V
// 1167: astore 43
// 1169: aload 43
// 1171: ldc_w 379
// 1174: iconst_0
// 1175: invokestatic 292 java/lang/Integer:valueOf (I)Ljava/lang/Integer;
// 1178: invokevirtual 295 android/content/ContentValues:put (Ljava/lang/String;Ljava/lang/Integer;)V
// 1181: aload_0
// 1182: getfield 36 com/android/mms/transaction/RetryScheduler:mContext Landroid/content/Context;
// 1185: aload_0
// 1186: getfield 36 com/android/mms/transaction/RetryScheduler:mContext Landroid/content/Context;
// 1189: invokevirtual 42 android/content/Context:getContentResolver ()Landroid/content/ContentResolver;
// 1192: aload_1
// 1193: aload 43
// 1195: aconst_null
// 1196: aconst_null
// 1197: invokestatic 307 android/database/sqlite/SqliteWrapper:update (Landroid/content/Context;Landroid/content/ContentResolver;Landroid/net/Uri;Landroid/content/ContentValues;Ljava/lang/String;[Ljava/lang/String;)I
// 1200: pop
// 1201: aload_0
// 1202: getfield 36 com/android/mms/transaction/RetryScheduler:mContext Landroid/content/Context;
// 1205: iconst_1
// 1206: invokestatic 383 com/android/mms/transaction/MessagingNotification:notifySendFailed (Landroid/content/Context;Z)V
// 1209: goto -238 -> 971
// 1212: astore 37
// 1214: aload 30
// 1216: invokeinterface 106 1 0
// 1221: aload 37
// 1223: athrow
// 1224: ldc 10
// 1226: new 67 java/lang/StringBuilder
// 1229: dup
// 1230: invokespecial 68 java/lang/StringBuilder:<init> ()V
// 1233: ldc_w 385
// 1236: invokevirtual 74 java/lang/StringBuilder:append (Ljava/lang/String;)Ljava/lang/StringBuilder;
// 1239: lload_3
// 1240: invokevirtual 77 java/lang/StringBuilder:append (J)Ljava/lang/StringBuilder;
// 1243: invokevirtual 81 java/lang/StringBuilder:toString ()Ljava/lang/String;
// 1246: invokestatic 227 com/android/mms/Log:v (Ljava/lang/String;Ljava/lang/String;)V
// 1249: goto -677 -> 572
// 1252: iconst_0
// 1253: istore 18
// 1255: goto -877 -> 378
// 1258: ldc_w 386
// 1261: istore 20
// 1263: goto -955 -> 308
// 1266: ldc_w 332
// 1269: istore 20
// 1271: goto -963 -> 308
// 1274: ldc_w 313
// 1277: istore 20
// 1279: goto -971 -> 308
// 1282: ldc_w 313
// 1285: istore 20
// 1287: goto -979 -> 308
// 1290: ldc_w 387
// 1293: istore 20
// 1295: goto -987 -> 308
// 1298: ldc_w 324
// 1301: istore 20
// 1303: goto -995 -> 308
// 1306: ldc 255
// 1308: istore 20
// 1310: goto -1002 -> 308
//
// Exception table:
// from to target type
// 62 146 830 finally
// 149 179 830 finally
// 193 225 830 finally
// 313 321 830 finally
// 340 346 830 finally
// 354 375 830 finally
// 378 388 830 finally
// 393 462 830 finally
// 467 477 830 finally
// 477 572 830 finally
// 591 597 830 finally
// 605 611 830 finally
// 619 638 830 finally
// 646 652 830 finally
// 660 665 830 finally
// 673 684 830 finally
// 693 700 830 finally
// 708 728 830 finally
// 736 754 830 finally
// 767 779 830 finally
// 787 805 830 finally
// 818 827 830 finally
// 847 855 830 finally
// 867 897 830 finally
// 936 943 830 finally
// 952 961 830 finally
// 961 971 830 finally
// 971 978 830 finally
// 981 1015 830 finally
// 1064 1071 830 finally
// 1076 1139 830 finally
// 1149 1156 830 finally
// 1156 1159 830 finally
// 1159 1209 830 finally
// 1214 1224 830 finally
// 1224 1249 830 finally
// 907 927 1142 finally
// 1023 1032 1212 finally
// 1040 1060 1212 finally
}
public static void setRetryAlarm(Context paramContext)
{
Cursor localCursor = PduPersister.getPduPersister(paramContext).getPendingMessages(9223372036854775807L);
if (localCursor != null);
try
{
while (localCursor.moveToNext())
{
long l = localCursor.getLong(localCursor.getColumnIndexOrThrow("due_time"));
if (l > 0L)
{
PendingIntent localPendingIntent = PendingIntent.getService(paramContext, 0, new Intent("android.intent.action.ACTION_ONALARM", null, paramContext, TransactionService.class), 1073741824);
((AlarmManager)paramContext.getSystemService("alarm")).set(1, l, localPendingIntent);
Log.v("Mms:transaction", "[RetryScheduler] Next retry is scheduled at" + (l - System.currentTimeMillis()) + "ms from now");
}
}
return;
}
finally
{
if (localCursor != null)
localCursor.close();
}
}
public void unregisterReceiver()
{
try
{
this.mContext.unregisterReceiver(this.mReceiver);
return;
}
catch (IllegalArgumentException localIllegalArgumentException)
{
Log.i("Mms:transaction", "Reciever is not registered");
}
}
public void update(Observable paramObservable)
{
try
{
Transaction localTransaction = (Transaction)paramObservable;
Log.v("Mms:transaction", "[RetryScheduler] update " + paramObservable);
if ((!(localTransaction instanceof NotificationTransaction)) && (!(localTransaction instanceof RetrieveTransaction)) && (!(localTransaction instanceof ReadRecTransaction)))
{
boolean bool = localTransaction instanceof SendTransaction;
if (!bool)
break label101;
}
try
{
TransactionState localTransactionState = localTransaction.getState();
if (localTransactionState.getState() == 2)
{
Uri localUri = localTransactionState.getContentUri();
if (localUri != null)
scheduleRetry(localUri, localTransaction);
}
localTransaction.detach(this);
label101: return;
}
finally
{
localTransaction.detach(this);
}
}
finally
{
setRetryAlarm(this.mContext);
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment