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)
但是我不知道要把这些方法的参数放到一个特定的消息中,这个消息是被调用的,而不是最后一个消息。
任何人都有任何想法或知道其他任何方法吗?
谢谢!
答案 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();