diff --git a/src/java/com/android/internal/telephony/uicc/UiccCard.java b/src/java/com/android/internal/telephony/uicc/UiccCard.java
index e2b6689..f77a16c 100644
--- a/src/java/com/android/internal/telephony/uicc/UiccCard.java
+++ b/src/java/com/android/internal/telephony/uicc/UiccCard.java
@@ -458,19 +458,25 @@
 
     /**
      * Resets the application with the input AID. Returns true if any changes were made.
+     *
+     * A null aid implies a card level reset - all applications must be reset.
      */
     public boolean resetAppWithAid(String aid) {
         synchronized (mLock) {
+            boolean changed = false;
             for (int i = 0; i < mUiccApplications.length; i++) {
-                if (mUiccApplications[i] != null && aid.equals(mUiccApplications[i].getAid())) {
+                if (mUiccApplications[i] != null &&
+                    (aid == null || aid.equals(mUiccApplications[i].getAid()))) {
                     // Delete removed applications
                     mUiccApplications[i].dispose();
                     mUiccApplications[i] = null;
-                    return true;
+                    changed = true;
                 }
             }
-            return false;
+            return changed;
         }
+        // TODO: For a card level notification, we should delete the CarrierPrivilegeRules and the
+        // CAT service.
     }
 
     /**
diff --git a/src/java/com/android/internal/telephony/uicc/UiccController.java b/src/java/com/android/internal/telephony/uicc/UiccController.java
index 80893f2..e314f82 100644
--- a/src/java/com/android/internal/telephony/uicc/UiccController.java
+++ b/src/java/com/android/internal/telephony/uicc/UiccController.java
@@ -312,12 +312,13 @@
             return;
         }
 
-        if (resp.refreshResult != IccRefreshResponse.REFRESH_RESULT_RESET ||
-            resp.aid == null) {
-            Rlog.d(LOG_TAG, "Ignoring reset: " + resp);
-            return;
+        if (resp.refreshResult != IccRefreshResponse.REFRESH_RESULT_RESET) {
+          Rlog.d(LOG_TAG, "Ignoring non reset refresh: " + resp);
+          return;
         }
 
+        Rlog.d(LOG_TAG, "Handling refresh reset: " + resp);
+
         boolean changed = mUiccCards[index].resetAppWithAid(resp.aid);
         if (changed) {
             boolean requirePowerOffOnSimRefreshReset = mContext.getResources().getBoolean(
@@ -329,8 +330,6 @@
             }
             mIccChangedRegistrants.notifyRegistrants(new AsyncResult(null, index, null));
         }
-        // TODO: For a card level notification, we should delete the CarrierPrivilegeRules and the
-        // CAT service.
     }
 
     private boolean isValidCardIndex(int index) {
