Home | History | Annotate | Download | only in vcard
      1 /*
      2  * Copyright (C) 2009 The Android Open Source Project
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  *      http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13  * See the License for the specific language governing permissions and
     14  * limitations under the License.
     15  */
     16 package com.android.vcard;
     17 
     18 /**
     19  * Constants used in both exporter and importer code.
     20  */
     21 public class VCardConstants {
     22     /* package */ static final String LOG_TAG = "vCard";
     23     public static final String VERSION_V21 = "2.1";
     24     public static final String VERSION_V30 = "3.0";
     25     public static final String VERSION_V40 = "4.0";
     26 
     27     // Valid and supported property names.
     28     public static final String PROPERTY_BEGIN = "BEGIN";
     29     public static final String PROPERTY_VERSION = "VERSION";
     30     public static final String PROPERTY_N = "N";
     31     public static final String PROPERTY_FN = "FN";
     32     public static final String PROPERTY_ADR = "ADR";
     33     public static final String PROPERTY_EMAIL = "EMAIL";
     34     public static final String PROPERTY_NOTE = "NOTE";
     35     public static final String PROPERTY_ORG = "ORG";
     36     public static final String PROPERTY_SOUND = "SOUND";  // Not fully supported.
     37     public static final String PROPERTY_TEL = "TEL";
     38     public static final String PROPERTY_TITLE = "TITLE";
     39     public static final String PROPERTY_ROLE = "ROLE";
     40     public static final String PROPERTY_PHOTO = "PHOTO";
     41     public static final String PROPERTY_LOGO = "LOGO";
     42     public static final String PROPERTY_URL = "URL";
     43     public static final String PROPERTY_BDAY = "BDAY";  // Birthday (3.0, 4.0)
     44     public static final String PROPERTY_ANNIVERSARY = "ANNIVERSARY";  // Date of marriage (4.0)
     45     public static final String PROPERTY_NAME = "NAME";  // (3.0)
     46     public static final String PROPERTY_NICKNAME = "NICKNAME";  // (3.0, 4.0)
     47     public static final String PROPERTY_SORT_STRING = "SORT-STRING";  // (3.0, 4.0)
     48     public static final String PROPERTY_IMPP = "IMPP";  // RFC 4770 (vCard 3.0) and vCard 4.0
     49     public static final String PROPERTY_END = "END";
     50 
     51     // Valid property names which are not supported (not appropriately handled) by
     52     // importer/exporter. Those properties will be read and discarded silently.
     53     public static final String PROPERTY_REV = "REV";
     54     public static final String PROPERTY_AGENT = "AGENT";  // (3.0)
     55     public static final String PROPERTY_GENDER = "GENDER";  // (4.0)
     56     public static final String PROPERTY_XML = "XML";  // (4.0)
     57     public static final String PROPERTY_FBURL = "FBURL";  // (4.0)
     58     public static final String PROPERTY_PRODID = "PRODID";  // (4.0)
     59     public static final String PROPERTY_RELATED = "RELATED";  // (4.0)
     60     public static final String PROPERTY_CATEGORIES = "CATEGORIES";  // (4.0)
     61     public static final String PROPERTY_CLIENTPIDMAP = "CLIENTPIDMAP";  // (4.0)
     62     public static final String PROPERTY_CALURI = "CALURI";  // (4.0)
     63 
     64 
     65 
     66     // defact SIP property which had been used till RFC 4770.
     67     public static final String PROPERTY_X_SIP = "X-SIP";
     68 
     69     // Available in vCard 3.0. Shoud not use when composing vCard 2.1 file.
     70 
     71     // De-fact property values expressing phonetic names.
     72     public static final String PROPERTY_X_PHONETIC_FIRST_NAME = "X-PHONETIC-FIRST-NAME";
     73     public static final String PROPERTY_X_PHONETIC_MIDDLE_NAME = "X-PHONETIC-MIDDLE-NAME";
     74     public static final String PROPERTY_X_PHONETIC_LAST_NAME = "X-PHONETIC-LAST-NAME";
     75 
     76     // Properties both ContactsStruct and de-fact vCard extensions
     77     // Shown in http://en.wikipedia.org/wiki/VCard support are defined here.
     78     public static final String PROPERTY_X_AIM = "X-AIM";
     79     public static final String PROPERTY_X_MSN = "X-MSN";
     80     public static final String PROPERTY_X_YAHOO = "X-YAHOO";
     81     public static final String PROPERTY_X_ICQ = "X-ICQ";
     82     public static final String PROPERTY_X_JABBER = "X-JABBER";
     83     public static final String PROPERTY_X_GOOGLE_TALK = "X-GOOGLE-TALK";
     84     public static final String PROPERTY_X_SKYPE_USERNAME = "X-SKYPE-USERNAME";
     85     // Properties only ContactsStruct has. We alse use this.
     86     public static final String PROPERTY_X_QQ = "X-QQ";
     87     public static final String PROPERTY_X_NETMEETING = "X-NETMEETING";
     88 
     89     // Phone number for Skype, available as usual phone.
     90     public static final String PROPERTY_X_SKYPE_PSTNNUMBER = "X-SKYPE-PSTNNUMBER";
     91 
     92     // Property for Android-specific fields.
     93     public static final String PROPERTY_X_ANDROID_CUSTOM = "X-ANDROID-CUSTOM";
     94 
     95     // Properties for DoCoMo vCard.
     96     public static final String PROPERTY_X_CLASS = "X-CLASS";
     97     public static final String PROPERTY_X_REDUCTION = "X-REDUCTION";
     98     public static final String PROPERTY_X_NO = "X-NO";
     99     public static final String PROPERTY_X_DCM_HMN_MODE = "X-DCM-HMN-MODE";
    100 
    101     public static final String PARAM_TYPE = "TYPE";
    102 
    103     public static final String PARAM_TYPE_HOME = "HOME";
    104     public static final String PARAM_TYPE_WORK = "WORK";
    105     public static final String PARAM_TYPE_FAX = "FAX";
    106     public static final String PARAM_TYPE_CELL = "CELL";
    107     public static final String PARAM_TYPE_VOICE = "VOICE";
    108     public static final String PARAM_TYPE_INTERNET = "INTERNET";
    109 
    110     public static final String PARAM_VALUE = "VALUE";
    111     public static final String PARAM_CHARSET = "CHARSET";
    112     public static final String PARAM_ENCODING = "ENCODING";
    113 
    114     // Abbreviation of "prefered" according to vCard 2.1 specification.
    115     // We interpret this value as "primary" property during import/export.
    116     //
    117     // Note: Both vCard specs does not mention anything about the requirement for this parameter,
    118     //       but there may be some vCard importer which will get confused with more than
    119     //       one "PREF"s in one property name, while Android accepts them.
    120     public static final String PARAM_TYPE_PREF = "PREF";
    121 
    122     // Phone type parameters valid in vCard and known to ContactsContract, but not so common.
    123     public static final String PARAM_TYPE_CAR = "CAR";
    124     public static final String PARAM_TYPE_ISDN = "ISDN";
    125     public static final String PARAM_TYPE_PAGER = "PAGER";
    126     public static final String PARAM_TYPE_TLX = "TLX";  // Telex
    127 
    128     // Phone types existing in vCard 2.1 but not known to ContactsContract.
    129     public static final String PARAM_TYPE_MODEM = "MODEM";
    130     public static final String PARAM_TYPE_MSG = "MSG";
    131     public static final String PARAM_TYPE_BBS = "BBS";
    132     public static final String PARAM_TYPE_VIDEO = "VIDEO";
    133 
    134     public static final String PARAM_ENCODING_7BIT = "7BIT";
    135     public static final String PARAM_ENCODING_8BIT = "8BIT";
    136     public static final String PARAM_ENCODING_QP = "QUOTED-PRINTABLE";
    137     public static final String PARAM_ENCODING_BASE64 = "BASE64";  // Available in vCard 2.1
    138     public static final String PARAM_ENCODING_B = "B";  // Available in vCard 3.0
    139 
    140     // TYPE parameters for Phones, which are not formally valid in vCard (at least 2.1).
    141     // These types are basically encoded to "X-" parameters when composing vCard.
    142     // Parser passes these when "X-" is added to the parameter or not.
    143     public static final String PARAM_PHONE_EXTRA_TYPE_CALLBACK = "CALLBACK";
    144     public static final String PARAM_PHONE_EXTRA_TYPE_RADIO = "RADIO";
    145     public static final String PARAM_PHONE_EXTRA_TYPE_TTY_TDD = "TTY-TDD";
    146     public static final String PARAM_PHONE_EXTRA_TYPE_ASSISTANT = "ASSISTANT";
    147     // vCard composer translates this type to "WORK" + "PREF". Just for parsing.
    148     public static final String PARAM_PHONE_EXTRA_TYPE_COMPANY_MAIN = "COMPANY-MAIN";
    149     // vCard composer translates this type to "VOICE" Just for parsing.
    150     public static final String PARAM_PHONE_EXTRA_TYPE_OTHER = "OTHER";
    151 
    152     // TYPE parameters for postal addresses.
    153     public static final String PARAM_ADR_TYPE_PARCEL = "PARCEL";
    154     public static final String PARAM_ADR_TYPE_DOM = "DOM";
    155     public static final String PARAM_ADR_TYPE_INTL = "INTL";
    156 
    157     public static final String PARAM_LANGUAGE = "LANGUAGE";
    158 
    159     // SORT-AS parameter introduced in vCard 4.0 (as of rev.13)
    160     public static final String PARAM_SORT_AS = "SORT-AS";
    161 
    162     // TYPE parameters not officially valid but used in some vCard exporter.
    163     // Do not use in composer side.
    164     public static final String PARAM_EXTRA_TYPE_COMPANY = "COMPANY";
    165 
    166     public interface ImportOnly {
    167         public static final String PROPERTY_X_NICKNAME = "X-NICKNAME";
    168         // Some device emits this "X-" parameter for expressing Google Talk,
    169         // which is specifically invalid but should be always properly accepted, and emitted
    170         // in some special case (for that device/application).
    171         public static final String PROPERTY_X_GOOGLE_TALK_WITH_SPACE = "X-GOOGLE TALK";
    172     }
    173 
    174     //// Mainly for package constants.
    175 
    176     // DoCoMo specific type parameter. Used with "SOUND" property, which is alternate of
    177     // SORT-STRING invCard 3.0.
    178     /* package */ static final String PARAM_TYPE_X_IRMC_N = "X-IRMC-N";
    179 
    180     // Used in unit test.
    181     public static final int MAX_DATA_COLUMN = 15;
    182 
    183     /* package */ static final int MAX_CHARACTER_NUMS_QP = 76;
    184     static final int MAX_CHARACTER_NUMS_BASE64_V30 = 75;
    185 
    186     private VCardConstants() {
    187     }
    188 }