[Android] 解决HanziToPinyin类在HTC One等手机上转换拼音失败BU

原因:

让我们看看源码是怎么写的,,我做了一下修复,稍后再介绍:

public static HanziToPinyin getInstance() {synchronized (HanziToPinyin.class) {if (sInstance != null) {return sInstance;}// Check if zh_CN collation data is availablefinal 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;}}上面的代码可以看到做了一下检测,看看是不是支持中文,而HTC手机里返回的是zh-Hans-CN,所以自然会返回失败,但是手机确实支持中文,经过调试以后发现返回的Locale数组里有这个东西zh-Hans-CN,我们再看下zh-Hans-CN是什么

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等手机上转换拼音失败BU

相关文章:

你感兴趣的文章:

标签云: