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

来源:互联网 发布:java开发工程师做什么 编辑:程序博客网 时间:2024/05/12 18:01

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,问题解决。

原创粉丝点击