0

これは、コンテキストメニューで表示ボタンが押されたときに受信トレイメッセージを読むために使用しているコードですが、メッセージを読むことができず、最初のメッセージの本文しか取得できません。

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

}
}              
4

3 に答える 3

2

これを試して:

if(c.moveToFirst()){

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

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

for ループの反復ごとに次のレコードに移動する必要があります。その場合のみ、そこにすべてのメッセージが表示されます。ここで、for ループで、文字列の SMS を取得した後、その SMS を使用してどこかに表示できます。毎回、それはそれに次のSMSをつかみます!

あなたが要点を得たことを願っています!

于 2012-02-23T06:19:05.477 に答える
0

これを試して:

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

if(c.moveToFirst()){

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

       } while(c.moveToNext());

}
于 2013-09-25T06:11:18.337 に答える