2012-05-17 38 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