Search code examples
androidtelephonymanager

How to detect someone's sim card is active or not


I have daily 40 to 50 phone numbers. Currently we are manually calling to each to detect each one's status like phone number is active(if call ringing) or not.I want to do this programmatically. Is it possible, to programmatically call each number and if phone ring is going on then set it's status active otherwise deactive?


Solution

  • Yes it is possible but better to use sms Delivery Report to check in android u may create a program in which if it shows delivery report than automatically added to active otherwise inactive

    BroadcastReceiver sendBroadcastReceiver = new sentReceiver();
        BroadcastReceiver deliveryBroadcastReciever = new deliverReceiver();;
    
        @Override
        protected void onPause() {
            // TODO Auto-generated method stub
            super.onPause();
    
            try {
                unregisterReceiver(sendBroadcastReceiver);
                unregisterReceiver(deliveryBroadcastReciever);
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    @Override
    protected void onDestroy() {
        // TODO Auto-generated method stub
        super.onDestroy();
        try {
            unregisterReceiver(sendBroadcastReceiver);
            unregisterReceiver(deliveryBroadcastReciever);
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
    
        send_sms.setOnClickListener(new OnClickListener() {
    
                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    if (textView.getText().toString().equals("")
                            | textView.getText().toString().equals(null)) {
                        Toast.makeText(SendSMS.this, enter_ph_no, Toast.LENGTH_LONG)
                                .show();
                    } else {
    
    
                            sendSMS(textView.getText().toString(), "sms_content");
                            finish();
    
    
                    }
    
                }
            });
    private void sendSMS(String phoneNumber, String message) {
            String SENT = "SMS_SENT";
            String DELIVERED = "SMS_DELIVERED";
    
            PendingIntent sentPI = PendingIntent.getBroadcast(this, 0, new Intent(
                    SENT), 0);
    
            PendingIntent deliveredPI = PendingIntent.getBroadcast(this, 0,
                    new Intent(DELIVERED), 0);
    
            registerReceiver(sendBroadcastReceiver, new IntentFilter(SENT));
    
            registerReceiver(deliveryBroadcastReciever, new IntentFilter(DELIVERED));
            SmsManager sms = SmsManager.getDefault();
            sms.sendTextMessage(phoneNumber, null, message, sentPI, deliveredPI);
    
    
        }
    
        class deliverReceiver extends BroadcastReceiver {
            @Override
            public void onReceive(Context context, Intent arg1) {
                switch (getResultCode()) {
                case Activity.RESULT_OK:
                    Toast.makeText(getBaseContext(), sms_delivered,
                            Toast.LENGTH_SHORT).show();
    
    
    
    
      //Here you write any code to put the number in DB or filebased etc
         that number is active
    
                    break;
                case Activity.RESULT_CANCELED:
                    Toast.makeText(getBaseContext(), sms_not_delivered,
                            Toast.LENGTH_SHORT).show();
                    break;
                }
    
            }
        }
    
        class sentReceiver extends BroadcastReceiver {
            @Override
            public void onReceive(Context context, Intent arg1) {
                switch (getResultCode()) {
                case Activity.RESULT_OK:
                    Toast.makeText(getBaseContext(), sms_sent, Toast.LENGTH_SHORT)
                            .show();
                    startActivity(new Intent(SendSMS.this, ChooseOption.class));
                    overridePendingTransition(R.anim.animation, R.anim.animation2);
                    break;
                case SmsManager.RESULT_ERROR_GENERIC_FAILURE:
                    Toast.makeText(getBaseContext(), "Generic failure",
                            Toast.LENGTH_SHORT).show();
                    break;
                case SmsManager.RESULT_ERROR_NO_SERVICE:
                    Toast.makeText(getBaseContext(), "No service",
                            Toast.LENGTH_SHORT).show();
                    break;
                case SmsManager.RESULT_ERROR_NULL_PDU:
                    Toast.makeText(getBaseContext(), "Null PDU", Toast.LENGTH_SHORT)
                            .show();
                    break;
                case SmsManager.RESULT_ERROR_RADIO_OFF:
                    Toast.makeText(getBaseContext(), "Radio off",
                            Toast.LENGTH_SHORT).show();
                    break;
                }
    
            }
        }