OSDN Git Service

Only decode EXT1 tag when it is available.
authorJohn Wang <johnwang@google.com>
Tue, 15 Feb 2011 01:36:42 +0000 (17:36 -0800)
committerJohn Wang <johnwang@google.com>
Tue, 15 Feb 2011 01:44:13 +0000 (17:44 -0800)
Normally ADN record is stored in two tags, EFADN_TAG and EFEXT1_TAG. But if the EFEXT1_TAG is not set in EF_PBR entry,
it shouldn't be decoded otherwise it causes NullPointerException in readAdnFileAndWait().

bug: 3376954
Change-Id: I744cf5cb8662c75be1e7c6219fa92c67bdda82f2

telephony/java/com/android/internal/telephony/gsm/UsimPhoneBookManager.java

index 41e527c..6458fda 100644 (file)
@@ -284,8 +284,15 @@ public class UsimPhoneBookManager extends Handler implements IccConstants {
         fileIds = mPbrFile.mFileIds.get(recNum);
         if (fileIds == null || fileIds.isEmpty()) return;
 
+
+        int extEf = 0;
+        // Only call fileIds.get while EFEXT1_TAG is available
+        if (fileIds.containsKey(USIM_EFEXT1_TAG)) {
+            extEf = fileIds.get(USIM_EFEXT1_TAG);
+        }
+
         mAdnCache.requestLoadAllAdnLike(fileIds.get(USIM_EFADN_TAG),
-            fileIds.get(USIM_EFEXT1_TAG), obtainMessage(EVENT_USIM_ADN_LOAD_DONE));
+            extEf, obtainMessage(EVENT_USIM_ADN_LOAD_DONE));
         try {
             mLock.wait();
         } catch (InterruptedException e) {