我一直在开发必须识别SMS命令的应用程序。所以,我需要知道如何获得最后的短信。我知道我需要使用BroadcastReceiver(我使用它),但我不知道如何在这个类中获得最后的短信。请帮助我,我希望你能做到。先感谢您。
答案 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);
如果它是正确的那么就做对了。