2013-03-31 9 views
7

Ho cercato di ottenere un ID messaggio che viene salvato nel telefono. Ma non sono riuscito a capirlo. Il mio codice esistente è quiOttieni ID thread messaggio o _id da onReceive android

@Override 
public void onReceive(Context context, Intent intent) { 
    String address = ""; 
    String message = ""; 
    String msg_id=""; 
    Bundle extras = intent.getExtras(); 
    if (extras != null) { 
     Object[] smsExtra = (Object[]) extras.get("pdus"); 

     for (int i = 0; i < smsExtra.length; i++) { 
      SmsMessage sms = SmsMessage.createFromPdu((byte[]) smsExtra[i]); 
      message += sms.getMessageBody(); 
      address = sms.getOriginatingAddress(); 
     } 
     sms = new Sms(msg_id,message, address); 
     UploadSms up = new UploadSms(); 
     up.start(); 
     Toast.makeText(context, 
       "SMS Received>>" + message + "From >>" + address, 
       Toast.LENGTH_LONG).show(); 
    } 

} 

Con questo ho corpo sms e numero del mittente. Ma so che esiste un numero univoco per ogni messaggio nel telefono Android, l'ho recuperato. Ma impossibile recuperare nei metodi onReceive. Grazie

risposta

0

Dovrai analizzare la PDU di SMS (nel formato PDU grezzo) poiché sul livello dell'applicazione Android non esiste API per recuperare l'intestazione dei dati utente. Credo che l'identificatore di messaggi brevi risieda all'interno dell'intestazione dati utente (ottetto 1). Si prega di fare riferimento al post Parsing SMS PDU.

In questo post uno degli utenti menziona un freeware denominato "SMSLib" (sotto Licenza APACHE) per analizzare ed estrarre i parametri del messaggio. L'ID messaggio può essere estratto utilizzando il metodo getMessageId() - Metodo nella classe org.smslib.Message.

Spero che questo aiuti.

+0

Come posso ottenere l'ID SMS da SMSMessage? –