TelephonyManager是一个管理手机通话状态、电话网络信息的服务类,该类提供了大量的getXxx(),方法获取电话网络的相关信息。关于TelephonyManager的详解可以参照:Android开发之获取手机SIM卡信息

程序运行结果:


log_phone文件:


应用实例:


package com.jph.monitorphone;import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.PrintStream;
import java.text.SimpleDateFormat;
import java.util.Date;
import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.telephony.PhoneStateListener;
import android.telephony.TelephonyManager;
/*** Describe:</br>* 监视手机来电* 本实例实现了监视当前手机的来电状态,* 并将来电与接听纪录写入log_phone文件中* @author jph* Date:2014.07.22* */
public class MonitorPhone extends Activity {TelephonyManager tManager;private String incomingNumber;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);//获取系统的TelephonyManager对象tManager=(TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);//创建一个通话状态监听器PhoneStateListener pListener=new PhoneStateListener(){@Overridepublic void onCallStateChanged(int state, String number) {// TODO Auto-generated method stubswitch (state) {case TelephonyManager.CALL_STATE_IDLE://无任何状态                    break;case TelephonyManager.CALL_STATE_OFFHOOK://接听来电   writeFile(state,number);break;case TelephonyManager.CALL_STATE_RINGING://来电 incomingNumber=number;writeFile(state,number);break;default:break;}                super.onCallStateChanged(state, incomingNumber);}           };//为tManager添加监听器tManager.listen(pListener, PhoneStateListener.LISTEN_CALL_STATE);}//将接听电话,与来电信息写入到文件protected void writeFile(int state, String number) {// TODO Auto-generated method stubStringBuffer sb=new StringBuffer();SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd hh.mm.ss");sb.append("时间:"+sdf.format(new Date())+"\n");switch (state) {       case TelephonyManager.CALL_STATE_OFFHOOK://接听来电 sb.append("接听了电话号为:"+incomingNumber+"的电话");break;case TelephonyManager.CALL_STATE_RINGING://来电 sb.append(number+"来电");break;        }sb.append("\n-----------------------\n");FileOutputStream fos=null;try {//以追加的方式打开输出流fos=openFileOutput("log_phone", MODE_APPEND);} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();}     //将输出流封装成PrintStream对象PrintStream ps=new PrintStream(fos);//输入文件内容ps.println(sb.toString());//关闭输出流ps.close();}
}

最后别忘为应用添加相应的权限:

AndroidManifest.xml


<!-- 授予应用读取通话状态的权限 --><uses-permission android:name="android.permission.READ_PHONE_STATE"/>

实例分析:

本应用是通过Activity实现的,如果把实例中的代码放到后台执行的Service中运行,并设置Service组件跟随系统启动,那个这种监听就可以做到“神不知,鬼不觉”了。嘿嘿.............

Android开发之监听手机来电相关推荐

  1. Android开发之监听或获取手机短信内容

    最近开始学习安卓,要做一个可以监听手机短信的内容,做个笔记,方便以后查看 有两种方式: 方式一:通过广播监听短信信息 注册一个广播接收器 <receiver android:name=" ...

  2. Android 监听手机来电和去电

    1.继承BroadcastReceiver,监听来去电状态 package com.example.callphonetest.receiver;import android.app.Service; ...

  3. Android中如何监听手机GPS打开状态

    位置坐标监听.GPS卫星状态监听在Android应用中常见,我们是否一进入应用就注册相应的监听? 答案当然不是的.比如,手机的GPS没有打开,而我们注册了监听,那有什么用呢? 所以,我们应该实时监听手 ...

  4. Android开发之监听软键盘状态(弹出收回)

    版权申明]非商业目的注明出处可自由转载 博文地址:https://blog.csdn.net/ShuSheng0007/article/details/81511764 出自:shusheng007 ...

  5. Android开发14——监听内容提供者ContentProvider的数据变化

    一.提出需求 有A,B,C三个应用,B中的数据需要被共享,所以B中定义了内容提供者ContentProvider:A应用修改了B应用的数据,插入了一条数据.有这样一个需求,此时C应用需要得到数据被修改 ...

  6. Android中如何监听手机电话状态

    问题描述:当应用中需要对来电这一状态进行处理时(例如来电时显示来电话号码归属地等),就需要对电话状态进行监听. 解决步骤:1.对电话状态的监听最好是放在服务中,因为有一种服务的启动方式可以不依赖于ac ...

  7. android 2.1 监听电话状态并自动接听来电

    一.开发环境       Elispse5.5,JDK1.6,Aadroid 2.1 二.开发中使用到的重点技术点:       距离感应(SENSOR_SERVICE ),音讯管理(AUDIO_SE ...

  8. Android 监听系统来电获取来电信息

    本文主要介绍了Android监听系统来电,并获取来电信息,在开发app中需要在来电时候,获取来电人的信息并显示出来 首选要注册权限监听来电,然后通过监听到的手机号,来通过接口查询相关的联系人信息 注册 ...

  9. android 监听手机电量变化

    今天,简单讲讲如何监听手机电量的变化. 监听电量是不能静态注册的. 后来上网搜索,发现有五个不能静态注册的广播,这里记录一下,免得下次再后知后觉的发现并惊讶于自己的笨拙. 不能静态注册的广播: and ...

最新文章

  1. 偶然发现静态函数与性能一例
  2. js中window.location.search的用法和作用
  3. Kubernetes使用Jenkins服务器存储所有的kube.config文件
  4. linux服务器上svn的log_Linux服务器上搭建svn服务器
  5. cyclicbarrier_Java并发– CyclicBarrier示例
  6. C语言深度剖析书籍学习记录 第二章 符号
  7. 【数字逻辑设计】Logisim构建四位行波进位加法器
  8. idea-导入其他项目模块的包爆红
  9. 让谷歌、百度最快最多地收录您的网站
  10. 为什么程序员老在改 Bug,就不能一次改好吗?
  11. android之sqlite操作
  12. Window下本地redis的安装、配置以及java版试用
  13. c语言贪吃蛇设计意义,C语言贪吃蛇设计理念.pdf
  14. 蓝湖怎么切图标注_蓝湖——网页设计在线高效自动标注及切图平台
  15. Fortify 5.1漏洞整改方案(1)
  16. python股票量化投资刑不行_【邢不行|量化小讲堂系列10-Python量化入门】量化投资中如何处理复权、除权问题...
  17. windows电脑提醒功能,定时打卡
  18. 计算机和我的关系 论文参考文献,近几年计算机学生参考文献 计算机学生期刊参考文献哪里找...
  19. Android之高德地图SDK配置及简单使用详解
  20. FROM_GLC的介绍与数据下载教程

热门文章

  1. C++设计模式——桥接模式(高屋建瓴)
  2. ES6-Promise实时获取地址和天气问题
  3. 【BZOJ3811】玛里苟斯(线性基)
  4. move_base学习(一)之双激光差动式移动机器人导航仿真
  5. 无人驾驶车辆模型预测控制(一)
  6. kaggle笔记 2019数据科学碗Data Science Bowl 高分总结
  7. Entity Relation Fusion for Real-Time One-Stage Referring Expression Comprehension 2021
  8. 解决苹果手机绑定小米手环4支付宝,蓝牙无法连接问题。
  9. 【英语天天读】优秀的标准
  10. 经常玩电脑正确的坐姿_电脑族玩游戏正确坐姿 7要点坐不伤身