diff options
author | Daisuke Miyakawa <dmiyakawa@google.com> | 2009-11-16 17:11:25 +0900 |
---|---|---|
committer | Daisuke Miyakawa <dmiyakawa@google.com> | 2009-11-17 06:16:22 +0900 |
commit | 3d745c2b925ccc7c6591dbb3dfd21649782af991 (patch) | |
tree | 86e8abc02051362768544acb32cb343e08ccbce7 | |
parent | 9e807d7cc4e5deafc0744abd932e2b40e3f5e80b (diff) | |
download | frameworks_base-3d745c2b925ccc7c6591dbb3dfd21649782af991.zip frameworks_base-3d745c2b925ccc7c6591dbb3dfd21649782af991.tar.gz frameworks_base-3d745c2b925ccc7c6591dbb3dfd21649782af991.tar.bz2 |
Make vCard composer use Base64 class for encoding String into bytes instead of using its own implementation.
Internal issue number: 2195990
-rw-r--r-- | core/java/android/pim/vcard/VCardComposer.java | 9 | ||||
-rw-r--r-- | core/java/android/pim/vcard/VCardUtils.java | 50 |
2 files changed, 8 insertions, 51 deletions
diff --git a/core/java/android/pim/vcard/VCardComposer.java b/core/java/android/pim/vcard/VCardComposer.java index 71f947c..d9f38bb 100644 --- a/core/java/android/pim/vcard/VCardComposer.java +++ b/core/java/android/pim/vcard/VCardComposer.java @@ -47,6 +47,8 @@ import android.text.format.Time; import android.util.CharsetUtils; import android.util.Log; +import org.apache.commons.codec.binary.Base64; + import java.io.BufferedWriter; import java.io.FileOutputStream; import java.io.IOException; @@ -100,9 +102,8 @@ import java.util.Set; * } </pre> */ public class VCardComposer { - private static final String LOG_TAG = "vcard.VCardComposer"; + private static final String LOG_TAG = "VCardComposer"; - // TODO: Should be configurable? public static final int DEFAULT_PHONE_TYPE = Phone.TYPE_HOME; public static final int DEFAULT_POSTAL_TYPE = StructuredPostal.TYPE_HOME; public static final int DEFAULT_EMAIL_TYPE = Email.TYPE_OTHER; @@ -1545,8 +1546,8 @@ public class VCardComposer { Log.d(LOG_TAG, "Unknown photo type. Ignore."); continue; } - final String photoString = VCardUtils.encodeBase64(data); - if (photoString.length() > 0) { + final String photoString = new String(Base64.encodeBase64(data)); + if (!TextUtils.isEmpty(photoString)) { appendVCardPhotoLine(builder, photoString, photoType); } } diff --git a/core/java/android/pim/vcard/VCardUtils.java b/core/java/android/pim/vcard/VCardUtils.java index d1e1ec3..12a8e42 100644 --- a/core/java/android/pim/vcard/VCardUtils.java +++ b/core/java/android/pim/vcard/VCardUtils.java @@ -462,60 +462,16 @@ public class VCardUtils { return true; } - // TODO: Replace wth the method in Base64 class. - private static char PAD = '='; - private static final char[] ENCODE64 = { - 'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P', - 'Q','R','S','T','U','V','W','X','Y','Z','a','b','c','d','e','f', - 'g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v', - 'w','x','y','z','0','1','2','3','4','5','6','7','8','9','+','/' - }; - - static public String encodeBase64(byte[] data) { - if (data == null) { - return ""; - } - - char[] charBuffer = new char[(data.length + 2) / 3 * 4]; - int position = 0; - int _3byte = 0; - for (int i=0; i<data.length-2; i+=3) { - _3byte = ((data[i] & 0xFF) << 16) + ((data[i+1] & 0xFF) << 8) + (data[i+2] & 0xFF); - charBuffer[position++] = ENCODE64[_3byte >> 18]; - charBuffer[position++] = ENCODE64[(_3byte >> 12) & 0x3F]; - charBuffer[position++] = ENCODE64[(_3byte >> 6) & 0x3F]; - charBuffer[position++] = ENCODE64[_3byte & 0x3F]; - } - switch(data.length % 3) { - case 1: // [111111][11 0000][0000 00][000000] - _3byte = ((data[data.length-1] & 0xFF) << 16); - charBuffer[position++] = ENCODE64[_3byte >> 18]; - charBuffer[position++] = ENCODE64[(_3byte >> 12) & 0x3F]; - charBuffer[position++] = PAD; - charBuffer[position++] = PAD; - break; - case 2: // [111111][11 1111][1111 00][000000] - _3byte = ((data[data.length-2] & 0xFF) << 16) + ((data[data.length-1] & 0xFF) << 8); - charBuffer[position++] = ENCODE64[_3byte >> 18]; - charBuffer[position++] = ENCODE64[(_3byte >> 12) & 0x3F]; - charBuffer[position++] = ENCODE64[(_3byte >> 6) & 0x3F]; - charBuffer[position++] = PAD; - break; - } - - return new String(charBuffer); - } - static public String toHalfWidthString(String orgString) { if (TextUtils.isEmpty(orgString)) { return null; } - StringBuilder builder = new StringBuilder(); - int length = orgString.length(); + final StringBuilder builder = new StringBuilder(); + final int length = orgString.length(); for (int i = 0; i < length; i++) { // All Japanese character is able to be expressed by char. // Do not need to use String#codepPointAt(). - char ch = orgString.charAt(i); + final char ch = orgString.charAt(i); CharSequence halfWidthText = JapaneseUtils.tryGetHalfWidthText(ch); if (halfWidthText != null) { builder.append(halfWidthText); |