让我们看看源码是怎么写的,我做了一下修复,稍后再介绍:
public static HanziToPinyin getInstance() {
synchronized (HanziToPinyin.class) {
if (sInstance != null) {
return sInstance;
}
// Check if zh_CN collation data is available
final Locale locale[] = Collator.getAvailableLocales();
Locale newChina = new Locale("zh", "HANS", "CN");//这部分是我做的修复,解决HTC兼容性问题
for (int i = 0; i < locale.length; i++) {
if (locale[i].equals(Locale.CHINA) || locale[i].equals(newChina)) {
// Do self validation just once.
if (DEBUG) {
Log.d(TAG, "Self validation. Result: " + doSelfValidation());
}
sInstance = new HanziToPinyin(true);
return sInstance;
}
}
Log.w(TAG, "There is no Chinese collator, HanziToPinyin is disabled");
sInstance = new HanziToPinyin(false);
return sInstance;
}
}zh-Hans 简体中文 zh-Hans-CN 大陆地区使用的简体中文 zh-Hans-HK 香港地区使用的简体中文 zh-Hans-MO 澳门使用的简体中文 zh-Hans-SG 新加坡使用的简体中文 zh-Hans-TW 台湾使用的简体中文 zh-Hant 繁体中文 zh-Hant-CN 大陆地区使用的繁体中文 zh-Hant-HK 香港地区使用的繁体中文 zh-Hant-MO 澳门使用的繁体中文 zh-Hant-SG 新加坡使用的繁体中文 zh-Hant-TW 台湾使用的繁体中文可以看出,Hans是简体中文,Hant是繁体中文。而这样划分更明确。貌似Win8也是这样划分的。
解决方案我已经在原因里贴上去了,其实也就是加入对hans这样的判断,希望兼容5.0,感觉5.0应该也会这样写吧。
[Android] 解决HanziToPinyin类在HTC One等手机上转换拼音失败BUG
原文:http://blog.csdn.net/windowsxp2014/article/details/44564873