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