我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Android中监听未接来电的2种方法

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Android中监听未接来电的2种方法

这里主要是总结一下如何监听有未接来电的问题
 
1.1 使用广播接收器 BrocastReceiver
实现思路 :
静态注册监听android.intent.action.PHONE_STATE 的广播接收器 当手机的状态改变后将会触发 onReceive.
手机的状态分为CALL_STATE_RINGING(响铃中),CALL_STATE_IDLE(空闲),CALL_STATE_OFFHOOK(忙音).
也就是说当你没有任何电话是,状态是 IDLE ,当接到电话时是 OFFHOOK ,电话结束后返回 IDLE 状态。
记录上一次的手机状态,如果的手机现在的空闲,上次的状态响铃中的话,就可以判断是未接来电.


<uses-permission android:name="android.permission.READ_PHONE_STATE"/> 
<receiver android:name="com.example.phonestatedemo.receiver.PhoneStateReceiver"> 
   <intent-filter > 
      <action android:name="android.intent.action.PHONE_STATE"/> 
   </intent-filter> 
 </receiver> 

import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 
import android.telephony.TelephonyManager; 
import android.util.Log; 
import android.widget.Toast; 
public class PhoneStateReceiver extends BroadcastReceiver { 
  private static int lastCallState = TelephonyManager.CALL_STATE_IDLE; 
  @Override 
  public void onReceive(Context arg0, Intent arg1) { 
    String action = arg1.getAction(); 
    Log.d("PhoneStateReceiver", action ); 
    TelephonyManager telephonyManager = (TelephonyManager) arg0 
        .getSystemService(Context.TELEPHONY_SERVICE); 
    int currentCallState = telephonyManager.getCallState(); 
    Log.d("PhoneStateReceiver", "currentCallState=" + currentCallState ); 
    if (currentCallState == TelephonyManager.CALL_STATE_IDLE) {// 空闲 
      //TODO  
    } else if (currentCallState == TelephonyManager.CALL_STATE_RINGING) {// 响铃 
      //TODO  
    } else if (currentCallState == TelephonyManager.CALL_STATE_OFFHOOK) {// 接听 
      //TODO  
    } 
    if(lastCallState == TelephonyManager.CALL_STATE_RINGING &&  
          currentCallState == TelephonyManager.CALL_STATE_IDLE){ 
      Toast.makeText(arg0, "有未接来电", 1).show(); 
    } 
    lastCallState = currentCallState; 
  } 
} 
 

1.2  使用 PhoneStateListener
实现思路 :
继承PhoneStateListener后,当手机的状态改变后将会触发onCallStateChanged.手机的状态分为CALL_STATE_RINGING(响铃中),CALL_STATE_IDLE(空闲),CALL_STATE_OFFHOOK(忙音).
也就是说当你没有任何电话是,状态是 IDLE ,当接到电话时是 OFFHOOK ,电话结束后返回 IDLE 状态。
记录上一次的手机状态,如果的手机现在的空闲,上次的状态响铃中的话,就可以判断是未接来电.
 
不足:现在的处理不能判断出是用户是否主动不接电话.


TelephonyManager telephonyManager = (TelephonyManager) this 
        .getSystemService(Context.TELEPHONY_SERVICE); 
    telephonyManager.listen(new CallStateListener(this), 
        PhoneStateListener.LISTEN_CALL_STATE); 
package com.example.phonestatedemo.listener; 
import android.content.Context; 
import android.telephony.PhoneStateListener; 
import android.telephony.TelephonyManager; 
import android.util.Log; 
import android.widget.Toast; 
public class CallStateListener extends PhoneStateListener { 
  private static int lastetState = TelephonyManager.CALL_STATE_IDLE; // 最后的状态 
  private Context context; 
  public CallStateListener(Context context) { 
    this.context = context; 
  } 
  @Override 
  public void onCallStateChanged(int state, String incomingNumber) { 
    // TODO Auto-generated method stub 
    super.onCallStateChanged(state, incomingNumber); 
    Log.d("CallStateListener", "onCallStateChanged state=" + state ); 
    // 如果当前状态为空闲,上次状态为响铃中的话,则破觚为认为是未接来电 
    if (lastetState == TelephonyManager.CALL_STATE_RINGING 
        && state == TelephonyManager.CALL_STATE_IDLE) { 
      //TODO 
      Toast.makeText(this.context, "CallStateListener 有未接来电", 1).show(); 
    } 
    lastetState = state; 
  } 
} 
您可能感兴趣的文章:Android来电监听和去电监听实现代码Android监听来电和去电的实现方法Android监听手机电话状态与发送邮件通知来电号码的方法(基于PhoneStateListene实现)android实现来电静音示例(监听来电)android 电话状态监听(来电和去电)实现代码Android监听系统来电并弹出提示窗口


