Android 接听电话功能类

本文提供了一段Java代码,用于实现接听、挂断电话及静音功能。该代码通过调用Android系统的TelephonyManager来完成操作,并详细展示了如何使用反射机制获取ITelephony接口,进而对接听电话、挂断电话及静音等功能进行控制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这个需要自己写个监听服务,在接收到来电时进行处理,监听服务和播放录音方面的代码比较简单自己可以摸索一下

下面附上用到的接电话和挂电话的代码:

[代码]java代码:

01/**
02* 接听电话功能类
03*
04* 权限:
05* <uses-permission android:name="android.permission.MODIFY_PHONE_STATE"/>
06*/
07public class PhoneUtils {
08private static final int ANSWER_RINGING_CALL = 0x01;
09private static final int SILENCE_RINGER = 0x02;
10private static final int HANG_UP = 0x03;
11/**
12* 接电话
13* @param currentActivity 当前的Activity.this
14*/
15public static void answerCall(Activity currentActivity) {
16doAction(currentActivity, ANSWER_RINGING_CALL);
17}
18/**
19* 静音
20* @param currentActivity 当前的Activity.this
21*/
22public static void silenceRinger(Activity currentActivity) {
23doAction(currentActivity, SILENCE_RINGER);
24}
25/**
26* 挂电话
27* @param currentActivity 当前的Activity.this
28*/
29public static void hangUp(Activity currentActivity) {
30doAction(currentActivity, HANG_UP);
31}
32private static void doAction(Activity current, int what) {
33TelephonyManager phoneManager = (TelephonyManager)current.getSystemService("phone");
34Class phoneManagerClass = phoneManager.getClass();
35try {
36Method getITelephony  =  phoneManagerClass.getDeclaredMethod("getITelephony"new Class[]{});
37getITelephony.setAccessible(true);
38//ITelephony
39Object insITelephony = getITelephony.invoke(phoneManager, new Object[]{});
40Class ITelephony = insITelephony.getClass();
41switch (what) {
42case ANSWER_RINGING_CALL:
43Method answerRingingCall  =  ITelephony.getMethod("answerRingingCall", new Class[]{});
44answerRingingCall.invoke(insITelephony, new Object[]{});
45break;
46case SILENCE_RINGER:
47Method silenceRinger  =  ITelephony.getMethod("silenceRinger", new Class[]{});
48silenceRinger.invoke(insITelephony, new Object[]{});
49break;
50case HANG_UP:
51Method endCall  =  ITelephony.getMethod("endCall", new Class[]{});
52endCall.invoke(insITelephony, new Object[]{});
53break;
54}
55} catch (Exception e) {
56e.printStackTrace();
57}
58}
59private PhoneUtils(){}
60}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值