1

SMSの受信トレイを検索して、特別な番号からの最新のメッセージを表示するにはどうすればよいですか。たとえば、「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));
4

2 に答える 2

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();

AndroidのSMSに関連付けられているデータベース列の数に対する2番目の回答 SMSのさまざまな列の優れたリファレンスです。

于 2012-07-02T21:53:01.273 に答える
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();
于 2012-07-02T21:06:27.880 に答える