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が送信された場合、オブザーバーはアクティビティが完了するのを待ちます(おそらく1つのスレッドを使用するため)、呼び出すことができます。ただし、問題は、それが呼び出され、メソッド呼び出しsms_sent_cursor.moveToNext()が最後のSMSを呼び出し、他の4つが無視される場合です。

だから私はmoveToNext()からmove(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 に答える