您的位置:首页 > 移动开发 > Android开发

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

2017-02-13 18:26 651 查看
第一步:在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();
}

}

}
}
}


//一些基本用法的图片

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android 应用