您的位置:首页 > 移动开发 > Android开发

Android(SpreadTurm)多语言版本电话录音系统报错

2012-11-23 11:01 387 查看
Android(SpreadTurm)多语言版本电话录音系统报错 

法语,印尼语,士耳其

【原因:】

从log里面分析com.android.phone进程重启。

如下log分析:

11-20 17:20:21.256   410  1408 E AndroidRuntime: java.lang.IllegalArgumentException: Unknown pattern character 'A'

11-20 17:20:21.256   410  1408 E AndroidRuntime: at java.text.SimpleDateFormat.validateFormat(SimpleDateFormat.java:267)

11-20 17:20:21.256   410  1408 E AndroidRuntime: at java.text.SimpleDateFormat.validatePattern(SimpleDateFormat.java:315)

11-20 17:20:21.256   410  1408 E AndroidRuntime: at java.text.SimpleDateFormat.<init>(SimpleDateFormat.java:368)

11-20 17:20:21.256   410  1408 E AndroidRuntime: at java.text.SimpleDateFormat.<init>(SimpleDateFormat.java:252)

11-20 17:20:21.256   410  1408 E AndroidRuntime: at com.android.phone.InCallScreen.addToMediaDB(InCallScreen.java:5835)

11-20 17:20:21.256   410  1408 E AndroidRuntime: at com.android.phone.InCallScreen.saveSample(InCallScreen.java:5746)

11-20 17:20:21.256   410  1408 E AndroidRuntime: at com.android.phone.InCallScreen.enableRecorder(InCallScreen.java:4211)

11-20 17:20:21.256   410  1408 E AndroidRuntime: at com.android.phone.InCallScreen$18.run(InCallScreen.java:4191)

可知,在InCallScreen.java文件中,addToMediaDB函数中的

SimpleDateFormat formatter = new SimpleDateFormat(res.getString(R.string.audio_db_title_format));设置有问题,继续跟进发现是SimpleDateFormat.java中validateFormat函数“throw new IllegalArgumentException("Unknown pattern character '" + format + "'");”

原因是由于static final String PATTERN_CHARS = "GyMdkHmsSEDFwWahKzZLc";中没有匹配字符"A";

土耳其语的时间格式为“yyyy-AA-gg SS:dd:ss”,所以会出现问题。

SimpleDateFormat.java中validateFormat函数“throw new IllegalArgumentException("Unknown pattern character '" + format + "'");”

原因是由于static final String PATTERN_CHARS = "GyMdkHmsSEDFwWahKzZLc"; 只支持上述字符的时间格式匹配。其余没有的字符作为将来扩展保留使用,这个是国际标准。

1. 印地语:

/values-in/strings.xml:820:    <string name="audio_db_title_format"><xliff:g id="format">tttt-BB-hh JJ:mm:dd</xliff:g></string>

可以发现t、B、J 都没有在 PATTERN_CHARS中出现

2. 土耳其语:

/res/values-tr/strings.xml:931:    <string name="audio_db_title_format"><xliff:g id="format">yyyy-AA-gg SS:dd:ss</xliff:g></string>

可以发现A、g 都没有在 PATTERN_CHARS中出现

3. 法语

/res/values-fr/strings.xml:939:    <string name="audio_db_title_format"><xliff:g id="format">aaaa-MM-jj HH:mm:ss</xliff:g></string>

可以发现a、j 都没有在 PATTERN_CHARS中出现

【修改:】

解决方案:
参照/res/values/strings.xml:1504:    <string name="audio_db_title_format"><xliff:g id="format">yyyy-MM-dd HH:mm:ss</xliff:g></string>
可以将所有的格式修改为yyyy-MM-dd HH:mm:ss,问题解决。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: