1

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

4

2 回答 2

2

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

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

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

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

cursor.moveToFirst();

看看我的博客,我是如何按照 Bo 告诉你的 ;)

// 删除链接

干杯

于 2012-05-17T14:49:59.880 回答
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);

如果它是正确的,那么让它正确。

于 2012-05-17T14:58:21.773 回答