2012-07-02 52 views
1

如何搜索短信收件箱并显示来自特定号码的最新消息。例如,搜索“999999999”并显示从该号码收到的最后一条消息。有没有办法做到这一点?搜索短信收件箱

我使用此代码返回的邮件数我的收件箱

TextView view; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    view = (TextView) findViewById(R.id.textView1); 

    final Uri SMS_INBOX = Uri.parse("content://sms/inbox"); 
    Cursor c = getContentResolver().query(SMS_INBOX, null, null, null, null); 
    int unreadMessagesCount = c.getCount(); 
    c.deactivate(); 

    view.setText(String.valueOf(unreadMessagesCount)); 

回答

6

如果您只需要通过一个特定号码使用发送的最后一条消息是:

final Uri SMS_INBOX = Uri.parse("content://sms/inbox"); 
Cursor cursor = getContentResolver().query(SMS_INBOX, null, "address = ?", 
     new String[] {"9999999999"}, "date desc limit 1"); 
if(cursor.moveToFirst()) { 
    // Do something 
    Log.v("Example", cursor.getString(cursor.getColumnIndex("body"))); 
} 
cursor.close(); 

How many database columns associated with a SMS in android?的第二个答案是SMS中不同列的很好的参考。

1

尝试为:

final Uri SMS_INBOX = Uri.parse("content://sms/inbox"); 
Cursor c = getContentResolver().query(SMS_INBOX,null,null, null,"DATE desc"); 
if(c.moveToFirst()){ 
     for(int i=0;i<c.getCount();i++){ 
      String body= c.getString(c.getColumnIndexOrThrow("body")).toString(); 
      String number=c.getString(c.getColumnIndexOrThrow("address")).toString(); 
      if(number=="999999999") 
      { 
      //get message body here 
        break; 
      } 
      else 
      c.moveToNext(); 
     } 
    } 
c.close();