首页 > 代码库 > 如何设置联系人地址从大到小显示(按照省、市、街道)

如何设置联系人地址从大到小显示(按照省、市、街道)

1.(联系人详情界面的修改)
文件:PostalSplitter.java (packages\providers\contactsprovider\src\com\android\providers\contacts) 
函数:public String join(Postal postal) 
有如下语句:
      if (mLocale != null &&
                JAPANESE_LANGUAGE.equals(mLocale.getLanguage()) &&
                !arePrintableAsciiOnly(values)) {
            return joinJaJp(postal);
        } else {
            return joinEnUs(postal);
        }
joinEnUs(postal)就是从小到大的显示顺序,joinJaJp(postal)则是从大到校的显示顺序,
注释掉上述语句,直接使用return  joinJaJp(postal);可以使得任何语言下返回从大到小的显示格式,
也可以仿照 JAPANESE_LANGUAGE.equals(mLocale.getLanguage()) 加入类似的系统语言判断条件。
 
2.(联系人编辑界面的修改)
在如下三支文件:
Before KK1
BaseAccountType.java (packages\apps\contacts\src\com\android\contacts\model\account)  
ExchangeAccountType.java (packages\apps\contacts\src\com\android\contacts\model\account) 
LocalPhoneAccountType.java (packages\apps\contacts\src\com\mediatek\contacts\model) 
After KK1
BaseAccountType.java (packages\apps\contactscommon\src\com\android\contacts\common\model\account)  
ExchangeAccountType.java (packages\apps\contactscommon\src\com\android\contacts\common\model\account) 
LocalPhoneAccountType.java (packages\apps\contactscommon\src\com\mediatek\contacts\model)  
中均有addDataKindStructuredPostal函数,其中如下语句就是在设置街道省市:
        if (useJapaneseOrder) {
              ....                      //从大到小
             } else {
              ....                      //从小到大
             }
useJapaneseOrder则是: Locale.JAPANESE.getLanguage().equsals(Locale.getDefault().getLanguage());
同样的,直接将useJapaneseOrder置为true,可以使得任何语言下返回从大到小的显示格式,
也可以仿照 Locale.JAPANESE.getLanguage().equsals(Locale.getDefault().getLanguage());加入类似的系统语言判断条件 
 

如何设置联系人地址从大到小显示(按照省、市、街道)