2015-10-01 13 views
16

Was sollte ich als zweiter Parameter < "Format" pass> zu createFromPdu() -Methode,SMSMessage createFromPdu mit zusätzlichen Parametern Format

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

Wie in neuester Version von Android folgenden Codezeile ist veraltet,

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

Ich habe im Internet gesucht, aber mir war nichts klar. Ich habe auch in Android-doc lesen,

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

+0

Haben Sie jemals herausfinden, was dort zu setzen? –

+0

Nein, bis jetzt, mit dem veralteten. –

+0

check meine Antwort –

Antwort

48

Grundsätzlich ist dieser eingeführt wurde für Android Eibisch "3GPP" für Format GSM/UMTS/LTE-Nachrichten in 3GPP zu unterstützen oder "3GPP2" für CDMA/LTE-Nachrichten im 3GPP2-Format.

Hier ist das vollständige Beispiel für 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

vielen Dank Ich werde es versuchen :) –

+0

Ich glaube, es wäre besser, wenn Sie die Anweisung 'String format = myBundle.getString (" format ");' außerhalb der Schleife direkt unter 'Object [ ] pdus = (Objekt []) myBundle.get ("pdus"); 'wäre gut – Tristus

+0

In meinem Fall konnte ich keine SMS in Google Nexus Gerät mit diesem Code lesen, während ich Runtime-Berechtigung für Lese-SMS, SMS senden, SMS erhalten und Kontakt gelesen haben. –

Verwandte Themen