diff options
author | Yujing Gu <guy@codeaurora.org> | 2016-03-29 17:27:25 +0800 |
---|---|---|
committer | Steve Kondik <steve@cyngn.com> | 2016-07-02 10:55:01 -0700 |
commit | cbaa8d31506c2843ae8c549bc3dff9743300c531 (patch) | |
tree | fa6e5bf0ecd10bf9d8f09ab2e602ce1ebe81ac35 | |
parent | ce2ca072fee674bcf7e53ceb3367c8643869cee2 (diff) | |
download | android_frameworks_opt_telephony-cbaa8d31506c2843ae8c549bc3dff9743300c531.tar.gz android_frameworks_opt_telephony-cbaa8d31506c2843ae8c549bc3dff9743300c531.tar.bz2 android_frameworks_opt_telephony-cbaa8d31506c2843ae8c549bc3dff9743300c531.zip |
Parse the record number from byte to int
ADN won't be retrieved correctly if the record number is more
than 127. Need to Parse the record number from byte to int.
Change-Id: I0b324c3a0ca0fff07609b84079541d2099b964cc
CRs-Fixed: 985649
-rw-r--r-- | src/java/com/android/internal/telephony/gsm/UsimPhoneBookManager.java | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/src/java/com/android/internal/telephony/gsm/UsimPhoneBookManager.java b/src/java/com/android/internal/telephony/gsm/UsimPhoneBookManager.java index 444ac2d4a..d2e1d540e 100644 --- a/src/java/com/android/internal/telephony/gsm/UsimPhoneBookManager.java +++ b/src/java/com/android/internal/telephony/gsm/UsimPhoneBookManager.java @@ -527,9 +527,9 @@ public class UsimPhoneBookManager extends Handler implements IccConstants { Rlog.e(LOG_TAG, "Error: Improper ICC card: No IAP record for ADN, continuing"); break; } - int recNum = record[mEmailTagNumberInIap]; + int recNum = record[mEmailTagNumberInIap] & 0xFF; - if (recNum > 0) { + if (recNum != 0xFF && recNum > 0) { String[] emails = new String[1]; // SIM record numbers are 1 based emails[0] = readEmailRecord(recNum - 1, pbrIndex, 0); @@ -578,8 +578,8 @@ public class UsimPhoneBookManager extends Handler implements IccConstants { Rlog.e(LOG_TAG, "Error: Improper ICC card: No IAP record for ADN, continuing"); break; } - int recNum = record[mAnrTagNumberInIap]; - if (recNum > 0) { + int recNum = record[mAnrTagNumberInIap] & 0xFF; + if (recNum != 0xFF && recNum > 0) { String[] anrs = new String[1]; // SIM record numbers are 1 based anrs[0] = readAnrRecord(recNum - 1, pbrIndex, 0); @@ -771,8 +771,9 @@ public class UsimPhoneBookManager extends Handler implements IccConstants { } catch (IndexOutOfBoundsException e) { Rlog.e(LOG_TAG, "IndexOutOfBoundsException in getEmailRecNumber"); } - if (record != null && record[mEmailTagNumberInIap] > 0) { - recordNumber = record[mEmailTagNumberInIap]; + if (record != null && (record[mEmailTagNumberInIap] & 0xFF) != 0xFF + && (record[mEmailTagNumberInIap] & 0xFF) > 0) { + recordNumber = record[mEmailTagNumberInIap] & 0xFF; log(" getEmailRecNumber: record is " + IccUtils.bytesToHexString(record) + ", the email recordNumber is :" + recordNumber); return recordNumber; @@ -812,8 +813,9 @@ public class UsimPhoneBookManager extends Handler implements IccConstants { } catch (IndexOutOfBoundsException e) { Rlog.e(LOG_TAG, "IndexOutOfBoundsException in getAnrRecNumber"); } - if (record != null && record[mAnrTagNumberInIap] > 0) { - recordNumber = record[mAnrTagNumberInIap]; + if (record != null && (record[mAnrTagNumberInIap] & 0xFF) != 0xFF + && (record[mAnrTagNumberInIap] & 0xFF) > 0) { + recordNumber = record[mAnrTagNumberInIap] & 0xFF; log("getAnrRecNumber: recnum from iap is :" + recordNumber); return recordNumber; } else { |