registerReceiver - onReceive executado 2 vezes

Olá!
Eu tenho um fonte para envio de sms, que é o seguinte:

[code]
//Envia sms automaticamente
private void sendSMS(String phoneNumber, String message, int nIdReg){
String SENT = “SMS_SENT”+Integer.toString(nIdReg);
String DELIVERED = “SMS_DELIVERED”+Integer.toString(nIdReg);

    Intent iSent = new Intent(SENT);
    Intent iDelivered = new Intent(DELIVERED);
    
    iSent.putExtra("nId", nIdReg);
    iSent.putExtra("cPh", phoneNumber);
    iSent.putExtra("cMsg", message);
    iDelivered.putExtra("nId", nIdReg);
    iDelivered.putExtra("cPh", phoneNumber);
     
    PendingIntent sentPI = PendingIntent.getBroadcast(this, 0,iSent, 0);
    PendingIntent deliveredPI = PendingIntent.getBroadcast(this, 0,iDelivered, 0);
    
    //Mensagem enviada com ou sem sucesso
    registerReceiver(new BroadcastReceiver(){
    	@Override
    	public void onReceive(Context arg0, Intent arg1){
        	int nId = arg1.getIntExtra("nId",0);
        	int nIdApp = R.string.app_name+nId;
        	String cPh = arg1.getStringExtra("cPh");
        	String cMsg = arg1.getStringExtra("cMsg");
        	String cN = "0";
        	            	
        	switch (getResultCode()){
            	case Activity.RESULT_OK:
            		log.insert(nId,"O sms foi enviado para o número "+cPh+" com sucesso",db);
            		cN = "1";
            		break;
            	case SmsManager.RESULT_ERROR_GENERIC_FAILURE:
                 	        log.insert(nId,"Não foi possível enviar o sms para o número "+cPh+". Erro genérico, verifique o crédito",db);
                	        startNotification("Erro ao enviar sms","Erro genérico","O sms não foi enviado para o número "+cPh+". Verifique os logs clicando aqui.",nIdApp,nId,false);
                     	break;
                case SmsManager.RESULT_ERROR_NO_SERVICE:
                	log.insert(nId,"Não foi possível enviar o sms para o número "+cPh+". Fora de área/serviço",db);
                	startNotification("Erro ao enviar sms","Fora de área/serviço","O sms não foi enviado para o número "+cPh+". Verifique os logs clicando aqui.",nIdApp,nId,false);
                	break;
                case SmsManager.RESULT_ERROR_NULL_PDU:
                	log.insert(nId,"Não foi possível enviar o sms para o número "+cPh+". PDU nulo",db);
                	startNotification("Erro ao enviar sms","PDU nulo","O sms não foi enviado para o número "+cPh+". Verifique os logs clicando aqui.",nIdApp,nId,false);
                	break;
                case SmsManager.RESULT_ERROR_RADIO_OFF:
                	log.insert(nId,"Não foi possível enviar o sms para o número "+cPh+". Radio off",db);
                	startNotification("Erro ao enviar sms","Radio off","O sms não foi enviado para o número "+cPh+". Verifique os logs clicando aqui.",nIdApp,nId,false);
                	break;
            }
        	String[][] aDados = {{"ultok",cN}};
    		db.update("datas",aDados,pk+"='"+Integer.toString(nId)+"'");
    	}
    }, new IntentFilter(SENT));

    //Mensagem entregue com sucesso
    registerReceiver(new BroadcastReceiver(){
        @Override
        public void onReceive(Context arg0, Intent arg1) {
        	int nId = arg1.getIntExtra("nId",0);
        	int nIdApp = R.string.app_name+nId;
        	String cPh = arg1.getStringExtra("cPh");
        	
        	switch (getResultCode()){
                case Activity.RESULT_OK:
                	log.insert(nId,"O sms foi entregue para o número "+cPh+" com sucesso",db);
                	
                	break;
                case Activity.RESULT_CANCELED:
                	log.insert(nId,"Não foi possivel entregar o sms para o número "+cPh+" com sucesso",db);
                	String[][] aDados = {{"ultok","0"}};
	        		db.update("datas",aDados,pk+"='"+Integer.toString(nId)+"'");
	        		startNotification("Erro ao entregar o sms","Não foi possivel entregar o sms","O sms não foi entregue para o número "+cPh,nIdApp,nId,false);
                	break;
            }
        }
    }, new IntentFilter(DELIVERED));        

    SmsManager sms = SmsManager.getDefault();
    sms.sendTextMessage(phoneNumber, null, message, sentPI, deliveredPI);        
}[/code]

Acontece que a função é executada uma única fez quando envio o sms ( verifiquei através do “Log.d” ), mas dentro do “onReceive” ( que está dentro do “registerReceiver”), seja do envio, seja da confirmação de entrega, as vezes executa mais de uma vez para o mesmo envio de sms, o que está atrapalhando os meus logs ( os logs são gravados através de uma classe própria “log” - log.insert no fonte acima ).
O que esta errado, porque o “onReceive” é executado duas vezes?

Obrigado.