2012-06-06 34 views
5

Desidero sviluppare un'app che tenga traccia degli SMS inviati/ricevuti. Voglio dire, quando un utente invia un messaggio dal suo dispositivo, i dettagli del messaggio devono essere salvati su una tabella da me fornita. Allo stesso modo, quando il dispositivo riceve SMS, anche questo dovrebbe essere salvato in una tabella fornita da me.Come tenere traccia dei messaggi in Android?

Nota che l'utente utilizza l'applicazione di messaggio predefinita di Android per inviare un messaggio. Voglio dire, non sto integrando la mia applicazione con l'applicazione di messaggio predefinita. Devo solo tenere traccia di tutti i messaggi inviati da quell'applicazione mentre Android tiene traccia di tutti i messaggi inviati nella cartella Messaggio inviato della sua app messaggio.

Come faccio? Mi aiuti per favore. Non ho bisogno di risposte, ma ho bisogno di qualche indizio per farlo.

Si prega di non suggerire di leggere i messaggi da Inbox e Outbox ecc. Perché voglio salvare i messaggi quando l'utente lo invia/riceve. Non dopo l'invio o lo riceve.

+2

Cosa hai provato e qual è il problema che stai affrontando? Basta che sia semplice. –

+0

@AndroSelva Non ho idea di come farlo. Non voglio una risposta, ma voglio qualche idea. –

+0

@Mido Non voglio leggere i messaggi dalla Posta in arrivo e mostrarlo. Voglio salvare il messaggio quando l'utente lo invia. –

risposta

9

Questo è facile da fare con una trasmissione ricevitore scrittura nel vostro manifesto:

edit: sembra solo a lavorare per SMS_RECEIVED vedere questo thread

<receiver android:name=".SMSReceiver" android:enabled="true"> 
<intent-filter android:priority="1000"> 
     <action android:name="android.provider.Telephony.SMS_RECEIVED"/> 
     <action android:name="android.provider.Telephony.SMS_SENT"/> 
</intent-filter> 
</receiver> 

e il permesso:

<uses-permission android:name="android.permission.RECEIVE_SMS" /> 

Quindi creare il ricevitore llike:

public class SMSReceiver extends BroadcastReceiver { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     if (intent.getAction().equals("android.provider.Telephony.SMS_RECEIVED")){ 
    //do something with the received sms   
     }else if(intent.getAction().equals("android.provider.Telephony.SMS_SENT")){ 
      //do something with the sended sms 
    } 
    } 
} 

per gestire uno SMS in arrivo potrebbe essere simile:

Bundle extras = intent.getExtras(); 
Object[] pdus = (Object[]) extras.get("pdus"); 
for (Object pdu : pdus) { 
     SmsMessage msg = SmsMessage.createFromPdu((byte[]) pdu); 
     String origin = msg.getOriginatingAddress(); 
     String body = msg.getMessageBody(); 
.... 
} 

Se si vuole evitare che uno sms di essere spinto nella casella di posta commen, si può raggiungere questo obiettivo con:

abortBroadcast(); 
+0

voglio solo conferma che, quando un utente tenta di inviare un messaggio dall'app messaggio predefinito, Android chiamerà la mia classe Receiver? –

+0

scusate, mi costruisco un'applicazione per essere sicuro e ricevo solo l'azione SMS_RECEIVED, non so perché ... lo testerò – 2red13

+0

http: // StackOverflow.it/questions/990558/android-broadcast-receiver-per-send-sms-messages – 2red13

1

Per favore, non chiamare abortBroadcast() impedirai ad altre app che ricevono la trasmissione ordinata SMS_RECEIVED. Questo è un cattivo comportamento, non è quello che tratta Android. Non capisco perché google lascia che lo sviluppatore interrompa le trasmissioni di intenti di sistema come gli SMS.

+2

Questa cosa di abortBroadcast ci consente di creare software per bloccare chiamate o sms in arrivo. Penso che questa sia una buona cosa che può essere usata come una brutta cosa, come un sacco di altre cose. Le persone possono usare una penna per uccidere, lasciar fermare per costruire penne. –

+0

Sono d'accordo. È molto utile per un sacco di buone caratteristiche. Non si dovrebbe interrompere tutti gli SMS in arrivo, ma il mio ricevitore è in grado di decidere: questo SMS è per me, quindi interrompere la trasmissione, altrimenti lasciarlo passare – 2red13

Problemi correlati