SMSObserver:从moveToNext更改为move(int offset)或moveToPosition(int position)以达到特定索引

时间:2013-01-19 17:11:06

标签: android

  public void onChange(boolean selfChange) {
        Log.e("Info","Notification on SMS observer");
        Cursor sms_sent_cursor = mContext.getContentResolver().query(SMS_STATUS_URI, null, null, null, null);
           if(sms_sent_cursor.moveToNext()){ //This is the line I would like to change.
                 String protocol = sms_sent_cursor.getString(sms_sent_cursor.getColumnIndex("protocol"));

           }

  }

嗯,问题是,当我的应用程序正在运行其他一些活动时,ContentObserver保持活动状态,观察SMS活动,但是如果在我的应用程序正在执行其他一些活动时发送了5条SMS,则Observer会等待活动。完成(因为它可能使用一个线程)所以它可以被调用。但问题是当它被调用时,方法调用sms_sent_cursor.moveToNext()将调用最后的短信,其他的四肢将被忽略。

这就是我考虑从moveToNext()更改为move(int offset)moveToPosition(int position)

的原因

但是我不知道要把这些方法的参数放到一个特定的消息中,这个消息是被调用的,而不是最后一个消息。

任何人都有任何想法或知道其他任何方法吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

您可以尝试使用 -

  Cursor sms_sent_cursor = mContext.getContentResolver().query(SMS_STATUS_URI, null, "date > "+sLastSeenSmsDate, null, null);
  if(sms_sent_cursor.moveToFirst()){ 
      do {
           String protocol = sms_sent_cursor.getString(sms_sent_cursor.getColumnIndex("protocol"));
         } while (query.moveToNext());
  }
  query.close();