`
j_butterfly
  • 浏览: 111923 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Android开发总结-获取来电号码

阅读更多

最近项目要做一个能捕获到来电事件,取得电话号码的应用.在网上查了二天,算是运行成功了.在这里分享一下经验:)

 

 

通过之前对Android 的学习,认为来电话时应该是通过广播(broadcast)通知给应用的.所以就在Reference里找,知道Broadcast Action应该在 anroid.content.Intent类里找.找了找Standard Broadcast Action,竟然没有...但觉得ACTION_ANSWER比较像, (Activity Action: Handle an incoming phone call.)但又是Activity Action.BroadCast的Filter应该是用不了的. 找了半天,感觉这条路比较难达到目的,就去Google了.非常郁闷的是,很多搜索结果的网站都让中国给屏闭了,很多都打不开. 不过总算也找到了一些零碎的代码, 试着去运行,但在Console里一直没有输出日志,那会以为是代码问题,解决了半天,最后才恍然大悟,日志应该在LogCat里看,才发现代码是好的.不知道什么时候我把Logcat视图给关了,之后就忘了这事了.还要注意的是,权限一定要在Manifest文件中设置(<uses-permission android:name="android.permission.READ_PHONE_STATE" />)

 

运行代码,成功!!在LogCat里也输出了电话号码.但看代码有很多迷惑的地方,比如说Manifest文件里intent-filter的action:android.intent.action.PHONE_STATE这是哪来的?我在官方的Reference里没有搜到!!后面在以前的Reference里找到有,难道2.1把它不推荐使用了?在2.1的Reference里,一点它的身影都没有.

 

后面想看看官方自带的Phone应用在这里是怎么写的,去官方下载了Phone App应用 的源代码

git clone git://android.git.kernel.org/platform/packages/apps/Phone.git

但奇怪的是也搜不到android.intent.action.PHONE_STATE这个字符串,说明不是用的这种方式.

静下心来看了看Phone的源代码,有点失望,没看明白是怎么捕获到的.还用了很多内部的类,这些类都SDK中都没有暴露出来,去Google了一下,还有人和我一样的疑问,不知道怎样使用这些内部的类.估计官方不想我们这么去用.但应该怎么用呢?

 

下面这些代码在2.1上是可以运行的.但觉得不是2.1推荐的方式,因为android.intent.action.PHONE_STATE在2.1Reference里找不到....

public class CustomBroadcastReceiver extends BroadcastReceiver {

	private static final String TAG = "CustomBroadcastReceiver";

	@Override
	public void onReceive(Context context, Intent intent) {
	    Log.i(TAG, "WE ARE INSIDE!!!!!!!!!!!");
	    TelephonyManager telephony = (TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE);
	    CustomPhoneStateListener customPhoneListener = new CustomPhoneStateListener();

	    telephony.listen(customPhoneListener, PhoneStateListener.LISTEN_CALL_STATE);

	    Bundle bundle = intent.getExtras();
	    String phoneNr= bundle.getString("incoming_number");
	    Log.i(TAG, "phoneNr: "+phoneNr);	    
	}
}
 
public class CustomPhoneStateListener extends PhoneStateListener {

	private static final String TAG = "CustomPhoneStateListener";
	
	@Override
	public void onCallStateChanged(int state, String incomingNumber){

		Log.v(TAG, "WE ARE INSIDE!!!!!!!!!!!");
        Log.v(TAG, incomingNumber);

        switch(state){
            case TelephonyManager.CALL_STATE_RINGING:
	            Log.d(TAG, "RINGING");
	            break;
            case TelephonyManager.CALL_STATE_IDLE:
                Log.d(TAG, "IDLE");
                break;
            case TelephonyManager.CALL_STATE_OFFHOOK:
                Log.d(TAG, "OFFHOOK");
                break;
        }       
	}
}
 
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.xjgz"
      android:versionCode="1"
      android:versionName="1.0">
    <application android:icon="@drawable/icon" android:label="@string/app_name">
		<receiver android:name=".CustomBroadcastReceiver" >
			<intent-filter>
		    	<action android:name="android.intent.action.PHONE_STATE" />   
			</intent-filter>
		</receiver>
    </application>

    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-sdk android:minSdkVersion="7" />

</manifest> 
4
0
分享到:
评论

相关推荐

    Android获取手机号码归属地

    Android程序获取手机号码归属地。例如用户输入“150......”程序立即显示此号码归属于中国移动号。

    传智播客Android视频教程-课程源码.rar

    第一天 1&gt;搭建Android开发环境 2&gt; 创建与启动手机模拟器 3&gt; 学习使用ANDROID操作系统 4&gt; 开发与运行(卸载)第一个ANDROID应用 5&gt; 项目的目录结构 6&gt; 项目清单文件分析 7&gt; 分析第一个ANDROID应用的启动过程 8&gt; 电话拔...

    Android开发资料合集-World版!

    9.56、获取本机电话号码 280 9.57、获得手机联系人 280 9.58、2.0以上版本查询联系人详细信息 282 9.59、2.0以上版本添加联系人 285 9.60、拨打电话 287 9.61、发送SMS、MMS 287 9.62、监听电话被呼叫状态 288 9.63...

    Android开发音乐播放器

    Android音乐播放器实战,实现本地歌曲播放控制,可后台播放,拔出耳机暂停,来电暂停,电话挂断继续播放。这个项目很好的结合了Android的四大组件知识。其中音乐来源于手机本地,使用了Content Provider获取,播放...

    android开发实例大全_王东华

    本书以Android应用程序的开发为主题,并结合真实的案例向读者详细介绍了Android的基本组件的使用及应用程序开发的整个流程。本书的讲述由浅入深,实例全面并典型,几乎囊括了所有和Android应用相关的项目。全书分为...

    Android开发应用实战详解源代码

    1.2 搭建android开发环境 1.2.1 准备工作 1.2.2 windows系统下的搭建过程 1.2.3 linux系统下的搭建过程 1.3 常见问题汇总 1.4 使用本书的配套实例 1.5 小结 第2章 android开发必备 2.1 android体系结构 2.1.1 各种库...

    Google Android SDK开发范例大全(第3版) 1/5

    余志龙、陈昱勋、郑名杰、陈小风,分别来自手机制造业、电视媒体业、网络、电信产业、软件开发等领域,擅长嵌入式系统软件设计、J2ME游戏开发、Android开发,以及12EE、JSP、Servlet、Java Bean、PHP、C#等程序语言...

    《Google Android SDK开发范例大全(第3版)》.pdf

     全书共分11章,主要以范例集的方式来讲述android的知识点,详细介绍了开发android的人机交互界面、android常用的开发控件、android手机收发短信等通信服务、开发android手机的自动服务功能和娱乐多媒体功能以及...

    Google Android SDK开发范例大全(第3版) 4/5

    余志龙、陈昱勋、郑名杰、陈小风,分别来自手机制造业、电视媒体业、网络、电信产业、软件开发等领域,擅长嵌入式系统软件设计、J2ME游戏开发、Android开发,以及12EE、JSP、Servlet、Java Bean、PHP、C#等程序语言...

    Google Android SDK开发范例大全(第3版) 3/5

    余志龙、陈昱勋、郑名杰、陈小风,分别来自手机制造业、电视媒体业、网络、电信产业、软件开发等领域,擅长嵌入式系统软件设计、J2ME游戏开发、Android开发,以及12EE、JSP、Servlet、Java Bean、PHP、C#等程序语言...

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

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

    android 电话状态监听(来电和去电)实现代码

    我们不能对TelephonyManager进行实例化,只能通过获取服务的形式: Context.getSystemService(Context.TELEPHONY_SERVICE); 注意:对手机的某些信息进行读取是需要一定许可(permission)的。 主要静态成员常量:...

    2019毕业设计作品-一款支持来电拦截的通讯录APP 附论文核心部分、项目代码

    当有来电时,应用会先获取用户配置的号码黑名单列表,匹配如果号码不在黑名单列表才会继续匹配过滤规则。 您可以基于此做二次开发作为你的毕业设计,例如拦截功能扩展为支持用户通过编写脚本自定义自己的拦截规则,...

    android项目手机卫士来电显示号码归属地

    由于诈骗电话越来越猖狂,号码归属地显示越来越重要,本篇文章主要介绍了android手机卫士来电显示号码归属地,有要的朋友可以了解一下。

    google android sdk开发范例大全 第二版 PDF 光盘代码

    google android sdk开发范例大全 第二版 PDF 和 随书光盘代码 ISBN:9787115229649 目录 第1章 了解、深入、动手做   1.1 红透半边天的Android   1.2 本书目的及范例涵盖范围   1.3 如何阅读本书 ...

    Android 开发技巧

    9.56、获取本机电话号码 280 9.57、获得手机联系人 280 9.58、2.0以上版本查询联系人详细信息 282 9.59、2.0以上版本添加联系人 285 9.60、拨打电话 287 9.61、发送SMS、MMS 287 9.62、监听电话被呼叫状态 288 9.63...

    黎活明android教程的全程PPT

    第一天 1&gt;搭建Android开发环境 2&gt; 创建与启动手机模拟器 3&gt; 学习使用ANDROID操作系统 4&gt; 开发与运行(卸载)第一个ANDROID应用 5&gt; 项目的目录结构 6&gt; 项目清单文件分析 7&gt; 分析第一个ANDROID应用的启动过程 8&gt; ...

    android手机安全卫士

    来电号码归属地显示,来电归属地位置的调整,来电黑名单/短信黑名单管理. 电话短信备份和还原. 保护手机的数据和通讯安全。 软件管理: 系统软件和本地软件,可以显示软件的详细信息,启动,删除应用程序.连接获取服务器...

Global site tag (gtag.js) - Google Analytics