最近项目也是添加一个小功能 监听通话状态实现一个自动外呼的功能 我在这里简单的实现了一下转了几天的博客可各大网站找出了一个最简单也好理解的一个方法(至今为止) 其实就用到了我们Android源生自带的俩个类 PhoneStateListener类和TelephonyManager类 PhoneStateListener类是我们Android 源生只带的监听通话状态的一个类

步骤一: 继承PhoneStateListener类 重写 onCallStateChanged()方法 可以用if去判断也可以去用switch去判断大致为:

public void onCallStateChanged(int state, String incomingNumber) {switch (state) {case TelephonyManager. CALL_STATE_OFFHOOK://待机//做一些音乐关闭等操作break;case TelephonyManager.CALL_STATE_IDLE ://挂断// 监听挂断电话后的一些操作break;case TelephonyManager.CALL_STATE_RINGING ://来电话//来电免打扰程序要处理的关键事务break;default :break;}super.onCallStateChanged(state, incomingNumber);}

步骤2:这样我们的监听基本快完成差不多了  我们大致的操作就是在监听状态下做一些操作 只是我们有时候写操作避免不了用一些 集合哈  什么工具类啊 数据啊 什么的 那怎么办呢 其实很简单 做一个set方法吧我们需要的东西传进来不就好了 我这里做了一个setContext我知道这样很糙就将就的用吧 看懂就行

 public void setContext(Context context,List<ResourceModel> data,PrivateResAdapter mPrivateResAdapter ) {this.context = context;this.data = data;this.mPrivateResAdapter = mPrivateResAdapter;this.geshu = 1;}

这样既本就写完这个类了 具体的如下

public class ListenToPhoneState extends PhoneStateListener {private Context context;private List<ResourceModel> data;private PrivateResAdapter mPrivateResAdapter;int call_status,in,geshu;public void setContext(Context context,List<ResourceModel> data,PrivateResAdapter mPrivateResAdapter ) {this.context = context;this.data = data;this.mPrivateResAdapter = mPrivateResAdapter;this.geshu = 1;}public void onCallStateChanged(int state, String incomingNumber) {switch (state) {case TelephonyManager. CALL_STATE_OFFHOOK://待机//做一些音乐关闭等操作break;case TelephonyManager.CALL_STATE_IDLE ://挂断if (geshu==1){geshu =2;break;}else {/*** 逻辑代码*/if (Public_parameters.SWITCH_PARAM) {for (int i = 1;i<data.size();i++){mPrivateResAdapter.notifyItemChanged(i,data.get(i));in=i;call_status = data.get(in).getCall_status();if (call_status == 0 ){Handler handler = new Handler();handler.postDelayed(new Runnable() {@Overridepublic void run() {Intent intent = new Intent(Intent.ACTION_CALL);intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);ResourceModel resourceModel = data.get(in);resourceModel.setCall_status(2);String contact_mobile = resourceModel.getContact_mobile();intent.setData(Uri.parse("tel:" + contact_mobile));if (ActivityCompat.checkSelfPermission(context, Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) {return;}context.startActivity(intent);}}, 6000);//5秒后会自动执行Runnable中的run方法break;}}}}break;case TelephonyManager.CALL_STATE_RINGING ://来电话//来电免打扰程序要处理的关键事务break;default :break;}super.onCallStateChanged(state, incomingNumber);}
}

现在就基本算是完成了 剩下的就是吊起监听服务 让他自己去完成吧

tm = (TelephonyManager) this.getSystemService(Context.TELEPHONY_SERVICE); /** 开启自动外呼系统监听通话 */
listenToPhoneState = new ListenToPhoneState();
listenToPhoneState.setContext(PrivateResActivity.this,data,mPrivateResAdapter);
tm.listen(listenToPhoneState,PhoneStateListener.LISTEN_CALL_STATE);//开启监听服务

转载本博客请出示起源地

Android 监听通话状态(挂断 监听 来电)实现自动外呼 按顺序拨出电话 间隔5秒相关推荐

  1. android监听通话状态

    samsung提审结果报告里: application sound is audible during the call in pop up window //在弹出窗口中的呼叫期间,<缺陷&g ...

  2. android判断进入通话状态,Android-9种通话状态(精确)

    一.介绍 在应用层监听通话状态只有三种,从TelephonyManager.java中注释可知这三种状态含义如下: CALL_STATE_IDLE 空闲态(没有通话活动)[j8>11131901 ...

  3. Android通过程序接听或者挂断电话

    转载注明出处:简书-十个雨点 这篇文章教你如何帮助用户自动接听或者挂断来电.当然并不是我原创的代码,我只不过是把stackoverflow上的一些代码整合了一下,做个代码的二传手. 源码 Accept ...

  4. android自动接听和挂断电话

    实现android自动接听和挂断电话功能.代码如下: 添加权限 <uses-permission android:name="android.permission.CALL_PHONE ...

  5. android拨打电话的日志,Android-9种通话状态(精确)

    一.介绍 在应用层监听通话状态只有三种,从TelephonyManager.java中注释可知这三种状态含义如下: CALL_STATE_IDLE 空闲态(没有通话活动) CALL_STATE_RIN ...

  6. Android手机实现自动挂断功能

    关于获取手机通话状态获取方式,请参考其他文档,此文不做介绍. 1.非ROOT手机 反射方法 通过AIDL和放射的方式实现电话挂断,是网上使用最多的方法. 首先我们需要创建一个aidl文件,包路径为:c ...

  7. Service-黑名单来电自动挂断

    这只是一个学习例程,很多功能有待完善 允许用户动态加载手机通讯录中的电话号码,勾选某些号码作为黑名单,一旦将某些号码设为黑名单,当该号码自动挂断该号码 Android没有对外公开挂断电话的API,如果 ...

  8. 双卡双待手机[海信]挂断来电和指定卡去电实现

    海双卡双待手机[海信]挂断来电和指定卡去电实现的技术调研信双卡手机拨打电话时,在启动拨打电话时,传递一个参数给系统,这样系统的可以根据该参数判断使用指定的卡: Intent i = new Inten ...

  9. android 通话状态监听(自定义接听挂断按钮与通话界面,根据公司的业务逻辑可以实现自己的来电秀功能)...

    前言: 因为公司需求,要自定义一款来电秀的app当做周边产品来配合主营的app业务. 之前因为赶项目,没时间整理这块,现在项目告一段落了,现在回头看看感觉这个功能还是挺有意思的,比较有针对性.电话呼入 ...

最新文章

  1. 如果在BackgroundWorker运行过程中关闭窗体…
  2. 多窗体、窗体传值、打开唯一窗体操作
  3. [How TO]-堡垒机快捷登陆SSH服务器-expect自动输密码
  4. Hadoop实战-中高级部分 之 Hadoop 集群安装
  5. bootstrap 单选按钮点击change事件 只触发一次_微信支付新增“确认”按钮,付错钱将成为历史?...
  6. QT中图表类QChart之各种缩放/平移
  7. Oracle工具之--ASM与文件系统及跨网络传输文件
  8. 林斌减持小米股份三天套现3.4亿引关注 小米官方、林斌齐回应...
  9. 万万没想到,面试中,连 ClassLoader类加载器 也能问出这么多问题.....
  10. 连通域最小外接矩形算法原理_算法|图论 2W字知识点整理(超全面)
  11. 网络摄像头 java_在Java中从网络摄像头捕获图像?
  12. 某单位配置GRE_×××命令
  13. 解决ORA-27103:internal error错误一例
  14. wp文件转shp_MapGIS教程:转换shp文件的技巧
  15. 谈谈 MVX 中的 Controller
  16. 深信服培训--网络设备常见的部署模式
  17. JS判断ios系统的版本号
  18. 我用自己的亲身经历告诉你为什么不建议你合租!
  19. 中关村GHOSTXPSP3纯净装机自选CD版V2010.02(FAT32/NTFS) 首款整合“极光”漏洞补丁
  20. 微信网页授权登录的方法

热门文章

  1. JVM学习笔记——什么是JVM?
  2. 远程桌面窗口的字体异常的处理办法
  3. ADS1292检测原理及其驱动
  4. 拳皇97风云再起汉化版怎么调难度呀
  5. SIM800C的二次开发(EAT开发)
  6. 课程设计-基于Mysql+java实现的影院管理系统
  7. 企业宣传画册印刷产品的作用和功能
  8. 千锋教育python2104期总结day15
  9. 千锋教育python2104期总结day17
  10. 教你使用QQ2013闪登功能