|
最近碰到了传说中的收到某些特定短信之后,内容显示空白,之后就无法在launcher上启动短信了。. @$ d2 t; N9 t+ e$ o) G" `
根据网上和众多帖子的反馈,大部分情况是收到由nokia发出的带有换行的短信造成javascript解析失败(所以重启也是没有效果的),官方貌似没有解决这个bug。
! @$ d6 ?: a0 a# u) c在清风大大的帖子10#,可以通过清除短信数据恢复短信的功能。
, E0 \- q+ d8 Z" p4 q6 Ghttp://www.treo8.com/bbs/viewthr ... hlight=%B6%CC%D0%C5% _; P' H5 I; U9 r0 x& I
大致就是操作sqlite数据删除.db3数据库中的com_palm_messaging_data_ChatThread数据表。' V6 N, U& y) u' W6 R# A6 W+ F
既然是操作数据库,那么就可以通过一些方法删除数据表中引起问题的几条数据,这样就正常了。因此这里的方法虽然繁琐,但是不用全部清除短信,性价比还是可以的。2 W( p! f% j; {3 a/ g w+ }% s
下午在机子上实验了一下,群众纷纷表示有效果(没有删除联系人)5 \) s: L" I6 ]- t
可以在手机上直接用安装的terminal操作,但是手机屏幕木有电脑大,建议用电脑上的ssh工具(putty等)连接到手机上操作:" [, g+ D. U* w) ^2 A# ]) a, J a: n# @
1. 备份原数据库,这样即使操作错误之后也有挽救的余地。
% w; Y3 }( V& D$ p 建议直接使用
" v2 {! D( T4 G3 w. ?7 a cp /var/luna/data/dbdata/* /media/internal/. _& r! {$ l; {/ [2 P4 T2 o
这样会把dbdata文件夹下的所有用户相关的数据库文件都复制到/media/internal 即u盘目录下。
- A! d1 ~: K8 a+ x7 u" `3 v2. 开始操作数据库,和用户机器所有数据信息有关的数据库是PalmDatabase.db3。
$ B4 l& e* x1 Q sqlite3 /var/luna/data/dbdata/PalmDatabase.db3
6 [" K5 r4 M4 I3 y 这时候进入sqlite界面,与短信内容相关的数据表是com_palm_messaging_data_ChatThread,主要就是对这个表操作。& j9 ]) K q, {% h* b, L
大概要清楚引起问题的短信的一些信息,比如号码是什么,或者其他一些信息。
" }. O# Z6 z- r/ e I0 E# J* v* P 可以使用:
! k( O. n6 c* N3 c9 N* h$ B select * from com_palm_messaging_data_ChatThread; (注意有分号的,在sqlite中查询语句以分号结束)
3 h0 h- e" t' R/ [ Q7 y" i5 K 来查看所有记录信息,我们甚至可以发现以前删除的信息也依然还在数据库里面。1 F+ p1 |; b. ~$ r* V
查找引起问题的短信信息,基本上能够知道号码就可以了。如果已经知道号码就可以跳过上面这些。* p4 m9 u F+ m, w6 L$ X5 b+ C& @
利用已经知道的信息查看问题短信:
" J1 v; u0 h% W! @* g7 v select * from com_palm_messaging_data_ChatThread where chatAddress="+86137!@#@$#@$#"; (引号里填入电话号码,同样注意结尾有分号)
/ R+ H+ l* }" W' {' T 在这个数据库中,chatAddress字段表示电话号码,以下是所有字段,如果看不到字段,在命令里输入.headers on
# g! J6 t$ k w7 O* L% nsummary|flags|priority|firstName|lastName|name|trailingDigits|chatTimeStamp|pictureLocation|chatAddress|imAvatarLocation|draftText|availability|customMessage|serviceName|type|statusAddress|totalCount|unreadCount|id|_class_id|_mod_num|_flags
% ~# e, G R2 X0 M. a0 { 这时候就会列出相应的几条短信了。 F( T" W3 e# \% N, n
仔细查看是否是相关人的短信,如果不是继续限定一些字段去找,否则容易误删除。
, [* R H' U0 ^5 [3. 如果确认找到相关的短信,那么使用命令删除:
# e4 {% {1 _! d) Q- ?1 ? delete from com_palm_messaging_data_ChatThread where chatAddress="+86137!@#@$#@$#"; 0 ?! {- `% B) d6 [: B0 K
其实就是把前面select语句中的select替换成delete就可以。
7 d( O- t+ m1 m4 {' l2 E1 A我实验的时候不用重启就能正常进入短信了。# q) s% g& z" ~5 P& O8 C0 L
很繁琐,sqlite官方也没有好用的图形界面可以移植,有时间弄弄图形化的操作。
; Q w2 I) s7 p5 Z' F' A
& m5 b5 d5 R5 y- F+ O8 q7 @8 {[ Edited by Stingrey on 2010-9-4 21:03 ] |
|