Android监听来电和去电
要监听android打电话和接电话,只需下面2步骤
1.第一步,写一个Receiver继承自BroadcastReceiver
import android.app.Service;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.telephony.TelephonyManager;
import android.util.Log; public class PhoneStateBroadCastReceiver extends BroadcastReceiver
{
private static final String TAG = "PhoneStateBroadCastReceiver"; private static boolean mIncomingFlag = false;
private static String mIncomingNumber = null; @Override
public void onReceive(Context context, Intent intent)
{
// 如果是拨打电话
if (intent.getAction().equals(Intent.ACTION_NEW_OUTGOING_CALL))
{
mIncomingFlag = false;
String phoneNumber = intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER);
Log.i(TAG, "call OUT:" + phoneNumber);
} else
{
// 如果是来电
TelephonyManager tManager =
(TelephonyManager) context.getSystemService(Service.TELEPHONY_SERVICE);
switch (tManager.getCallState())
{
case TelephonyManager.CALL_STATE_RINGING:
mIncomingNumber = intent.getStringExtra("incoming_number");
Log.i(TAG, "RINGING :" + mIncomingNumber);
break;
case TelephonyManager.CALL_STATE_OFFHOOK:
if (mIncomingFlag)
{
Log.i(TAG, "incoming ACCEPT :" + mIncomingNumber);
}
break;
case TelephonyManager.CALL_STATE_IDLE:
if (mIncomingFlag)
{
Log.i(TAG, "incoming IDLE");
}
break;
}
}
} }
第二步:在AndroidManifest.xml,配置写好的Receiver,并拦截相应的BroadCastAction,
另外注意加上相应的权限
<receiver android:name=".broadcase.PhoneStateBroadCastReceiver">
<intent-filter>
<action android:name="android.intent.action.PHONE_STATE"/>
<action android:name="android.intent.action.NEW_OUTGOING_CALL" />
</intent-filter>
</receiver>
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" />
Android监听来电和去电 | 若水工作室 http://www.92coding.com/blog/index.php/archives/46.html
Android监听来电和去电的更多相关文章
- Android监听系统短信数据库变化-提取短信内容
由于监听系统短信广播受到权限的限制,所以很多手机可能使用这种方式没法监听广播,从而没办法获取到系统短信,所以又重新开辟一条路. Android监听系统短信数据库内容变化使用场景: 1.监听短信数据库的 ...
- Android监听返回键、Home键+再按一次返回键退出应用
Android监听返回键需重写onKeyDown()方法 Home键keyCode==KeyEvent.KEYCODE_HOME @Override public boolean onKeyDown( ...
- Android监听应用程序安装和卸载
Android监听应用程序安装和卸载 第一. 新建监听类:BootReceiver继承BroadcastReceiver package com.rongfzh.yc; import android. ...
- Android监听ScrollView滑动到顶端和底部
Android监听ScrollView滑动到顶端和底部 package cn.testscrollview; import android.os.Bundle; import android. ...
- Android 监听网络变化
Android 监听网络变化
- android 监听返回键
android监听返回键 public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE ...
- Android监听手机网络变化
Android监听手机网络变化 手机网络状态发生变化会发送广播,利用广播接收者,监听手机网络变化 效果图 注册广播接收者 <?xml version="1.0" encodi ...
- 【Android】Android 监听apk安装替换卸载广播
[Android]Android 监听apk安装替换卸载广播 首先是要获取应用的安装状态,通过广播的形式 以下是和应用程序相关的Broadcast Action ACTION_PACKAGE_ADDE ...
- Android 监听 WiFi 开关状态
Android 监听 WiFi 开关状态 转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/70854309 本文出自[赵彦军的博客] ...
随机推荐
- angular2 递归导航菜单实现方式
看了网上很多源码,基本都是采用循环三级的方式.如果是无限级的菜单,就无法实现了. 菜单格式: [ { "title": "Item-1", "icon ...
- Java 虚拟机并发编程
chap 1. 竞争条件:不同的执行得到不同的结果.规避共享可变性(即对共享状态的修改)可避免不必要的竞争条件. chap 2. balance between 一致性.准确性和性能.过犹不及!线程数 ...
- node.js初学遇到的问题
是用express安装一个网站基础架构时 express -t ejs microblog 但是出来的模板引擎是jade,通过修改js也修改模板引用npm install 等等修改了index.ejs ...
- Blend 2015 教程 (三) 模板
前一篇讲述了一些基本样式的修改方法,并搭建了Style层的基本框架,本篇将进一步修改ListBox的样式. 1. 首先选中ListBox控件,在美工板导航栏中点击ListBox,选择 编辑其他模板-编 ...
- 我的ORM之八-- 事件
我的ORM索引 dbo.Event 需要新建一个类,继承:IDboEvent,并设置给:dbo.Event,如: dbo.Event = MyOqlEvent.GetInstance(); 在 IDb ...
- js操作Dom的一些方法简化
众所周知JQ的选择符很强大,一些看起来很难实现的功能只要在$符号中传入简单的字符串就可以获取到各种层级关系的DOM,而却不用考虑浏览器的兼容性.但有时候在做小项目的时候并不需要引入JQ,而又不想频繁繁 ...
- 在asp.net WebAPI 中 使用Forms认证和ModelValidata(模型验证)
一.Forms认证 1.在webapi项目中启用Forms认证 Why:为什么要在WebAPI中使用Forms认证?因为其它项目使用的是Forms认证. What:什么是Forms认证?它在WebAP ...
- 作业2源程序版本管理软件优缺点,及Github注册
目前流行的源程序管理软件和项目管理软件主要有以下一些: 1.Visual Source Safe 优点:如果开发工具是VS.NET,用VSS较合适,方便,安装配置和使用都简单,版本控制简单,打labe ...
- java提高篇(十三)-----equals()方法总结
equals() 超类Object中有这个equals()方法,该方法主要用于比较两个对象是否相等.该方法的源码如下: public boolean equals(Object obj) { retu ...
- .net 时间戳和日期互转
1.时间戳转日期 public static DateTime IntToDateTime(int timestamp) { ,,)).AddSeconds(timestamp); } 调用: ...