免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Android中监听未接来电的2种方法

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Android中监听未接来电的2种方法

这里主要是总结一下如何监听有未接来电的问题 1.1 使用广播接收器 BrocastReceiver 实现思路 : 静态注册监听android.intent.action.PHONE_STATE 的广播接收器 当手机的状态改变后将会触发
2022-06-06

Android监听来电和去电的实现方法

本文实例讲述了Android监听来电和去电的实现方法。分享给大家供大家参考,具体如下: 要监听android打电话和接电话,只需下面2步骤 第一步,写一个Receiver继承自BroadcastReceiverimport android.
2022-06-06

Android中监听短信的两种方法

1、监听广播 缺点,因为优先级的原因可能接收不到。 代码:public static final String TAG = "ImiChatSMSReceiver";public static final String SMS_RECEIV
2022-06-06

android在root模式下接听来电的方法

使用了Root Tools 来招待命令。https://code.google.com/p/roottools/代码如下:private void answerRingingCall(){ try {
2022-06-06

Android中监听Home键的4种方法总结

昨天需要处理一个问题,需要监听home键。最开始想到使用onKeydonwn这个方法。但是发现home不能这样处理,onKeydonwn可以处理菜单键和back键,但home不能。因为home键是系统键,情况特殊一些。 看了一下网上的资料,
2022-06-06

Android中检查、监听电量和充电状态的方法

当你在更改后台更新频率来减少这些更新对电池寿命的影响时,检查当前电量和充电状态是一个好的开始。 电池寿命通过剩余电量和充电状态来影响应用更新的执行。当用交流电充电时,执行更新操作对设备的影响是微不足道的,所以在大多数案例里,你可以把更新频率
2022-06-06

Android 解决监听home键的几种方法

Android 解决监听home键的几种方法 前言: 以下两种方法可以完美解决监听back键,home键,多任务键(最近任务键)。 一、使用注册广播监听home键、多任务键 演示图创建一个广播代码如下:class InnerRecevier
2022-06-06

Android实现获取未接来电和未读短信数量的方法

本文实例展示了Android实现获取未接来电和未读短信数量的方法,在Android程序开发中非常常见,是非常实用的功能,现分享给大家供大家参考。具体如下: 一、未读短信 首先注册Observer,当有新短信或彩信来的时候会调用 onCh
2022-06-06

Android中监听判断网络连接状态的方法

在无网或网速差的状态下,没必要去连接服务器。 你可以使用 ConnectivityManager 来判断是否连到网络,以及网络类型。 判断是否有网络连接 下面的代码用ConnectivityManager查询是活动网络连接判断是否有Inte
2022-06-06

Android实现监听电话呼叫状态的方法

本文实例讲述了Android实现监听电话呼叫状态的方法。分享给大家供大家参考。具体如下: 在清单文件AndroidManifest.xml中添加权限:代码如下:2022-06-06

Android实现判断手机未接来电及处理方法

通常来说Android手机没有未接来电的监听器,如果要实现对未接来电的处理,则需要自己编写程序来实现。本文所述程序实例即为Android实现判断手机未接来电及处理方法。主要分为四个步骤来进行: 1、编写CallListener,处理手机状态
2022-06-06

android studio按钮监听的5种方法实例详解

