aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYujing Gu <guy@codeaurora.org>2016-03-29 17:27:25 +0800
committerSteve Kondik <steve@cyngn.com>2016-07-02 10:55:01 -0700
commitcbaa8d31506c2843ae8c549bc3dff9743300c531 (patch)
treefa6e5bf0ecd10bf9d8f09ab2e602ce1ebe81ac35
parentce2ca072fee674bcf7e53ceb3367c8643869cee2 (diff)
downloadandroid_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.java18
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 {