读取特定发件人的最后一条短信

时间:2016-04-14 06:04:21

标签: android

我正在构建一个从规范编号(vb#8888)读取最后一个短信的应用程序。代码工作得很好。我只有一个问题。当我从其他号码(vb#7777)获得新的短信时,我的代码停止从(v#8888)读取短信。如果我从(7777)删除新的短信比我的代码策略再次工作。我正在使用它来更新我的应用程序中的字符串。有人可以帮助我

这是我的代码

Uri mSmsinboxQueryUri = Uri.parse("content://sms/inbox");
 Cursor cursor1 = getContentResolver().query(mSmsinboxQueryUri, null, null, null, null);

String[] columns = new String[]{"address", "body"};

if(cursor1.moveToFirst()) {

     String address = cursor1.getString(cursor1.getColumnIndex(columns[0]));

if address.equalsIgnoreCase("+597*******")) {

body = cursor1.getString(cursor1.getColumnIndex(columns[3]));

Koers = (TextView) findViewById(R.id.Koersdiedag);

Koers.setText(body);//body

1 个答案:

答案 0 :(得分:1)

您的代码只是阅读收件箱中的最新消息,无论是谁来的。如果您想要来自该特定号码的最新消息,您可以调整查询以匹配该号码,并将结果限制为一条记录。

Uri mSmsinboxQueryUri = Uri.parse("content://sms/inbox");
String[] projection = {"address", "body"};
String phoneNumber = "+597*******";

Cursor cursor1 = getContentResolver().query(mSmsinboxQueryUri,
                                            projection,
                                            "address = ?",
                                            new String[] {phoneNumber},
                                            "date DESC LIMIT 1");

if (cursor1 != null && cursor1.moveToFirst()) {
    body = cursor1.getString(cursor1.getColumnIndex("body"));
    Koers = (TextView) findViewById(R.id.Koersdiedag);
    Koers.setText(body);
}