Android -- 自动挂断电话

利用广播监听电话的状态。

Myreceiver.java:

public void onReceive(Context context, Intent intent) {
        // 通过一下代码可以获得到系统中控制电话状态的键
        System.out.println(intent.getExtras().keySet());
        String state = intent.getExtras().getString("state");
        String incoming_number = intent.getExtras()
                .getString("incoming_number");
        System.out.println("电话状态:" + state + "电话号码:" + incoming_number);
        if ("15204657729".equals(incoming_number)) {
            TelephonyManager tm = (TelephonyManager) context
                    .getSystemService(Context.TELEPHONY_SERVICE);
            try {
                Method getITelephonyMethod = TelephonyManager.class
                        .getDeclaredMethod("getITelephony");// 强行调用getITelephony()方法。这里可以通过getDeclaredMethod获得TelephonyManager类中
                                                            // 的所有方法进行使用
                getITelephonyMethod.setAccessible(true);
                Object endCallMethod = getITelephonyMethod.invoke(tm);
                Method endcall = endCallMethod.getClass().getMethod("endCall");
                endcall.invoke(endCallMethod);
            } catch (SecurityException e) {
                e.printStackTrace();
            } catch (NoSuchMethodException e) {
                e.printStackTrace();
            } catch (IllegalArgumentException e) {
                e.printStackTrace();
            } catch (IllegalAccessException e) {
                e.printStackTrace();
            } catch (InvocationTargetException e) {
                e.printStackTrace();
            }
        }
    }
}


配置文件:

广播注册:

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

权限:

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



你可能感兴趣的:(自动挂断电话)