2015-10-01 73 views
16

我應該怎麼傳遞的第二個參數<「格式」>到createFromPdu()方法,SMSMessage createFromPdu有額外的參數格式

SmsMessage currentMessage = SmsMessage.createFromPdu((byte[]) pdusObj[i], format); 

如機器人下面的代碼行已廢棄的最新版本,

SmsMessage currentMessage = SmsMessage.createFromPdu((byte[]) pdusObj[i]); 

我在互聯網上搜索過,但沒有什麼是清楚的。我已讀入的Android文檔也

http://developer.android.com/reference/android/telephony/SmsMessage.html#createFromPdu(byte[],java.lang.String中)

+0

你有沒有發現放什麼呢? –

+0

直到現在,不使用已棄用的。 –

+0

檢查我的答案 –

回答

48

基本上這個被介紹的Android棉花糖,以支持在3GPP格式 「3GPP」 爲GSM/UMTS/LTE消息或 「3GPP2」用於3GPP2格式的CDMA/LTE消息。

這裏是SMSReceiver完整例子:

public class SMSReceiver extends BroadcastReceiver { 

public void onReceive(Context context, Intent intent) 
{ 
    Bundle myBundle = intent.getExtras(); 
    SmsMessage [] messages = null; 
    String strMessage = ""; 

    if (myBundle != null) 
    { 
     Object [] pdus = (Object[]) myBundle.get("pdus"); 

     messages = new SmsMessage[pdus.length]; 

     for (int i = 0; i < messages.length; i++) 
     { 
      if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { 
       String format = myBundle.getString("format"); 
       messages[i] = SmsMessage.createFromPdu((byte[]) pdus[i], format); 
      } 
      else { 
       messages[i] = SmsMessage.createFromPdu((byte[]) pdus[i]); 
      } 
      strMessage += "SMS From: " + messages[i].getOriginatingAddress(); 
      strMessage += " : "; 
      strMessage += messages[i].getMessageBody(); 
      strMessage += "\n"; 
     } 

     Log.e("SMS", strMessage); 
     Toast.makeText(context, strMessage, Toast.LENGTH_SHORT).show(); 
    } 
} 
} 
+0

非常感謝我會給它一個嘗試:) –

+0

我相信它會更好,如果你採取的語句'字符串格式= myBundle.getString(「格式」);'在循環之外就在對象[ ] pdus =(Object [])myBundle.get(「pdus」);'會很好 – Tristus

+0

在我的情況下,我無法用這段代碼在Google nexus設備中讀取sms,而我已經實現了讀取短信,發送短信,收到短信和閱讀聯繫。 –