Android广播接实现电话的监听(电话的状态,拦截)

Android广播接实现电话的监听  

1:需要在AndroidManifest.xml清单中添加权限 

<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE" />

2:注册广播 要注意事件的级别 (android中的级别-1000~1000)

<receiver android:name=".PhoneBroadcastReceiver">
<intent-filter android:priority="1000">
<action android:name="android.intent.action.NEW_OUTGOING_CALL"/>
<action android:name="android.intent.action.PHONE_STATE"/>
</intent-filter>
</receiver>

详细配置请看 AndroidManifest.xml   

<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.zyw.broadcastsendsms"android:versionCode="1"android:versionName="1.0" ><uses-sdkandroid:minSdkVersion="8"android:targetSdkVersion="15" /><applicationandroid:icon="@drawable/ic_launcher"android:label="@string/app_name"android:theme="@style/AppTheme" ><activityandroid:name=".SendSMS"android:label="@string/title_activity_send_sms" ><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity><receiver android:name=".PhoneBroadcastReceiver"><intent-filter android:priority="1000"><action android:name="android.intent.action.NEW_OUTGOING_CALL"/><action android:name="android.intent.action.PHONE_STATE"/>   </intent-filter></receiver></application><uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS"/><uses-permission android:name="android.permission.READ_PHONE_STATE" />
</manifest>

 

 

3:编写广播的实现类 这里需要继承BroadcastReceiver 实现onReceive()方法

 

程序的源代码如下:

package com.zyw.broadcastsendsms;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 PhoneBroadcastReceiver extends BroadcastReceiver {private static final String TAG = "message";private static boolean mIncomingFlag = false;private static String mIncomingNumber = null;@Overridepublic 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;}}}/*@Overridepublic void onReceive(Context context, Intent intent) {String number = getResultData();if("5556".equals(number)){setResultData(null);//挂断}else{number = "12593"+ number; //其他,则加区号setResultData(number);}}*/
}

 

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/403106.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CH340 MAC驱动使用教程

CH340 支持各类系统平台下使用&#xff0c;驱动的使用以及下载介绍可以参见我的其他博客&#xff1a;CH340 驱动&#xff08;含各平台&#xff09; 这一篇文章主要介绍CH340 在 MAC 以及各类 Arduino 平台的安装使用流程&#xff0c;首先到沁恒官网下载最新的CH340驱动&#x…

python基础2

本节内容 列表、元组操作字符串操作字典操作集合操作文件操作字符编码与转码 一、列表、元组操作 列表是我们最以后最常用的数据类型之一&#xff0c;通过列表可以对数据实现最方便的存储、修改等操作 定义列表 >>> name [hongpeng,21,ops] 通过下标访问列表中的元素…

element-ui嵌套弹框遮罩层解决

:modal-append-to-body“false” :append-to-body“true” 嵌套的 Dialog 必须指定该属性并赋值为 true <template><el-button type"text" click"outerVisible true">点击打开外层 Dialog</el-button><el-dialog title"外层 D…

Linux 串口调试工具汇总

在 linux 系统下进行串口调试或者开发时配合简单易用的串口调试工具那是必不可少。这篇博客对当前用的较多的&#xff0c;且我自己经常用的一些串口工具做一下汇总&#xff0c;大家可以参考一下。 实验环境&#xff1a; OS: Ubuntu16.04 Kernel: 4.4.0 --------------------…

Find和FirstOrDefault()有什么区别?

From: http://www.cnblogs.com/Benjamin/p/3261538.html Find方法和FirstOrDefault方法效果相同&#xff0c;都是返回满足条件的第一个元素&#xff0c;如果没有该元素&#xff0c;则返回null。 那么这两个扩展方法有什么不同&#xff1f; 1&#xff09;Find方法是.netFramewor…

python3.5中import sqlite3报错:ImportError: No module named _sqlite3

原因&#xff1a;缺少相关库 解决方案&#xff1a; 1 安装相关库 yum install sqlite-devel 2 重新编译安装Python转载于:https://www.cnblogs.com/MnCu8261/p/5836028.html

Linux系统putty的安装使用教程

文章已经汇总到我的其他博客文章&#xff1a; Linux 串口调试工具汇总 - JAZZSOLDIER的专栏 - 博客频道 - CSDN.NET http://blog.csdn.net/jazzsoldier/article/details/70183995 有疑问可以给我留言或者评论哦~:-D

nagios监控之(监控配置)

