2012-02-07 52 views
0

,此代码的工作,没有错误或异常:sqliteexception星系没有这样的列,即使s2的,如果列是在模拟器上目前

getContentResolver().delete(Uri.parse("content://sms/"), "body = ? and date = ?", new String[]{body,date)}); 

短信被正确删除。

但是当我在galaxy s2上试试这个时,我有一个sqliteexception没有这样的列。

我检查有:

Cursor columns = getContentResolver().query(Uri.parse("content://sms"), null,null,null,null); 
    for (int i=0;i<columns.getColumnCount();i++){ 
     Log.i("name", columns.getColumnName(i)); 
    } 

如果列在那里,这是的情况下,他们都在场。它应该在模拟器上的星系s2上很好地工作。我不知道这是否在其他设备上正常工作或相同。但是这个异常来自哪里?

这里是异常日志:

02-07 20:44:32.364: E/AndroidRuntime(14658): 
android.database.sqlite.SQLiteException: no such column: body: , 
while compiling: SELECT _id FROM threads WHERE _id IN (SELECT DISTINCT thread_id FROM 
sms WHERE (body = ? and date = ?) UNION SELECT DISTINCT thread_id FROM wpm WHERE 
(body = ? and date = ?) UNION SELECT DISTINCT thread_id FROM pdu WHERE (locked = 1 
AND body = ? and date = ?)) 

和这里“内容://短信”返回的列与光标:

02-07 20:53:21.045: W/KeyCharacterMap(14961): No keyboard for id 0 
02-07 20:53:21.060: W/KeyCharacterMap(14961): Using default keymap: /system/usr/keychars/qwerty.kcm.bin 
02-07 20:53:26.045: I/ApplicationPackageManager(14961): cscCountry is not German : FTM 
02-07 20:53:26.320: I/name(14961): _id 
02-07 20:53:26.320: I/name(14961): thread_id 
02-07 20:53:26.320: I/name(14961): address 
02-07 20:53:26.320: I/name(14961): person 
02-07 20:53:26.320: I/name(14961): date 
02-07 20:53:26.320: I/name(14961): protocol 
02-07 20:53:26.320: I/name(14961): read 
02-07 20:53:26.320: I/name(14961): status 
02-07 20:53:26.320: I/name(14961): type 
02-07 20:53:26.320: I/name(14961): reply_path_present 
02-07 20:53:26.320: I/name(14961): subject 
02-07 20:53:26.320: I/name(14961): body 
02-07 20:53:26.320: I/name(14961): service_center 
02-07 20:53:26.320: I/name(14961): locked 
02-07 20:53:26.320: I/name(14961): error_code 
02-07 20:53:26.320: I/name(14961): seen 
02-07 20:53:26.325: I/name(14961): deletable 
02-07 20:53:26.325: I/name(14961): hidden 
02-07 20:53:26.325: I/name(14961): group_id 
02-07 20:53:26.325: I/name(14961): group_type 
02-07 20:53:26.325: I/name(14961): delivery_date 
+0

你确定galaxy s2有相同的内容提供商列吗?我怀疑不是。我会打印出你试图查询的URI的元数据,以确保列存在。 – kosa 2012-02-07 15:14:43

+0

我该怎么做?谢谢 – Samet 2012-02-07 19:56:11

回答

2

我有同样的场景下的消息被删除在模拟器,我的HTC Desire,银河迷你,但抛出的Galaxy S的例外,银河SL

这就是我所做现在..将提高/更新我的答案..as当前的实现是WO rking精细

try 
      { 

       Uri deleteUri = Uri.parse("content://sms"); 
       int i= getContentResolver().delete(deleteUri, "address=? and date=?", new String[] {Phone, Time}); 
       Log.d("*****GE *********", Phone +" "+ Time + " ^^"+i); 

      } 
      catch(Exception ex) 
      { 
       Log.d("deleteEx", ex.toString()); 
       Uri deleteUri = Uri.parse("content://sms"); 
       int i= getContentResolver().delete(deleteUri, "address=? and date=?", new String[] {Phone, Time}); 
       Log.d("*****GE *********", Phone +" "+ Time + " ^^"+i); 
      } 
      finally 
      { 

       finish(); 
       overridePendingTransition(R.anim.nothing, R.anim.animout);} 

我已经把代码中的尝试,如果其抛出异常,我做同样的渔获物和它的作品catch..I尝试第一次。 希望它有帮助。 我不是专业人士..所以我不知道这种情况发生的原因

+0

是的,我不知道eather的原因,它肯定是三星Galaxy手机的一个问题。 – Samet 2012-03-14 03:06:02

相关问题