|
最近碰到了传说中的收到某些特定短信之后,内容显示空白,之后就无法在launcher上启动短信了。7 A0 s, j3 n: C5 o7 a
根据网上和众多帖子的反馈,大部分情况是收到由nokia发出的带有换行的短信造成javascript解析失败(所以重启也是没有效果的),官方貌似没有解决这个bug。 t& Z, ^1 ]" e {4 K
在清风大大的帖子10#,可以通过清除短信数据恢复短信的功能。
" g3 `, _: s( h/ Jhttp://www.treo8.com/bbs/viewthr ... hlight=%B6%CC%D0%C5
1 T& X# b; x6 z0 b, h, |7 T大致就是操作sqlite数据删除.db3数据库中的com_palm_messaging_data_ChatThread数据表。
1 z5 E: {* F; O! y5 h2 I既然是操作数据库,那么就可以通过一些方法删除数据表中引起问题的几条数据,这样就正常了。因此这里的方法虽然繁琐,但是不用全部清除短信,性价比还是可以的。
( {' R9 v! w8 y( U) A. H* q0 Z3 d$ G下午在机子上实验了一下,群众纷纷表示有效果(没有删除联系人)+ H A6 e; U( e; a) D
可以在手机上直接用安装的terminal操作,但是手机屏幕木有电脑大,建议用电脑上的ssh工具(putty等)连接到手机上操作:
( q7 b6 J6 n- A* |" ]1. 备份原数据库,这样即使操作错误之后也有挽救的余地。0 X% k1 a/ [ I& P2 P. d
建议直接使用$ t. Y* t8 Y, T0 W, b
cp /var/luna/data/dbdata/* /media/internal/, b7 s6 L8 w8 Y% S
这样会把dbdata文件夹下的所有用户相关的数据库文件都复制到/media/internal 即u盘目录下。4 P: d! h% V4 K2 a9 l- j
2. 开始操作数据库,和用户机器所有数据信息有关的数据库是PalmDatabase.db3。$ x) l& j* B1 F3 G5 |& F
sqlite3 /var/luna/data/dbdata/PalmDatabase.db3/ U7 d: x7 p1 i* _& [
这时候进入sqlite界面,与短信内容相关的数据表是com_palm_messaging_data_ChatThread,主要就是对这个表操作。
, x6 X# j% \0 _' Y; e+ X: J 大概要清楚引起问题的短信的一些信息,比如号码是什么,或者其他一些信息。
: `2 @, Z8 P8 }, O8 E3 Q, L4 v1 T3 t3 { 可以使用:
7 z8 e# E# h/ C& P0 r# |& P select * from com_palm_messaging_data_ChatThread; (注意有分号的,在sqlite中查询语句以分号结束)
( V" D/ @. I: U6 m8 n7 N 来查看所有记录信息,我们甚至可以发现以前删除的信息也依然还在数据库里面。 W$ S% c% v3 S0 u- R$ _' Z
查找引起问题的短信信息,基本上能够知道号码就可以了。如果已经知道号码就可以跳过上面这些。
- F1 j; n- X: n 利用已经知道的信息查看问题短信:1 x3 D" ~( r/ z( |+ j6 Q" V5 q+ I
select * from com_palm_messaging_data_ChatThread where chatAddress="+86137!@#@$#@$#"; (引号里填入电话号码,同样注意结尾有分号)+ R% B" H' G5 V' }
在这个数据库中,chatAddress字段表示电话号码,以下是所有字段,如果看不到字段,在命令里输入.headers on6 I6 `* c' Z% M0 p& V/ s% @
summary|flags|priority|firstName|lastName|name|trailingDigits|chatTimeStamp|pictureLocation|chatAddress|imAvatarLocation|draftText|availability|customMessage|serviceName|type|statusAddress|totalCount|unreadCount|id|_class_id|_mod_num|_flags
) l# x9 b0 Y" @* q 这时候就会列出相应的几条短信了。
( d5 ~& M" k, Z/ w 仔细查看是否是相关人的短信,如果不是继续限定一些字段去找,否则容易误删除。( `, q3 m, Y. @, n& Q3 t
3. 如果确认找到相关的短信,那么使用命令删除:9 Y9 R/ m' `; k( C9 S. C
delete from com_palm_messaging_data_ChatThread where chatAddress="+86137!@#@$#@$#";
) i: c: x* F" w3 w( m 其实就是把前面select语句中的select替换成delete就可以。
8 Y& k3 X6 c/ ?& m我实验的时候不用重启就能正常进入短信了。
' O" w2 S W8 e4 N0 q# e很繁琐,sqlite官方也没有好用的图形界面可以移植,有时间弄弄图形化的操作。5 L1 g* v4 U' T" ]
) E* W( a# Z+ \ f% u+ s
[ Edited by Stingrey on 2010-9-4 21:03 ] |
|