IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> 通话状态监听 -> 正文阅读

[移动开发]通话状态监听

平台android11

AndroidManifest.xml


   <uses-permission android:name="android.permission.READ_PRECISE_PHONE_STATE"/>
           <receiver android:name=".CallStateReceiver" 
                android:enabled="true">
                <intent-filter>
                    <action android:name="android.intent.action.PHONE_STATE"/>
                    <action android:name="android.intent.action.NEW_OUTGOING_CALL"/>
                    <category android:name="android.intent.category.LAUNCHER" />  
                </intent-filter>
       </receiver>

CallStateReceiver.java

import android.telephony.PreciseCallState;
import android.telephony.TelephonyManager;
import android.app.Service;
import android.telephony.PhoneStateListener;
public class CallStateReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
    TelephonyManager tm = (TelephonyManager)context.getSystemService(Service.TELEPHONY_SERVICE); 
        PhoneStateListener listener = new PhoneStateListener(){ 
            @Override
            public void onPreciseCallStateChanged(PreciseCallState preciseState) {
                Log.d(TAG, "onPreciseCallStateChanged: " + preciseState.toString());
                if(preciseState.getForegroundCallState() == PreciseCallState.PRECISE_CALL_STATE_ACTIVE) {
                //接听得那一瞬间需要做得事情
                } 
           }
        }; 
        tm.listen(listener, PhoneStateListener.LISTEN_CALL_STATE
                  | PhoneStateListener.LISTEN_PRECISE_CALL_STATE);
   }
}

PreciseCallState 十种状态详解

public final class PreciseCallState implements Parcelable {
    
    /** Call state is not valid (Not received a call state). */  //呼叫状态无效(未收到呼叫状态)
    public static final int PRECISE_CALL_STATE_NOT_VALID =      -1;
    /** Call state: No activity. */   //通话空闲
    public static final int PRECISE_CALL_STATE_IDLE =           0;
    /** Call state: Active. */       //正在通话(活动中)
    public static final int PRECISE_CALL_STATE_ACTIVE =         1;
    /** Call state: On hold. */     //通话挂起(例如我和多个人通话,其中一个通话在活动,而其它通话就会进入挂起状态)
    public static final int PRECISE_CALL_STATE_HOLDING =        2;
    /** Call state: Dialing. */  //拨号开始
    public static final int PRECISE_CALL_STATE_DIALING =        3;
    /** Call state: Alerting. */   //正在呼出(提醒对方接电话)
    public static final int PRECISE_CALL_STATE_ALERTING =       4;
    /** Call state: Incoming. */  //对方来电
    public static final int PRECISE_CALL_STATE_INCOMING =       5;
    /** Call state: Waiting. */   //第三方来电等待(例如我正在和某人通话,而其他人打入时就会就进入等待状态)
    public static final int PRECISE_CALL_STATE_WAITING =        6;
    /** Call state: Disconnected. */  //挂断完成
    public static final int PRECISE_CALL_STATE_DISCONNECTED =   7;
    /** Call state: Disconnecting. */  //正在挂断
    public static final int PRECISE_CALL_STATE_DISCONNECTING =  8;

PhoneStateListener.java

/**
 * Listen for changes to the device call state.
 * {@more}
 *
 * @see #onCallStateChanged
 */
public static final int LISTEN_CALL_STATE                               = 0x00000020;
 
     /**
 * Listen for {@link android.telephony.Annotation.PreciseCallStates} of ringing,
 * background and foreground calls.
 *
 * <p>Requires permission {@link android.Manifest.permission#READ_PRECISE_PHONE_STATE}
 * or the calling app has carrier privileges
 * (see {@link TelephonyManager#hasCarrierPrivileges}).
 *
 * @hide
 */
@RequiresPermission((android.Manifest.permission.READ_PRECISE_PHONE_STATE))
@SystemApi
public static final int LISTEN_PRECISE_CALL_STATE                       = 0x00000800;
  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2021-08-12 16:42:49  更:2021-08-12 16:44:29 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 6:21:00-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码