Android-黑名单来电自动静音

当前几乎每个手机中都有很名单的功能,被列入黑名单的用户不能打进电话和发进短信。我们下面举一个简单的实例来实现黑名单来电自动静音的功能。
实现步骤:
1、添加一个EditText来输入黑名单用户的号码
2、添加一个TextView来显示当前设备的状态(待机/通话中/来电中)
3、新建一个内部类mPhoneCallListener 继承 PhoneStateListener,并实现onCallStateChanged方法完成具体逻辑功能
具体实现,请看代码部分:

    private TextView textView01;
    private TextView textView03;
    private EditText editText01;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //设置PhoneCallListener
        mPhoneCallListener phoneCallListener = new mPhoneCallListener();

        //用TelephonyManager抓取Telephone Severice
        TelephonyManager telephonyManager = (TelephonyManager)getSystemService(TELEPHONY_SERVICE);

        //设置Listen Call
        telephonyManager.listen(phoneCallListener,mPhoneCallListener.LISTEN_CALL_STATE);

        textView01 = (TextView)findViewById(R.id.textview01);
        textView03 = (TextView)findViewById(R.id.textview03);
        editText01 = (EditText)findViewById(R.id.edittext01);

    }

判断PhoneStateListener当前的状态

    public class mPhoneCallListener extends PhoneStateListener{

        @Override
        public void onCallStateChanged(int state, String incomingNumber) {

            /*
            public static final int CALL_STATE_IDLE = 0;
            public static final int CALL_STATE_OFFHOOK = 2;
            public static final int CALL_STATE_RINGING = 1;
            */

            switch (state){

                //获取手机的待机状态
                case TelephonyManager.CALL_STATE_IDLE:

                  textView01.setText("当前手机处于待机状态");

                  try {

                      AudioManager audioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE);

                      if (audioManager != null){

                          //设置手机为待机时响铃正常
                          audioManager.setRingerMode(AudioManager.RINGER_MODE_NORMAL);

                          audioManager.getStreamVolume(AudioManager.STREAM_RING);
                      }

                  }catch (Exception e){

                      textView01.setText(e.toString());

                      e.printStackTrace();
                  }

                    break;


                case TelephonyManager.CALL_STATE_OFFHOOK:

                    textView01.setText("当前手机处于通话中");

                    break;

                case TelephonyManager.CALL_STATE_RINGING:

                    textView01.setText("当前手机处于来电:"+incomingNumber);

                    //判断电话是否一致 一致的时候用静音
                    if (incomingNumber.equals(editText01.getText().toString())){

                        try {

                            AudioManager audioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE);

                            if (audioManager != null){

                                //设置响铃为静音
                                audioManager.setRingerMode(AudioManager.RINGER_MODE_SILENT);

                                audioManager.getStreamVolume(AudioManager.STREAM_RING);

                                Toast.makeText(MainActivity.this,"黑名单"+incomingNumber + "给你来电了",0).show();
                            }


                        }catch (Exception e){

                            textView01.setText(e.toString());

                            e.printStackTrace();

                        }

                    }

                    break;

            }

            super.onCallStateChanged(state, incomingNumber);


            editText01.setOnKeyListener(new TextView.OnKeyListener(){

                @Override
                public boolean onKey(View view, int i, KeyEvent keyEvent) {

                    //设置edittext的文本信息显示在textview中
                    textView03.setText(editText01.getText().toString());

                    return false;
                }
            });
        }
    }

你可能感兴趣的:(Android-黑名单来电自动静音)