1.匿名内部类public class MainActivity extends AppCompatActivity implements View.OnClickListener { @Override protected void on
2022-06-06

Android中传递图片的2种方法

方法一: 基本思路是先把bitmap转化为byte数组,用Intent传递数组,在将数组转化为bitmap bitmap转化为byte数组的方法: 代码如下: private byte[] Bitmap2Bytes(Bitmap bm
2022-06-06

Android开发-之监听button点击事件的多种方法

在Android下,事件的发生是在监听器下进行,android系统可以响应按键事件和触摸屏事件,本文主要介绍了button点击事件的方法一、实现button点击事件的方法 实现button点击事件的监听方法有很多种,这里总结了常用的四种方
2022-06-06

Android监听软键盘弹出与隐藏的两种方法

需求: 现在有一个需求是点击一行文本框,弹出一个之前隐藏的输入框,输入完成后按返回键或者其他的东西隐藏键盘和输入框,将输入框的内容填充到文本框中。 实现: 拿到这个需求的第一反应就是写一个监听来监听键盘的显示和隐藏来控制输入框的显示和隐藏,
2022-06-06

Android 实现监听的四种方法详解实例代码

直接上代码,大家可以参考下 (1)自身类作为事件监听器package cn.edu.gdmec.s07150745.work5; import android.support.v7.app.AppCompatActivity; import
2022-06-06

Android编程之利用服务实现电话监听的方法

本文实例讲述了Android编程之利用服务实现电话监听的方法。分享给大家供大家参考,具体如下: 1. 启动模拟器,部署应用 2. 利用模拟器控制器发送短信启动服务(查看日志输出判断是否成功) 3. 向模拟器拨打电话,并接听,挂断电话后,利用
2022-06-06

Android编程监听网络连接状态改变的方法

本文实例讲述了Android编程监听网络连接状态改变的方法。分享给大家供大家参考,具体如下:BroadcastReceiverpublic class MyReceiver extends BroadcastReceiver { @Ove
2023-05-31

Android监听手机电话状态与发送邮件通知来电号码的方法(基于PhoneStateListene实现)

本文实例讲述了Android监听手机电话状态与发送邮件通知来电号码的方法。分享给大家供大家参考,具体如下: 在android中可以用PhoneStateListener来聆听手机电话状态(比如待机、通话中、响铃等)。本例是通过它来监听手机电
2022-06-06

编程热搜

  • Android:VolumeShaper
    VolumeShaper(支持版本改一下,minsdkversion:26,android8.0(api26)进一步学习对声音的编辑,可以让音频的声音有变化的播放 VolumeShaper.Configuration的三个参数 durati
    Android:VolumeShaper
  • Android崩溃异常捕获方法
    开发中最让人头疼的是应用突然爆炸,然后跳回到桌面。而且我们常常不知道这种状况会何时出现,在应用调试阶段还好,还可以通过调试工具的日志查看错误出现在哪里。但平时使用的时候给你闹崩溃,那你就欲哭无泪了。 那么今天主要讲一下如何去捕捉系统出现的U
    Android崩溃异常捕获方法
  • android开发教程之获取power_profile.xml文件的方法(android运行时能耗值)
    系统的设置–>电池–>使用情况中,统计的能耗的使用情况也是以power_profile.xml的value作为基础参数的1、我的手机中power_profile.xml的内容: HTC t328w代码如下:
    android开发教程之获取power_profile.xml文件的方法(android运行时能耗值)
  • Android SQLite数据库基本操作方法
    程序的最主要的功能在于对数据进行操作,通过对数据进行操作来实现某个功能。而数据库就是很重要的一个方面的,Android中内置了小巧轻便,功能却很强的一个数据库–SQLite数据库。那么就来看一下在Android程序中怎么去操作SQLite数
    Android SQLite数据库基本操作方法
  • ubuntu21.04怎么创建桌面快捷图标?ubuntu软件放到桌面的技巧
    工作的时候为了方便直接打开编辑文件,一些常用的软件或者文件我们会放在桌面,但是在ubuntu20.04下直接直接拖拽文件到桌面根本没有效果,在进入桌面后发现软件列表中的软件只能收藏到面板,无法复制到桌面使用,不知道为什么会这样,似乎并不是很
    ubuntu21.04怎么创建桌面快捷图标?ubuntu软件放到桌面的技巧
  • android获取当前手机号示例程序
    代码如下: public String getLocalNumber() { TelephonyManager tManager =
    android获取当前手机号示例程序
  • Android音视频开发(三)TextureView
    简介 TextureView与SurfaceView类似,可用于显示视频或OpenGL场景。 与SurfaceView的区别 SurfaceView不能使用变换和缩放等操作,不能叠加(Overlay)两个SurfaceView。 Textu
    Android音视频开发(三)TextureView
  • android获取屏幕高度和宽度的实现方法
    本文实例讲述了android获取屏幕高度和宽度的实现方法。分享给大家供大家参考。具体分析如下: 我们需要获取Android手机或Pad的屏幕的物理尺寸,以便于界面的设计或是其他功能的实现。下面就介绍讲一讲如何获取屏幕的物理尺寸 下面的代码即
    android获取屏幕高度和宽度的实现方法
  • Android自定义popupwindow实例代码
    先来看看效果图:一、布局
  • Android第一次实验
    一、实验原理 1.1实验目标 编程实现用户名与密码的存储与调用。 1.2实验要求 设计用户登录界面、登录成功界面、用户注册界面,用户注册时,将其用户名、密码保存到SharedPreference中,登录时输入用户名、密码,读取SharedP
    Android第一次实验

目录