AudioManager黑名单来电自动静音

添加权限

 

Xml代码   收藏代码
  1. <uses-permission  
  2.         android:name="android.permission.READ_PHONE_STATE" />  
 

 

 

Java代码   收藏代码
  1. private TextView mTextView01;  
  2.     private TextView mTextView03;  
  3.     private EditText mEditText1;  
  4.   
  5.     public void onCreate(Bundle savedInstanceState) {  
  6.         super.onCreate(savedInstanceState);  
  7.         setContentView(R.layout.phone_silent);  
  8.   
  9.         /* 设定PhoneCallListener */  
  10.         MyPhoneCallListener phoneListener = new MyPhoneCallListener();  
  11.         /* 设定TelephonyManager去抓取Telephony Severice */  
  12.         TelephonyManager telMgr = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);  
  13.         /* 设定Listen Call */  
  14.         telMgr.listen(phoneListener, PhoneStateListener.LISTEN_CALL_STATE);  
  15.   
  16.         /* 设定找寻TextView、EditText */  
  17.         mTextView01 = (TextView) findViewById(R.id.myTextView1);  
  18.         mTextView03 = (TextView) findViewById(R.id.myTextView3);  
  19.         mEditText1 = (EditText) findViewById(R.id.myEditText1);  
  20.           
  21.         mEditText1.addTextChangedListener(new TextWatcher(){  
  22.   
  23.             public void afterTextChanged(Editable s) {  
  24.                   
  25.             }  
  26.   
  27.             public void beforeTextChanged(CharSequence s, int start, int count,  
  28.                     int after) {  
  29.                   
  30.             }  
  31.   
  32.             public void onTextChanged(CharSequence s, int start, int before,  
  33.                     int count) {  
  34.                 mTextView03.setText(mEditText1.getText());  
  35.             }  
  36.               
  37.         });  
  38.   
  39.     }  
  40.   
  41.     /* 判断PhoneStateListener现在的状态 */  
  42.     public class MyPhoneCallListener extends PhoneStateListener {  
  43.         public void onCallStateChanged(int state, String incomingNumber) {  
  44.             switch (state) {  
  45.             /* 判断手机目前是待机状态 */  
  46.             case TelephonyManager.CALL_STATE_IDLE:  
  47.                 mTextView01.setText("手机目前是待机状态");  
  48.   
  49.                 try {  
  50.                     AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);  
  51.                     if (audioManager != null) {  
  52.                         /* 设定手机为待机时,响铃模式为正常 */  
  53.                         audioManager  
  54.                                 .setRingerMode(AudioManager.RINGER_MODE_NORMAL);  
  55.                         audioManager.getStreamVolume(AudioManager.STREAM_RING);  
  56.                     }  
  57.                 } catch (Exception e) {  
  58.                     mTextView01.setText(e.toString());  
  59.                     e.printStackTrace();  
  60.                 }  
  61.                 break;  
  62.   
  63.             /* 判断状态为通话中 */  
  64.             case TelephonyManager.CALL_STATE_OFFHOOK:  
  65.                 mTextView01.setText("通话中");  
  66.                 break;  
  67.   
  68.             /* 判断状态为来电 */  
  69.             case TelephonyManager.CALL_STATE_RINGING:  
  70.                 /* 显示现在来电的讯息 */  
  71.                 mTextView01.setText("来电:"  
  72.                         + incomingNumber);  
  73.   
  74.                 /* 判断与输入电话是否为一样,当一样时响铃模式转为静音 */  
  75.                 if (incomingNumber.equals(mTextView03.getText().toString())) {  
  76.                     try {  
  77.                         AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);  
  78.                         if (audioManager != null) {  
  79.                             /* 设定响铃模式为静音 */  
  80.                             audioManager  
  81.                                     .setRingerMode(AudioManager.RINGER_MODE_SILENT);  
  82.                             //audioManager.setRingerMode(AudioManager.RINGER_MODE_VIBRATE);震动  
  83.                             audioManager  
  84.                                     .getStreamVolume(AudioManager.STREAM_RING);  
  85.                             Toast.makeText(PhoneSilent.this,  
  86.                                     "静音模式",  
  87.                                     Toast.LENGTH_SHORT).show();  
  88.                         }  
  89.                     } catch (Exception e) {  
  90.                         mTextView01.setText(e.toString());  
  91.                         e.printStackTrace();  
  92.                         break;  
  93.                     }  
  94.                 }  
  95.             }  
  96.   
  97.             super.onCallStateChanged(state, incomingNumber);  
  98.         }  
  99.     }  
 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值