Android开发秘籍:用TelephonyManager实现电话接听与挂断控制
在Android开发中,可以通过使用TelephonyManager类来控制接听和挂断电话。以下是一个简单的示例: ```java import android.Manifest; import android.content.Context; import android.content.pm.PackageManager; import android.telephony.TelephonyManager; import android.util.Log; public class PhoneUtils { private static final String TAG = "PhoneUtils"; public static final int MY_PERMISSIONS_REQUEST_PHONE = 100; private static final String[] PERMISSIONS_PHONE = new String[]{Manifest.permission.READ_PHONE_STATE}; private PhoneUtils() { } public static boolean checkSelfPermission(Context context, String permission) { return context.checkSelfPermission(permission) == PackageManager.PERMISSION_GRANTED; } public static boolean hasPhonePermissions(Context context) { for (String permission : PERMISSIONS_PHONE) { if (!checkSelfPermission(context, permission)) { return false; } } return true; } public static void requestPhonePermissions(Context context) { if (hasPhonePermissions(context)) { return; } ActivityCompat.requestPermissions( context, PERMISSIONS_PHONE, MY_PERMISSIONS_REQUEST_PHONE ); } public static void answerPhone(Context context) { if (!hasPhonePermissions(context)) { Log.d(TAG, "Phone permissions not granted, cannot answer phone."); return; } TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); try { telephonyManager answeringCall(); Log.d(TAG, "Answering phone call..."); } catch (Exception e) { Log.d(TAG, "Error answering phone call: " + e.getMessage()); } } public static void hangUpPhone(Context context) { if (!hasPhonePermissions(context)) { Log.d(TAG, "Phone permissions not granted, cannot hang up phone."); return; } TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); try { telephonyManager.endCall(); Log.d(TAG, "Ending phone call..."); } catch (Exception e) { Log.d(TAG, "Error ending phone call: " + e.getMessage()); } } } ``` 在这个示例中,我们首先检查应用是否已经具有读取电话状态的权限。如果没有,我们就请求这些权限。然后,我们提供两个方法,一个用于接听电话,一个用于挂断电话。 这些方法可能会抛出Exception,所以你需要在调用这些方法时进行适当的错误处理。这些方法可能在某些设备上不可用,因此在实际使用时,你可能需要添加一些错误检查和处理代码。 ######[AI写代码神器 | 557点数解答 | 2023-11-07 22:45:16]
- RealtimeMonitoringFragment 代码片段:Android 实时监控功能核心代码剖析(字节豆包 | 30点数解答 | 2024-10-12 10:31:18)294
- 揭秘:Android实时监控片段(RealTimeMonitoringFragment)代码实现(GPT | 531点数解答 | 2024-10-12 10:32:25)269
- AIDE编写Xposed软件:参考代码教你拦截Smail类方法名(阿里通义 | 649点数解答 | 2024-10-12 00:15:48)305
- Python实现好友通讯录信息增删改查功能,附示例代码( | 1248点数解答 | 2024-04-23 17:34:25)286
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)345
- 智能电话窗口按钮1弹起:获取坐标与手机IMEI码待处理(GPT | 208点数解答 | 2024-09-12 16:36:31)353
- 51 单片机:定时器 0 实现 8 个 LED 循环点亮,附代码及优化建议(字节豆包 | 1193点数解答 | 2024-12-27 15:10:29)313
- C51 编程:外部中断 0 边沿触发控制 P2 口 8 个 LED 依次点亮(字节豆包 | 41点数解答 | 2025-06-22 11:25:54)152
- 8051 单片机:用外部中断 0 边沿触发实现 P2 口 8 个 LED 依次点亮(附代码与详解) (字节豆包 | 538点数解答 | 2025-06-22 11:26:15)127
- C51实现外部中断0边沿触发,让P2口8个LED依次点亮的程序详解(DeepSeek | 400点数解答 | 2025-06-22 21:21:28)109
- C51 程序:利用外部中断 0 边沿触发实现 P2 口 8 个 LED 依次点亮及代码分析(DeepSeek | 228点数解答 | 2025-06-22 23:18:42)159
- C语言实现动态学生记录列表:完整代码及功能详解(阿里通义 | 1142点数解答 | 2024-11-07 19:08:54)278