如何从收件箱中阅读邮件

时间:2012-02-23 06:16:51

标签: android sms provider inbox

这是我在上下文菜单中按下查看按钮时用于读取收件箱消息的代码,但我无法读取消息,我只得到第一条消息的正文。

 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 个答案:

答案 0 :(得分:2)

试试这个:

if(c.moveToFirst()){

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

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

你必须为for循环的每次迭代移动到下一条记录。然后,你将获得所有消息。在这里,在你获得String短信之后,你可以使用那些短信出现在某处。每一次,它都会抓住下一个短信!

希望你明白这一点!

答案 1 :(得分:0)

你必须改变

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

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

答案 2 :(得分:0)

试试这个:

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

if(c.moveToFirst()){

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

       } while(c.moveToNext());

}