精华 | |
金钱 | BA |
威望 | 点 |
贡献值 | 点 |
爱心 | 点 |
经验 | 点 |
注册时间 | 2013-3-18 |
最后登录 | 1970-1-1 |
在线时间 | 小时 |
| |
| |
| |
|
楼主 |
发表于 2014-4-11 22:52
|
显示全部楼层
@五月
有朋友问到中文短信支持怎么改的,简单说下:
搞明白后真的挺简单,不过也花了我比较多时间来找出原因。
最开始我反编译巴西和中欧版的Messaging.apk后对比代码,结果发现没啥大区别,但是中欧原版系统短信设置是有编码选择的,而巴西的则没有进而导致中文短信有问题。那么肯定是系统其他地方什么参数在控制这个编码设置的。
于是看Messaging.apk反编译后的代码,结果在MessageSettings.smali中发现如下代码:
- .method public static getEncodingPreferencesEnabled()Z
- .locals 2
- .prologue
- .line 756
- const-string v0, "telephony.sms.shift_table"
- const/4 v1, 0x0
- invoke-static {v0, v1}, Lcom/motorola/messaging/frameworkadapter/motorola/SystemProperties;->getBoolean(Ljava/lang/String;Z)Z
- move-result v0
- return v0
- .end method
复制代码
从名称上看这个方法应该就是控制短信编码设置是否出现的:读取telephony.sms.shift_table这个系统属性值,根据返回值来决定是否显示短信编码设置。
于是豁然开朗,就有了如下的两种方法来让这个短信编码设置出现:
1、在/system/build.prop之类的文件里添加上telephony.sms.shift_table=1,如果已有这个属性的将值改为1。
2、直接更改上面的方法getEncodingPreferencesEnabled,比如改成 const/4 v0, 0x1,然后直接返回return v0,这样就可以去掉telephony.sms.shift_table相关的代码了,这样改后不管怎样都会出现短信编码设置。 |
|