打开上一章&#xff1a;nagios监控之&#xff08;运行环境搭建&#xff09; PS&#xff1a; 上一张已经把nagios的基本环境搭建完成&#xff0c;并能成功浏览nagios页面 现在讲下nagios配置文件 配置文件 放在nagios/etc下面 cgi.cfg 控制CGI访问的配置文件 …

minicom/picocom/cutecom/putty 安装与使用教程

文章已经汇总到我的其他博客文章&#xff1a; Linux 串口调试工具汇总 - JAZZSOLDIER的专栏 - 博客频道 - CSDN.NET http://blog.csdn.net/jazzsoldier/article/details/70183995 有疑问可以给我留言或者评论哦~:-D

List去除重复的元素

有两种方法&#xff0c;一种是去重不带顺序的&#xff0c;一种是去重带顺序的。 /** 方法1: 无顺序* Hastset根据hashcode判断是否重复&#xff0c;数据不会重复*/public static List<String> deleteDuplicate(List<String> list){Set<String> set new Hash…

小议H.264技术发展趋势

随着HDTV的兴起&#xff0c;H.264这个规范频频出现在我们眼前&#xff0c;HD-DVD和蓝光均计划采用这一标准进行节目制作。而且自2005年下半年以来&#xff0c;无论是NVIDIA还是ATI都把支持H.264硬件解码加速作为自己最值得夸耀的视频技术。H.264到底是何方“神圣”呢&#xff1…

Linux下ctrl+c,ctrl+z,ctrl+d的区别

ctrl-c 向当前进程发送 SIGINT 信号&#xff0c;用于终止一个进程 ctrl-z 向当前进程发送 SIGSTOP 信号&#xff0c;用于挂起一个进程 ctrl-d 不是发送信号&#xff0c;而是表示一个特殊的二进制值&#xff0c;表示 EOF&#xff0c;如果在输入无法结束&#xff0c;提示…

python zipfile模块 ZIP64

python自带zipfile模块用来读、写zip文件。 def zip_dir(dirname,zipfilename):filelist []if os.path.isfile(dirname):filelist.append(dirname)else :for root, dirs, files in os.walk(dirname):for name in files:filelist.append(os.path.join(root, name))zf zipfile.…

[翻译] effective go 之 Names Semicolons

2019独角兽企业重金招聘Python工程师标准>>> Names Names are as important in Go as in any other language. In some cases they even have semantic effect: for instance, the visibility of a name outside a package is determined by whether its first cha…

Linux 命令出现号(大于号)如何退出

可以尝试使用如下三种组合指令&#xff1a; ctrl-c 向当前进程发送 SIGINT 信号&#xff0c;用于终止一个进程 ctrl-z 向当前进程发送 SIGSTOP 信号&#xff0c;用于挂起一个进程 ctrl-d 不是发送信号&#xff0c;而是表示一个特殊的二进制值&#xff0c;表示 EOF&#xff0…

2013年。。。。。。

<?php echo " &#xff12;&#xff10;&#xff11;&#xff13;年来了。。。。。。"; ?>转载于:https://blog.51cto.com/myunix/1132157

75.Android之基本架构

转载&#xff1a;http://www.cnblogs.com/lijunamneg/archive/2013/01/18/2866953.html Android其本质就是在标准的Linux系统上增加了Java虚拟机Dalvik&#xff0c;并在Dalvik虚拟机上搭建了一个JAVA的application framework&#xff0c;所有的应用程序都是基于JAVA的applicati…

TTL转485电路设计

在 TTL/CMOS 转接半双工 RS485 的电路设计中&#xff0c;由于半双工的特性&#xff0c;需要有信号来控制 485 转接芯片的发送和接收使能端&#xff0c;因此需要具体场景具体分析。 如果是使用 MCU 或者自带发送状态指示脚功能&#xff08;指示当前是否在进行串口发送&#xff0…

flash 动画

浏览着网页不知道该干些什么&#xff0c;突然看到好看的flash动画&#xff0c;其实虽然自己编程序&#xff0c;可是真的觉得很羡慕那些美工同事&#xff0c;做的东东真的很漂亮。看着讲解做着做着&#xff0c;唉&#xff0c;跟人家的对不上了&#xff0c;呵呵&#xff0c;成了另…

USB芯片选型

从 USB 芯片的使用角度来说&#xff0c;USB 系列芯片可以划分为 USB 接口芯片与内置 USB 功能的微控制器。前者对于跨平台和易用性方面比较有优势&#xff0c;无需了解芯片内部工作机制&#xff0c;按照芯片的手册以及官方例程来操作就可以了&#xff0c;而使用平台也比较开放&…