Don't crash when an unregistered package is removed.

Bug: 4205311
Change-Id: I116e7c2e12c7e160d81154d22589b1bdefe93e44
diff --git a/src/com/android/nfc/NfcService.java b/src/com/android/nfc/NfcService.java
index d681ae6..c47134d 100755
--- a/src/com/android/nfc/NfcService.java
+++ b/src/com/android/nfc/NfcService.java
@@ -2914,7 +2914,19 @@
 
                 mSecureElement.doDisconnect(handle);
             } else if (intent.getAction().equals(Intent.ACTION_PACKAGE_REMOVED)) {
-                final String packageName = intent.getData().getSchemeSpecificPart();
+                Uri data = intent.getData();
+                if (data == null) return;
+                String packageName = data.getSchemeSpecificPart();
+                ApduList apdus = null;
+
+                synchronized (NfcService.this) {
+                    apdus = mTearDownApdus.remove(packageName);
+                    if (apdus == null) {
+                        return;
+                    }
+
+                    writeTearDownApdusLocked();
+                }
 
                 int handle = mSecureElement.doOpenSecureElementConnection();
                 if (handle == 0) {
@@ -2922,16 +2934,13 @@
                     return;
                 }
 
-                synchronized (NfcService.this) {
-                    for (byte[] cmd : mTearDownApdus.get(packageName).get()) {
+                try {
+                    for (byte[] cmd : apdus.get()) {
                         mSecureElement.doTransceive(handle, cmd);
                     }
-
-                    mTearDownApdus.remove(packageName);
-                    writeTearDownApdusLocked();
+                } finally {
+                    mSecureElement.doDisconnect(handle);
                 }
-
-                mSecureElement.doDisconnect(handle);
             }
         }
     };