`
j_butterfly
  • 浏览: 113650 次
  • 性别: 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系统中,获取来电和去电号码是开发者经常需要处理的任务,这主要涉及到电话管理和广播接收器的相关知识。下面将详细阐述如何实现这一功能。 首先,我们需要了解Android的权限管理。由于涉及到用户隐私,...

    来电获取来电号码

    在Android开发中,"来电获取来电号码"是一个常见的需求,主要涉及到电话管理和广播接收器(BroadcastReceiver)的应用。本文将详细讲解如何实现这个功能,包括获取来电、未接来电的号码以及设置黑名单。 首先,我们...

    Android开发应用源码-来电秀实现.zip

    【Android开发应用源码-来电秀实现.zip】这个压缩包文件是针对Android平台的一个来电秀应用的源码,主要用于帮助开发者学习如何在Android系统中实现个性化的来电显示功能。源码参考的价值在于它提供了实际的代码实现...

    Android获取手机号码归属地

    在Android平台上,获取手机号码归属地是一项常见的需求,特别是在开发涉及通信或用户验证的应用时。本文将详细讲解如何实现这一功能。 首先,我们要明白手机号码的归属地信息通常包括运营商(如中国移动、中国联通...

    Android项目实战--手机卫士08--获取手机联系人

    在Android开发中,"手机卫士"这类应用通常涉及到设备管理、安全防护和性能优化等多个方面。本项目实战聚焦于获取手机联系人这一功能,这在很多安全应用中是必要的,比如备份联系人、识别垃圾来电或者防止隐私泄露。...

    android开发技巧总汇android开发培训-教师必备.docx

    本文将详细介绍一些关键的Android开发技巧。 1. 入门实例剖析 Android 应用程序的起点通常是一个Activity,它是用户界面的主要构建块。在AndroidManifest.xml文件中,我们通过配置`&lt;intent-filter&gt;`来指定程序的...

    Android项目实战--手机卫士13--手机号码归属地的逻辑和数据库的压缩

    在Android项目实战中,开发一款手机卫士应用是常见的任务,而实现手机号码归属地查询功能是其中的关键部分。这个功能能够帮助用户识别来电号码的来源,提高对未知来电的安全防范意识。本项目中,我们将深入探讨手机...

    Android项目实战--手机卫士12--手机号码归属地查询界面

    这个功能通常用于帮助用户识别来电号码的来源,从而提高对未知来电的安全判断。以下是该功能实现涉及的关键知识点及详细解释: 1. **Android Studio**:作为开发平台,Android Studio 提供了集成开发环境(IDE),...

    android使用JAIN jar包实现SIP协议栈

    #### 四、JAIN SIP Stack for Android的获取与集成 - **下载**: - 官方网站:[Telestax博客](https://telestax.com/blog/jain-sip-stack-for-android/) - 下载地址:[Mobicents CI CloudBees]...

    Android课程设计--基于Android的手机安全卫士.doc

    该设计旨在帮助学生掌握Android开发的基础知识和实践技能,包括环境配置、应用开发流程、功能设计以及安全保护机制。 1. **课程设计目的** - 安装和配置Android编程环境,了解开发工具的使用。 - 学习和熟悉...

    android 监听来电和去电

    在Android开发中,监听来电和去电是许多应用程序的核心功能之一,尤其是在通讯应用、日志记录或企业级安全软件中。根据给定的文件信息,我们可以深入探讨如何在Android中实现这一功能,包括必要的权限设置、广播接收...

    Android项目实战--手机卫士14--接电话时显示电话归属地

    `TelephonyManager`类是与电话相关的API接口,我们可以用它来获取来电号码和通话状态。当电话状态变为" ringing"(振铃)时,我们的广播接收器会被触发,这时可以开始获取归属地信息。 2. **归属地查询**:获取到...

    Android SDK 2.2-4.4

    **SDK下载链接**:对于开发者来说,访问提供的链接(http://pan.baidu.com/s/1i39WkxZ)可以获取Android 2.2至4.4的SDK包,包含各种版本的API工具、系统映像以及模拟器等资源,方便进行跨版本的开发和测试。...

    Android来电防火墙源码

    以上是对"Android来电防火墙源码"所涉及的关键技术点的分析,这些知识点涵盖了Android应用开发中的核心要素,包括系统兼容性、权限管理、事件监听、数据库操作和用户界面设计等。通过深入理解和改进这些部分,可以...

    Android课程设计---基于Android系统的音乐播放器设计与实现.doc

    完成此课程设计,学生不仅可以掌握Android开发的基本技能,还可以深入了解Android的系统架构和多媒体处理机制,提升实际问题解决能力。同时,通过设计和实现用户友好的界面,对UI/UX设计也会有更深入的理解。

    Android代码-公司通讯录(含来电号码姓名查询和搜索功能).zip

    当接收到通话状态改变的广播时,可以获取来电号码,然后查询SQLite数据库匹配姓名。匹配成功后,可以显示自定义的来电提示界面,展示来电者的姓名。 5. 搜索功能实现:在搜索框中输入关键词时,需要实时更新显示的...

    Android代码-来电弹屏实例代码带关闭按钮.rar

    在Android开发中,来电弹屏功能通常用于应用的个性化通知或者特定场景的提醒,比如来电显示、消息提醒等。这个"Android代码-来电弹屏实例代码带关闭按钮.rar"压缩包提供了一个实现此类功能的示例项目。接下来,我们...

    Android 公司通讯录(含来电号码姓名查询和搜索功能).rar

    - BroadcastReceiver:利用BroadcastReceiver监听来电广播,当有电话打入时,触发监听器并获取来电号码。 - 拨号器权限:需要申请READ_PHONE_STATE权限,以访问来电信息。 - 自定义来电显示:根据获取到的来电...

    Android应用---音乐播放器毕设.zip

    这个项目是为学习Android开发的学生或开发者准备的,旨在帮助他们理解和实践Android应用的基本构建块,特别是与媒体播放相关的功能。以下是关于这个音乐播放器应用的一些关键知识点: 1. **Android SDK**: 音乐...

Global site tag (gtag.js) - Google Analytics