2015-08-25 49 views
1

我想拒绝来电后发送短信。 应用程序正在发送短信,但问题是它发送两次。我无法弄清楚问题在哪里。呼叫拒绝后发送短信 - 多次发送

下面是使用的代码。

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帮助我....我试着从两天 –