Как читать сообщения из входящих - PullRequest
0 голосов
/ 23 февраля 2012

Это код, который я использую для чтения входящих сообщений, когда в контекстном меню нажата кнопка просмотра, но я не могу читать сообщения, я получаю только текст первого сообщения.

 public class Smsread extends Activity {

@Override
public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  TextView view = new TextView(this);
  Uri uri = Uri.parse("content://sms/inbox");
  Cursor c= getContentResolver().query(uri, null, null ,null,null);
  startManagingCursor(c);
  String sms = "";
  if(c.moveToFirst()){
      for(int i=0;i<c.getCount();i++){
   sms= c.getString(c.getColumnIndexOrThrow("body")).toString();
  // sms=c.getString(c.getColumnIndexOrThrow("address")).toString();

      }
      c.close();
      c.moveToNext();

      /*
  sms ="From :" + c.getString(2) + " : " + c.getString(11)+"\n";         
  */
  }

  view.setText(sms);
  setContentView(view);

}
}              

Ответы [ 3 ]

2 голосов
/ 23 февраля 2012

Попробуйте это:

if(c.moveToFirst()){

      for(int i=0;i<c.getCount();i++){

         sms= c.getString(c.getColumnIndexOrThrow("body")).toString();
         c.moveToNext();
      }
}

Вам придется переходить к следующей записи только для каждой итерации цикла for. Затем вы получите все сообщения. Здесь, в цикле for, после получения смс String вы можете использовать эту смс для отображения где-нибудь. Каждый раз он будет загружать в него следующие смс!

Надеюсь, вы поняли!

0 голосов
/ 25 сентября 2013

Попробуйте это:

String[] sms=new String[c.getCount()];

if(c.moveToFirst()){

      do{
         sms= c.getString(c.getColumnIndexOrThrow("body")).toString();

       } while(c.moveToNext());

}
0 голосов
/ 06 апреля 2013

Вы должны изменить

 sms= c.getString(c.getColumnIndexOrThrow("body")).toString();

на

 sms+= c.getString(c.getColumnIndexOrThrow("body")).toString();
...