0
  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,则观察者等待活动完成(因为它可能使用一个线程)所以它可以被调用。但问题是当它被调用时,方法调用sms_sent_cursor.moveToNext()将调用最后一条短信,而其他四个将被忽略。

这就是为什么我正在考虑从moveToNext()tomove(int offset)moveToPosition(int position)

但我不知道将什么作为这些方法的参数以转到特定消息,即调用它的消息而不是最后一个消息。

任何人有任何想法或知道任何其他方式来做到这一点?

谢谢!

4

1 回答 1

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();
于 2013-01-19T19:44:25.710 回答