添加权限
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
private TextView mTextView01;
private TextView mTextView03;
private EditText mEditText1;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.phone_silent);
/* 设定PhoneCallListener */
MyPhoneCallListener phoneListener = new MyPhoneCallListener();
/* 设定TelephonyManager去抓取Telephony Severice */
TelephonyManager telMgr = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);
/* 设定Listen Call */
telMgr.listen(phoneListener, PhoneStateListener.LISTEN_CALL_STATE);
/* 设定找寻TextView、EditText */
mTextView01 = (TextView) findViewById(R.id.myTextView1);
mTextView03 = (TextView) findViewById(R.id.myTextView3);
mEditText1 = (EditText) findViewById(R.id.myEditText1);
mEditText1.addTextChangedListener(new TextWatcher(){
public void afterTextChanged(Editable s) {
}
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
}
public void onTextChanged(CharSequence s, int start, int before,
int count) {
mTextView03.setText(mEditText1.getText());
}
});
}
/* 判断PhoneStateListener现在的状态 */
public class MyPhoneCallListener extends PhoneStateListener {
public void onCallStateChanged(int state, String incomingNumber) {
switch (state) {
/* 判断手机目前是待机状态 */
case TelephonyManager.CALL_STATE_IDLE:
mTextView01.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) {
mTextView01.setText(e.toString());
e.printStackTrace();
}
break;
/* 判断状态为通话中 */
case TelephonyManager.CALL_STATE_OFFHOOK:
mTextView01.setText("通话中");
break;
/* 判断状态为来电 */
case TelephonyManager.CALL_STATE_RINGING:
/* 显示现在来电的讯息 */
mTextView01.setText("来电:"
+ incomingNumber);
/* 判断与输入电话是否为一样,当一样时响铃模式转为静音 */
if (incomingNumber.equals(mTextView03.getText().toString())) {
try {
AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
if (audioManager != null) {
/* 设定响铃模式为静音 */
audioManager
.setRingerMode(AudioManager.RINGER_MODE_SILENT);
//audioManager.setRingerMode(AudioManager.RINGER_MODE_VIBRATE);震动
audioManager
.getStreamVolume(AudioManager.STREAM_RING);
Toast.makeText(PhoneSilent.this,
"静音模式",
Toast.LENGTH_SHORT).show();
}
} catch (Exception e) {
mTextView01.setText(e.toString());
e.printStackTrace();
break;
}
}
}
super.onCallStateChanged(state, incomingNumber);
}
}