2015-08-25 2 views
1

Я хочу отправить SMS после отклонения входящего вызова. Приложение отправляет SMS, но проблема в том, что он отправляет его дважды. Я не могу понять, где проблема.Отправка sms после отклонения вызова - отправка нескольких раз

Ниже приведен код.

public class CallBarring extends BroadcastReceiver 
{ 
    private String number; 

    @Override 
    public void onReceive(Context context, Intent intent) 
    { 
     // If, the received action is not a type of "Phone_State", ignore it 
     if (!intent.getAction().equals("android.intent.action.PHONE_STATE")) 
      return; 

     // Else, try to do some action 
     else 
     { 
      // Fetch the number of incoming call 
      number = intent.getStringExtra(TelephonyManager.EXTRA_INCOMING_NUMBER); 

      // Check, whether this is a member of "Black listed" phone numbers stored in the database 
      if(MainActivity.blockList.contains(new Blacklist(number))) 
      { 
       // If yes, invoke the method 
       disconnectPhoneItelephony(context); 
       sendSMS(context); 
       // return; 
      }else{ 
       disconnectPhoneItelephony(context); 
       sendSMS(context); 

      } 
     } 
    } 

    public void sendSMS(Context context) { 

     try{ 
     String message = SharedPrefActivity.CommonMethod.getPrefsData(context, SharedPrefActivity.Constants.TextMessage, ""); 

     Intent intent=new Intent(context,CallBarring.class); 
     PendingIntent pi=PendingIntent.getActivity(context, 0, intent,0); 
     SmsManager sms=SmsManager.getDefault(); 
     sms.sendTextMessage(number, null, message, pi,null); 
     Toast.makeText(context, "SMS Sent", Toast.LENGTH_LONG).show(); 

     } catch (Exception e) 
     { 
      Toast.makeText(context, "SMS faild, please try again later!", Toast.LENGTH_LONG).show(); 
      e.printStackTrace(); 
     }  
    } 

    // Method to disconnect phone automatically and programmatically 
    // Keep this method as it is 
    @SuppressWarnings({ "rawtypes", "unchecked" }) 
    private void disconnectPhoneItelephony(Context context) 
    { 
     ITelephony telephonyService; 
     TelephonyManager telephony = (TelephonyManager) 
     context.getSystemService(Context.TELEPHONY_SERVICE); 
     try 
     { 
      Class c = Class.forName(telephony.getClass().getName()); 
      Method m = c.getDeclaredMethod("getITelephony"); 
      m.setAccessible(true); 
      telephonyService = (ITelephony) m.invoke(telephony); 
      telephonyService.endCall(); 
     } 
     catch (Exception e) 
     { 
      e.printStackTrace(); 
     } 
    } 
} 
+0

Извините, но не код в вашем случае и еще блокировать то же самое? Так в чем смысл? –

+0

'MainActivity.blockList' это статично? если это так, как вы его заполняете? Вы вызываете одно и то же условие отключения и отправки смс, так почему это так? –

+0

код не работает .... –

ответ

0

Попробуйте:

// Check, whether this is a. member of "Black listed" phone. numbers stored in the database 
      if(MainActivity.blockList.contains(new Blacklist(number))) 
    { 
     // If yes, invoke the method 
       disconnectPhoneItelephony(context); 
     sendSMS(context); 
     // return; 
    }else{ 
       disconnectPhoneItelephony(context); 
     sendSMS(context); 

    } 

Это в

// Check, whether this is a.  member of "Black listed" phone.  numbers stored in the database 
       if(MainActivity.blockList.contains(new Blacklist(number))) 
    { 
     // If yes, invoke the method 
       disconnectPhoneItelephony(context); 
sendSMS(context) 
     } 
+0

работать оба условия ... –

+0

удалить еще часть. то же условие проблема plz помочь мне .... я пытаюсь от двух дней –

Смежные вопросы