2015-10-01 13 views
16

Cosa devo passare come secondo parametro < "formato"> per createFromPdu il metodo(),smsmessage createFromPdu con il formato di parametro in più

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

Come nella versione più recente della linea seguente Android di codice è deprecato,

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

Ho cercato su Internet ma nulla mi è stato chiaro. Ho letto in doc Android troppo,

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

+0

Hai mai scoprire cosa mettere lì? –

+0

No, non fino ad ora, usando quello deprecato. –

+0

controlla la mia risposta –

risposta

48

Fondamentalmente questo è stato introdotto per Android Marshmallow per sostenere "3GPP" per i messaggi/UMTS/LTE GSM in formato 3GPP o "3GPP2" per i messaggi CDMA/LTE nel formato 3GPP2.

Ecco l'esempio completo per 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

grazie mille Ci proverò :) –

+0

Credo che sarebbe meglio se tu prendessi l'istruzione 'String format = myBundle.getString (" format ");' al di fuori del ciclo proprio sotto 'Object [ ] pdus = (Object []) myBundle.get ("pdus"); 'sarebbe buono – Tristus

+0

Nel mio caso non ho potuto leggere sms nel dispositivo Google nexus con questo codice mentre ho implementato il permesso di runtime per leggere sms, inviare sms, ha ricevuto sms e ha letto il contatto. –

Problemi correlati