当前几乎每个手机中都有很名单的功能,被列入黑名单的用户不能打进电话和发进短信。我们下面举一个简单的实例来实现黑名单来电自动静音的功能。
实现步骤:
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;
}
});
}
}
网友评论