当前位置: 代码迷 >> Android >> 短信拦截,老是延时一条短信,求解
  详细解决方案

短信拦截,老是延时一条短信,求解

热度:27   发布时间:2016-04-28 07:16:27.0
短信拦截,总是延时一条短信,求解。
HashSet set=new HashSet();
try{
ContentResolver cr=getContentResolver();
String[] exct=new String[]{"_id","thread_id","address","person",
"body","date","type"};
Uri uri=Uri.parse(SMS_URI_ALL);
Cursor cursor=cr.query(uri, exct, null, null, "date desc");
if(cursor.moveToNext()){
Cursor cur=cr.query(uri, exct, null, null, "date desc");
while(cur.moveToNext()){
sms=new Sms();
sms.setPersion(cur.getString(3));
sms.setAddress((cur.getString(2)));
sms.setBody(cur.getString(4));
sms.setThread_id(cur.getString(1));
SimpleDateFormat dateFormat=new SimpleDateFormat("MM-dd");
Date date=new Date(Long.parseLong(cur.getString(5)));
sms.setDate(dateFormat.format(date));
SimpleDateFormat datetimeFormat=new SimpleDateFormat("hh:mm");
Date datetime=new Date(Long.parseLong(cur.getString(5)));
sms.setDatetime(datetimeFormat.format(datetime));
sms.setType(cur.getString(6));
if(set.add(sms.getThread_id())){
list.add(sms);
}
}
cur.close();
}

上面是获取手机短信的代码,比如我发送两条短信,“1”,“2”,第一次发送“1”的时候,调用这个方法读取数据库的时候,没有值,但是数据库里面有“1”这个值,第二次发送“2”的时候,调用这个方法,获得“1”这个sms,但是数据库里面有“1”“2”两个值,求解这是为什么,我认为cr没有关闭线程不能刷新造成的,但是又不知道怎么修改,求指导,,,

------解决方案--------------------
数据少一个的原因可能是moveToNext()用了两次
------解决方案--------------------
楼主自己不能顶了,友情帮顶
------解决方案--------------------
cursor.moveToFirst()你不走这个吗?
  相关解决方案