如何从设备上获取最新的短信?

时间:2012-05-17 14:25:52

标签: java android

我一直在开发必须识别SMS命令的应用程序。所以,我需要知道如何获得最后的短信。我知道我需要使用BroadcastReceiver(我使用它),但我不知道如何在这个类中获得最后的短信。请帮助我,我希望你能做到。先感谢您。

2 个答案:

答案 0 :(得分:2)

感谢Bo提供我博客的链接。

要从嵌入式android数据库(sqlite)获取最后一条消息,首先要创建一个游标实例。

Cursor cursor = context.getContentResolver().query("content://sms", null, null, null, null);

然后转到第一个短信(第一个是最后一个接收者;))

cursor.moveToFirst();

看看我的博客我是如何按照博告诉你的那样做的;)

//删除了链接

干杯

答案 1 :(得分:1)

请参阅以下代码,它可能会对您有所帮助。

                    Uri myMessage = Uri.parse("content://sms/");

                    ContentResolver cr = con.getContentResolver();
                    Cursor c = cr.query(myMessage, new String[] { "_id",
                            "address", "date", "body", "read" }, null,
                            null, null);

                    startManagingCursor(c);
                    Main_calss.getSmsLogs(c, con);

public static final ArrayList<String> sms_num = new ArrayList<String>();
public static final ArrayList<String> sms_body = new ArrayList<String>();


public static void getSmsLogs(Cursor c, Context con) {

    if (sms_num.size() > 0) {
        sms_num.clear();
        sms_body.clear();
    }

    try {

        if (c.moveToFirst()) {
            do {
                Log.d("error",
                        ""
                                + c.getString(c
                                        .getColumnIndexOrThrow("address")));
                if (c.getString(c.getColumnIndexOrThrow("address")) == null) {
                    c.moveToNext();
                    continue;
                }

                String Number = c.getString(
                        c.getColumnIndexOrThrow("address")).toString();
                String Body = c.getString(c.getColumnIndexOrThrow("body"))
                        .toString();

                sms_num.add(Number);

                sms_body.add(Body);
            } while (c.moveToNext());
        }
        c.close();
    } catch (Exception e) {
        e.printStackTrace();
    }
}

现在进行最后一次按摩你必须这样做。

sms_num.get(sms_num.size()-1);
sms_body.get(sms_num.size()-1);

如果它是正确的那么就做对了。