这是我在上下文菜单中按下查看按钮时用于读取收件箱消息的代码,但我无法读取消息,我只得到第一条消息的正文。
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);
}
}
答案 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());
}