am 5e508afc: Merge "Wake up TransactService when MMS data is available"

# By Bin Li
# Via Bin Li (1) and Gerrit Code Review (1)
* commit '5e508afc2cb9a889de49a52d1b6dfe1238fb4630':
  Wake up TransactService when MMS data is available
diff --git a/src/com/android/mms/transaction/MmsSystemEventReceiver.java b/src/com/android/mms/transaction/MmsSystemEventReceiver.java
index 78b027b..2b70ba9 100644
--- a/src/com/android/mms/transaction/MmsSystemEventReceiver.java
+++ b/src/com/android/mms/transaction/MmsSystemEventReceiver.java
@@ -64,13 +64,17 @@
             Uri changed = (Uri) intent.getParcelableExtra(Mms.Intents.DELETED_CONTENTS);
             MmsApp.getApplication().getPduLoaderManager().removePdu(changed);
         } else if (action.equals(TelephonyIntents.ACTION_ANY_DATA_CONNECTION_STATE_CHANGED)) {
-            String state = intent.getStringExtra(PhoneConstants.STATE_KEY);
+            String apnType = intent.getStringExtra(PhoneConstants.DATA_APN_TYPE_KEY);
+            boolean available = !(intent.getBooleanExtra(
+                                      PhoneConstants.NETWORK_UNAVAILABLE_KEY, false));
 
             if (Log.isLoggable(LogTag.TRANSACTION, Log.VERBOSE)) {
-                Log.v(TAG, "ANY_DATA_STATE event received: " + state);
+                Log.v(TAG, "ANY_DATA_STATE event received: apnType = " + apnType +
+                           ", available = " + available);
             }
 
-            if (state.equals("CONNECTED")) {
+            // Wake up transact service when MMS data is available.
+            if (apnType.equals(PhoneConstants.APN_TYPE_MMS) && available) {
                 wakeUpService(context);
             }
         } else if (action.equals(Intent.ACTION_BOOT_COMPLETED)) {
diff --git a/src/com/android/mms/transaction/TransactionService.java b/src/com/android/mms/transaction/TransactionService.java
index 7fd2715..4230b16 100644
--- a/src/com/android/mms/transaction/TransactionService.java
+++ b/src/com/android/mms/transaction/TransactionService.java
@@ -236,6 +236,10 @@
                         }
                         MmsSystemEventReceiver.registerForConnectionStateChanges(
                                 getApplicationContext());
+                    } else {
+                        // MMS data is available now, do not need listen to state change.
+                        MmsSystemEventReceiver.unRegisterForConnectionStateChanges(
+                                getApplicationContext());
                     }
 
                     while (cursor.moveToNext()) {