Android11 获取电话状态教程

一、整体流程

flowchart TD
    A(开始) --> B(添加权限)
    B --> C(获取电话状态)
    C --> D(处理电话状态)
    D --> E(结束)

二、具体步骤

步骤 操作
1 添加权限
2 获取电话状态
3 处理电话状态

1. 添加权限

在AndroidManifest.xml文件中添加权限:

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

2. 获取电话状态

创建一个类PhoneStateListener继承自PhoneStateListener,重写onCallStateChanged方法:

import android.telephony.PhoneStateListener;
import android.telephony.TelephonyManager;

public class MyPhoneStateListener extends PhoneStateListener {
    
    @Override
    public void onCallStateChanged(int state, String phoneNumber) {
        super.onCallStateChanged(state, phoneNumber);
        
        switch (state) {
            case TelephonyManager.CALL_STATE_IDLE:
                // 电话挂断
                // 处理逻辑
                break;
            case TelephonyManager.CALL_STATE_OFFHOOK:
                // 通话中
                // 处理逻辑
                break;
            case TelephonyManager.CALL_STATE_RINGING:
                // 有电话呼入
                // 处理逻辑
                break;
        }
    }
}

注册监听器并获取电话状态:

TelephonyManager telephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
MyPhoneStateListener phoneStateListener = new MyPhoneStateListener();
telephonyManager.listen(phoneStateListener, PhoneStateListener.LISTEN_CALL_STATE);

3. 处理电话状态

根据不同的状态做相应的处理,如挂断电话、接听电话等。

三、状态图

stateDiagram
    [*] --> 电话挂断: CALL_STATE_IDLE
    电话挂断 --> 通话中: CALL_STATE_OFFHOOK
    通话中 --> 电话挂断: CALL_STATE_IDLE
    电话挂断 --> 有电话呼入: CALL_STATE_RINGING
    有电话呼入 --> 电话挂断: CALL_STATE_IDLE

通过以上教程,你可以成功地在Android11中获取电话状态并做出相应处理。祝你一切顺利!