文章标题android来电通过广播实现电话自动挂断

第一步:在AndroidManifest.xml中,必须配置权限,
权限需要写在application外面,不然获取不到项目的权限

//获取数据电话的状态
<uses-permission android:name="android.permission.READ_PHONE_STATE"
></uses-permission>
>
//获取数据电话是否是打电话的状态
   <uses-permission android:name="android.permission.CALL_PHONE"></uses-permission>
//需要配一下MyPhone类
     <receiver android:name=".MyPhone">
            <intent-filter
                android:priority="1000"
                >
                <action android:name="android.intent.action.PHONE_STATE"></action>
            </intent-filter>

第二步:写个类MyPhone继承BroadcastReceiver,通过onReceive方法来进行数据传值,可以获取得到TelephonyManager.getITelephny方法的Method对象,在 调用getITelephny方法发挥ITelephny对象,结果进行判断。


public class MyPhone extends BroadcastReceiver{
    @Override
    public void onReceive(Context context, Intent intent) {
        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);
                //获取得到TelephonyManager.getITelephny方法的Method对象
            Class<TelephonyManager> telephonyManagerClass=TelephonyManager.class;

            try {
                //调用getITelephny方法发挥ITelephny对象
                Method method=telephonyManagerClass.getDeclaredMethod("getITelephony",null);
                //允许访问私有方法
                method.setAccessible(true);
                ITelephony telephony= (ITelephony) method.invoke(telephonyManager,null);
                //挂断谁的电话
                if("15116396472".equals(number)) {
                    telephony.endCall();
                }
            } catch (NoSuchMethodException e) {
                e.printStackTrace();
            } catch (InvocationTargetException e) {
                e.printStackTrace();
            } catch (IllegalAccessException e) {
                e.printStackTrace();
            } catch (RemoteException e) {
                e.printStackTrace();
            }

        }

        }
    }
}

//一些基本用法的图片
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值