2012-05-17 14 views
1

我一直在开发必须识别SMS命令的应用程序。所以,我需要知道我怎样才能得到最后的短信。我知道我需要使用BroadcastReceiver(我使用它),但我不知道如何才能在课堂上获得最后的短信。请帮助我,我希望你能做到。先谢谢你。如何从设备获取最后的短信?

+0

你想读最后的短消息,或者你想编程短信接收? –

+0

结帐本教程:http://blog.evoxmusic.fr/dev/android-content-observer-get-the-last-sms-sent-and-avoid-multiple-wrong-pickup.html亲切的问候, Bo –

+0

查看此链接[SmsAutoReceiver](http://xjaphx.wordpress.com/2011/07/14/create-an-application-auto-receiving-new-message-sms/)链接包含[SmsAutoReceiver] (http://code.google.com/p/android-newbie-sourcecode/source/browse/trunk/SmsAutoReceiver/)。查看此代码,此代码将帮助您获取您收到的最后一条短信。 – Venky

回答

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); 

如果它是正确的,那就说对了。

2

感谢博为链接到我的博客。

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

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

,然后移动到第一SMS(第一次是最后一个接收器;))

cursor.moveToFirst(); 

看看我的博客,我是如何做到的博告诉你;)

//删除链接

干杯

+0

请更新链接或删除它! – null