CERCA
PER MODELLO
FullScreen Chatbox! :)

Utente del giorno: carotix con ben 2 Thanks ricevuti nelle ultime 24 ore
Utente della settimana: 9mm con ben 7 Thanks ricevuti negli ultimi sette giorni
Utente del mese: 9mm con ben 31 Thanks ricevuti nell'ultimo mese

Visualizzazione dei risultati da 1 a 1 su 1
Discussione:

Broadcast receiver per sms inviati

Se questa discussione ti è stata utile, ti preghiamo di lasciare un messaggio di feedback in modo che possa essere preziosa in futuro anche per altri utenti come te!
  1. #1
    Androidiano L'avatar di Supergiox


    Registrato dal
    Oct 2010
    Messaggi
    179

    Ringraziamenti
    5
    Ringraziato 10 volte in 8 Posts
    Unhappy

    Broadcast receiver per sms inviati

    Salve a tutti, sto scrivendo un'app che invia e riceve sms e al momento riesco ad avere una conferma che il messaggio sia stato inviato (o meno) tramite un broadcast receiver.
    Per identificare quale sms è stato inviato ho pensato di aggiungere all'intent degli extras, ed in particolare uno contenente il numero del destinatario e l'altro contenente il testo del messaggio.
    Così facendo però riesco ad avere una "notifica" corretta solo per il primo messaggio, nel senso che dal secondo messaggio in poi ricevo comunque la conferma di sms inviato ma al momento di leggere gli extras del messaggio relativo ottengo sempre quelli del primo messaggio inviato.
    Il risultato è quindi che se invio 3 sms, questi vengono consegnati correttamente, ma la mia app dice che sono stati inviati 3 sms tutti uguali (al primo).
    Un altra cosa strana è che quando ricevo un nuovo sms in un certo senso si resetta il broadcast receiver e quindi il successivo sms che invierò sarà notificato correttamente... dal secondo in poi stessa storia!

    Vi posto il codice della mia classe SmsSender:
    codice:
    class SmsSender{
    private final String SENT = "SMS_SENT";
    private static SmsSender instance=null;
    private BroadcastReceiver br;
    SmsSender(){}
    
        //SINGLETON
    public static SmsSender getSmsSender(Context ctx, AddressBook ab, DBManager dbm){
        if(instance==null && ctx!=null){
        instance=new SmsSender();
        instance.ctx=ctx;
        instance.ab=ab;
        instance.dbm=dbm;
        instance.setBR();
        }
        return instance;
    }
    
    private void setBR(){
        br=new BroadcastReceiver(){
             public void onReceive(Context arg0, Intent arg1) 
                {  
                    br=null;
    
                    switch (getResultCode())                
                    {              
                    case Activity.RESULT_OK:  
                        if(arg1.hasExtra("text") && arg1.hasExtra("receiver")){
                                Log.i("SMS","SMS sent to "+arg1.getStringExtra("receiver")+": "+arg1.getStringExtra("text"));
                        }
                    break;
                        .....
                     }
                }
            };
    
            ctx.registerReceiver(br, new IntentFilter(SENT));
    
    }
    
    public void send(String phoneNumber, String text) {
        String nums[]=phoneNumber.split(",");
    
    
        for(int i=0; i<nums.length; ++i){
        if(nums[i]!="" && text!=""){
                    SmsManager sms = SmsManager.getDefault();
    
                    ArrayList<String> parts = sms.divideMessage(text);
                    messageCount = parts.size();
                    ArrayList<PendingIntent> sentIntents = new ArrayList<PendingIntent>(messageCount);
                    Intent myIntent=new Intent(SENT);
    
                    **myIntent.putExtra("receiver", nums[i]);
                    myIntent.putExtra("text", text);**
    
                    for (int j = 0; j < messageCount; j++){
                        sentIntents.add(PendingIntent.getBroadcast(ctx, 0, myIntent,0));
                    }
    
                        sms.sendMultipartTextMessage( nums[i].trim(), null, parts, sentIntents, null);
                }else{
                Notifica.notify(ab.getContactName(nums[i])+": Error sending SMS",ctx);
                }}
    
    
     }}
    Grazie a tutti per l'attenzione!

  2.  

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire risposte
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Torna su
Privacy Policy