2014-04-25 102 views
0

我的應用程序會聽取新的sms'n。現在,當我收到一個新的我創建一個SmsMessage。爲了進一步操作這個,我需要消息的Id。所以我查詢這樣的內容解析器:從pdus對象獲取messageID

final Bundle bundle = intent.getExtras(); 

    try { 

     if (bundle != null) { 
      //get the protocol discription unit (SMSs) 
      final Object[] pdusObj = (Object[]) bundle.get("pdus"); 

      for (int i = 0; i < pdusObj.length; i++) { 

       SmsMessage currentMessage = SmsMessage.createFromPdu((byte[]) pdusObj[i]); 
       String phoneNumber = currentMessage.getDisplayOriginatingAddress(); 
       String message = currentMessage.getDisplayMessageBody(); 
       long time_rcv = currentMessage.getTimestampMillis(); 

       String [] relevantColumns = {"_id", "address", "body", "date_sent"}; 
       Cursor cursor = context.getContentResolver().query(
         Uri.parse("content://sms/inbox"), 
         relevantColumns, 
         "address = '" + phoneNumber + "' AND body = '" + message 
           + "' AND date_sent = '" + time_rcv + "'", 
         null, 
         null); 

       if (cursor != null && cursor.moveToFirst()) { 
        int id = Integer.valueOf(cursor.getString(0)); 
        Log.d(TAG,"ID SMS: " + id); 
       } 
       else 
        Log.e(TAG,"Failed to find ID"); 

       Log.i(TAG, "FROM: " + phoneNumber + "; MSG: " + message); 

       Toast.makeText(context, "From: " + phoneNumber + ", MSG: " + message, Toast.LENGTH_LONG).show(); 
      } 
     } 
    } catch (Exception e) { 
     Log.e(TAG, "Exception receiver" + e); 

    } 

無論發生什麼,它從來沒有發現消息。

回答

0

我的代碼是正確的。唯一的問題是,在我的receivebroadcast完成之前,短信不在短信/收件箱中。因此,下次您運行代碼並手動填寫字段時,代碼會查找短信併爲您提供該ID。