Android设置黑名单电话挂断

来源:互联网 发布:手机淘宝购物流程图片 编辑:程序博客网 时间:2024/04/30 08:40

首先要在清单文件中加上权限:
读取电话状态权限

<uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission><uses-permission android:name="android.permission.CALL_PHONE"></uses-permission>

接受电话的状态:

 <receiver android:name=".Myphoone">            <intent-filter>                <action android:name="android.intent.action.PHONE_STATE"></action>            </intent-filter>        </receiver>

写一个类继承BroadcastReceiver
具体实现步骤如下:

 if("android.intent.action.PHONE_STATE".equals(intent.getAction())){            //得到电话管理者            TelephonyManager telephonyManager= (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);            //得到电话的状态            int state=telephonyManager.getCallState();            switch (state) {                case TelephonyManager.CALL_STATE_RINGING:                    //得到电话号码                    String number=intent.getStringExtra("incoming_number");                    Log.i("test","来电了"+number);                    //得到电话管理者类对象                    Class<TelephonyManager> clazz=TelephonyManager.class;                    //得到方法                    Method method= null;                    try {                        method = clazz.getDeclaredMethod("getITelephony",null);                    } catch (NoSuchMethodException e) {                        e.printStackTrace();                    }                    //允许访问私有的方法                     method.setAccessible(true);                        //执行方法                    ITelephony iTelephony= null;                    try {                        iTelephony = (ITelephony) method.invoke(telephonyManager,null);                    } catch (IllegalAccessException e) {                        e.printStackTrace();                    } catch (InvocationTargetException e) {                        e.printStackTrace();                    }                    // /判断是不是这个号码是的话就挂断                        if("18274628579".equals(number)){                            try {                                iTelephony.endCall();                            } catch (RemoteException e) {                                e.printStackTrace();                            }                        }                    break;                case TelephonyManager.CALL_STATE_OFFHOOK:                    Log.i("test","通话中...录音中");                    break;                case TelephonyManager.CALL_STATE_IDLE:                    Log.i("test","挂了");                    break;            }        }
1 0