summaryrefslogtreecommitdiffstats
path: root/telephony
diff options
context:
space:
mode:
authorThe Android Open Source Project <initial-contribution@android.com>2010-05-18 11:08:12 -0700
committerThe Android Open Source Project <initial-contribution@android.com>2010-05-18 11:08:12 -0700
commit5ccb8b8c4d6eabcc984559ef9e71efdbb3de00d3 (patch)
tree9ddad66c67fe9919ab528bab9373cf03914d96d7 /telephony
parent4547e5284e79192373f3a6bb6c452501171bc1d6 (diff)
parent9f36f51844a6d8936f27af925ce8c22729a63f27 (diff)
downloadframeworks_base-5ccb8b8c4d6eabcc984559ef9e71efdbb3de00d3.zip
frameworks_base-5ccb8b8c4d6eabcc984559ef9e71efdbb3de00d3.tar.gz
frameworks_base-5ccb8b8c4d6eabcc984559ef9e71efdbb3de00d3.tar.bz2
merge from open-source master
Change-Id: Ib90da5365c873e542d79f036c32ec9b178cd8da0
Diffstat (limited to 'telephony')
-rw-r--r--telephony/java/com/android/internal/telephony/AdnRecord.java77
-rw-r--r--telephony/java/com/android/internal/telephony/AdnRecordLoader.java6
-rw-r--r--telephony/java/com/android/internal/telephony/IccProvider.java4
3 files changed, 49 insertions, 38 deletions
diff --git a/telephony/java/com/android/internal/telephony/AdnRecord.java b/telephony/java/com/android/internal/telephony/AdnRecord.java
index 0896ba6..1bf2d3c 100644
--- a/telephony/java/com/android/internal/telephony/AdnRecord.java
+++ b/telephony/java/com/android/internal/telephony/AdnRecord.java
@@ -19,10 +19,9 @@ package com.android.internal.telephony;
import android.os.Parcel;
import android.os.Parcelable;
import android.telephony.PhoneNumberUtils;
+import android.text.TextUtils;
import android.util.Log;
-import com.android.internal.telephony.GsmAlphabet;
-
import java.util.Arrays;
@@ -38,8 +37,8 @@ public class AdnRecord implements Parcelable {
//***** Instance Variables
- String alphaTag = "";
- String number = "";
+ String alphaTag = null;
+ String number = null;
String[] emails;
int extRecord = 0xff;
int efid; // or 0 if none
@@ -63,8 +62,8 @@ public class AdnRecord implements Parcelable {
// ADN offset
static final int ADN_BCD_NUMBER_LENGTH = 0;
static final int ADN_TON_AND_NPI = 1;
- static final int ADN_DAILING_NUMBER_START = 2;
- static final int ADN_DAILING_NUMBER_END = 11;
+ static final int ADN_DIALING_NUMBER_START = 2;
+ static final int ADN_DIALING_NUMBER_END = 11;
static final int ADN_CAPABILITY_ID = 12;
static final int ADN_EXTENSION_ID = 13;
@@ -152,17 +151,31 @@ public class AdnRecord implements Parcelable {
}
public boolean isEmpty() {
- return alphaTag.equals("") && number.equals("") && emails == null;
+ return TextUtils.isEmpty(alphaTag) && TextUtils.isEmpty(number) && emails == null;
}
public boolean hasExtendedRecord() {
return extRecord != 0 && extRecord != 0xff;
}
+ /** Helper function for {@link #isEqual}. */
+ private static boolean stringCompareNullEqualsEmpty(String s1, String s2) {
+ if (s1 == s2) {
+ return true;
+ }
+ if (s1 == null) {
+ s1 = "";
+ }
+ if (s2 == null) {
+ s2 = "";
+ }
+ return (s1.equals(s2));
+ }
+
public boolean isEqual(AdnRecord adn) {
- return ( alphaTag.equals(adn.getAlphaTag()) &&
- number.equals(adn.getNumber()) &&
- Arrays.equals(emails, adn.getEmails()));
+ return ( stringCompareNullEqualsEmpty(alphaTag, adn.alphaTag) &&
+ stringCompareNullEqualsEmpty(number, adn.number) &&
+ Arrays.equals(emails, adn.emails));
}
//***** Parcelable Implementation
@@ -184,36 +197,33 @@ public class AdnRecord implements Parcelable {
*
* @param recordSize is the size X of EF record
* @return hex byte[recordSize] to be written to EF record
- * return nulll for wrong format of dialing nubmer or tag
+ * return null for wrong format of dialing number or tag
*/
public byte[] buildAdnString(int recordSize) {
byte[] bcdNumber;
byte[] byteTag;
- byte[] adnString = null;
+ byte[] adnString;
int footerOffset = recordSize - FOOTER_SIZE_BYTES;
- if (number == null || number.equals("") ||
- alphaTag == null || alphaTag.equals("")) {
+ // create an empty record
+ adnString = new byte[recordSize];
+ for (int i = 0; i < recordSize; i++) {
+ adnString[i] = (byte) 0xFF;
+ }
- Log.w(LOG_TAG, "[buildAdnString] Empty alpha tag or number");
- adnString = new byte[recordSize];
- for (int i = 0; i < recordSize; i++) {
- adnString[i] = (byte) 0xFF;
- }
+ if (TextUtils.isEmpty(number)) {
+ Log.w(LOG_TAG, "[buildAdnString] Empty dialing number");
+ return adnString; // return the empty record (for delete)
} else if (number.length()
- > (ADN_DAILING_NUMBER_END - ADN_DAILING_NUMBER_START + 1) * 2) {
+ > (ADN_DIALING_NUMBER_END - ADN_DIALING_NUMBER_START + 1) * 2) {
Log.w(LOG_TAG,
- "[buildAdnString] Max length of dailing number is 20");
- } else if (alphaTag.length() > footerOffset) {
+ "[buildAdnString] Max length of dialing number is 20");
+ return null;
+ } else if (alphaTag != null && alphaTag.length() > footerOffset) {
Log.w(LOG_TAG,
"[buildAdnString] Max length of tag is " + footerOffset);
+ return null;
} else {
-
- adnString = new byte[recordSize];
- for (int i = 0; i < recordSize; i++) {
- adnString[i] = (byte) 0xFF;
- }
-
bcdNumber = PhoneNumberUtils.numberToCalledPartyBCD(number);
System.arraycopy(bcdNumber, 0, adnString,
@@ -222,16 +232,17 @@ public class AdnRecord implements Parcelable {
adnString[footerOffset + ADN_BCD_NUMBER_LENGTH]
= (byte) (bcdNumber.length);
adnString[footerOffset + ADN_CAPABILITY_ID]
- = (byte) 0xFF; // Capacility Id
+ = (byte) 0xFF; // Capability Id
adnString[footerOffset + ADN_EXTENSION_ID]
= (byte) 0xFF; // Extension Record Id
- byteTag = GsmAlphabet.stringToGsm8BitPacked(alphaTag);
- System.arraycopy(byteTag, 0, adnString, 0, byteTag.length);
+ if (!TextUtils.isEmpty(alphaTag)) {
+ byteTag = GsmAlphabet.stringToGsm8BitPacked(alphaTag);
+ System.arraycopy(byteTag, 0, adnString, 0, byteTag.length);
+ }
+ return adnString;
}
-
- return adnString;
}
/**
diff --git a/telephony/java/com/android/internal/telephony/AdnRecordLoader.java b/telephony/java/com/android/internal/telephony/AdnRecordLoader.java
index cfb5aaa..55bdc06 100644
--- a/telephony/java/com/android/internal/telephony/AdnRecordLoader.java
+++ b/telephony/java/com/android/internal/telephony/AdnRecordLoader.java
@@ -106,7 +106,7 @@ public class AdnRecordLoader extends Handler {
* It will get the record size of EF record and compose hex adn array
* then write the hex array to EF record
*
- * @param adn is set with alphaTag and phoneNubmer
+ * @param adn is set with alphaTag and phone number
* @param ef EF fileid
* @param extensionEF extension EF fileid
* @param recordNumber 1-based record index
@@ -159,7 +159,7 @@ public class AdnRecordLoader extends Handler {
data = adn.buildAdnString(recordSize[0]);
if(data == null) {
- throw new RuntimeException("worong ADN format",
+ throw new RuntimeException("wrong ADN format",
ar.exception);
}
@@ -218,7 +218,7 @@ public class AdnRecordLoader extends Handler {
throw new RuntimeException("load failed", ar.exception);
}
- Log.d(LOG_TAG,"ADN extention EF: 0x"
+ Log.d(LOG_TAG,"ADN extension EF: 0x"
+ Integer.toHexString(extensionEF)
+ ":" + adn.extRecord
+ "\n" + IccUtils.bytesToHexString(data));
diff --git a/telephony/java/com/android/internal/telephony/IccProvider.java b/telephony/java/com/android/internal/telephony/IccProvider.java
index fa91457..3471ec2 100644
--- a/telephony/java/com/android/internal/telephony/IccProvider.java
+++ b/telephony/java/com/android/internal/telephony/IccProvider.java
@@ -417,11 +417,11 @@ public class IccProvider extends ContentProvider {
}
}
- if (TextUtils.isEmpty(tag)) {
+ if (TextUtils.isEmpty(number)) {
return 0;
}
- if (efType == FDN && TextUtils.isEmpty(pin2)) {
+ if (efType == IccConstants.EF_FDN && TextUtils.isEmpty(pin2)) {
return 0;
}