2012-11-27 3 views
0

문자 메시지를 보내는 서비스에 짧은 코드를 만들었지 만 동일한 SMS가 ntil을 계속 반복해서 보내지 만 전화를 끊습니다. 그래서 여기에 나는 죽음의 루프에있다 ... 같은 호출에 간다.SMS 관리자가 SMS를 반복적으로 계속 전송합니다.

public int onStartCommand(final Intent intent, final int flags, 
       final int startId) { 


      if (activer == 0 && activerTransmission == 1 && activerCascade == 0){ 
       sendSms(getApplicationContext()); 
       stopSelf(); 
      } 

      if (activer == 0 && activerTransmission == 0 && activerCascade == 1){ 
       call(getApplicationContext()); 
       stopSelf(); 
      } 
      if (activer == 0 && activerTransmission == 1 && activerCascade == 1){ 
       sendSms(getApplicationContext()); 
       call(getApplicationContext()); 
       stopSelf(); 
       }    
      else if (activer == 1){ 

       Intent dialogIntent = new Intent(getBaseContext(), DialogLauncher.class); 
       dialogIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
       getApplication().startActivity(dialogIntent); 
       stopSelf();  
     } 
      return START_NOT_STICKY; 
    } 


public void sendSms(Context context){ 

     DBAdapter smsBDD   = new DBAdapter(context);  
     Cursor  sms    = smsBDD.selectTransmission(); 

     String  numero1   = (sms.getString(sms.getColumnIndex("sms1"))); 
     String  numero2   = (sms.getString(sms.getColumnIndex("sms2"))); 
     String  numero3   = (sms.getString(sms.getColumnIndex("sms3"))); 
     String  numero4   = (sms.getString(sms.getColumnIndex("sms4"))); 
     String  numero5   = (sms.getString(sms.getColumnIndex("sms5"))); 
     String  msg    = "Alarme perte de verticalité, ";   
     sms.close(); 

      if(!numero1.equals("aucun")){ 
       SmsManager.getDefault().sendTextMessage(numero1, null, msg+" "+getLog(context), null, null); 
      }   
      if(!numero2.equals("aucun")){ 
       SmsManager.getDefault().sendTextMessage(numero2, null, msg/*+" "+getLog(context)*/, null, null); 
      }   
      if(!numero3.equals("aucun")){ 
       SmsManager.getDefault().sendTextMessage(numero3, null, msg/*+" "+getLog(context)*/, null, null); 
      }   
      if(!numero4.equals("aucun")){ 
       SmsManager.getDefault().sendTextMessage(numero4, null, msg/*+" "+getLog(context)*/, null, null); 
      } 
      if(!numero5.equals("aucun")){ 
       SmsManager.getDefault().sendTextMessage(numero5, null, msg/*+" "+getLog(context)*/, null, null); 
      } 
     } 

private void call(Context context){ 

    DBAdapter smsBDD   = new DBAdapter(context);  
    Cursor  phone   = smsBDD.selectCascade(); 

    String  numero1   = (phone.getString(phone.getColumnIndex("cascade1"))); 
    /*String numero2   = (phone.getString(phone.getColumnIndex("cascade2"))); 
    String  numero3   = (phone.getString(phone.getColumnIndex("cascade3"))); 
    String  numero4   = (phone.getString(phone.getColumnIndex("cascade4"))); 
    String  numero5   = (phone.getString(phone.getColumnIndex("cascade5")));*/ 
    phone.close(); 

     if(!numero1.equals("aucun")){ 
      Intent intent = new Intent(Intent.ACTION_CALL); 
      intent.setData(Uri.parse("tel:" + numero1)); 
      intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
      intent.addFlags(Intent.FLAG_FROM_BACKGROUND); 
      startActivity(intent);  
     }   

답변

0

글쎄, 신경 끄시 고, 그냥 발견이 서비스가 다른 하나에 의해 시작된 이후이는 FLAG_ACTIVITY_NEW_TASK에 의해 발생되었다 : 여기

는 코드 조각입니다!

문제가 해결되었습니다.

관련 문제