`

android-轻松监听来电和去电

阅读更多
要监听android打电话和接电话,只需下面2步骤
1.第一步,写一个Receiver继承自BroadcastReceiver
public class PhoneStatReceiver extends BroadcastReceiver{
       
        private static final String TAG = "PhoneStatReceiver";
       
//        private static MyPhoneStateListener phoneListener = new MyPhoneStateListener();
       
        private static boolean incomingFlag = false;
       
        private static String incoming_number = null;

        @Override
        public void onReceive(Context context, Intent intent) {
                //如果是拨打电话
                if(intent.getAction().equals(Intent.ACTION_NEW_OUTGOING_CALL)){                       
                        incomingFlag = false;
                        String phoneNumber = intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER);       
                        Log.i(TAG, "call OUT:"+phoneNumber);                       
                }else{                       
                        //如果是来电
                        TelephonyManager tm =
                            (TelephonyManager)context.getSystemService(Service.TELEPHONY_SERVICE);                       
                       
                        switch (tm.getCallState()) {
                        case TelephonyManager.CALL_STATE_RINGING:
                                incomingFlag = true;//标识当前是来电
                                incoming_number = intent.getStringExtra("incoming_number");
                                Log.i(TAG, "RINGING :"+ incoming_number);
                                break;
                        case TelephonyManager.CALL_STATE_OFFHOOK:                               
                                if(incomingFlag){
                                        Log.i(TAG, "incoming ACCEPT :"+ incoming_number);
                                }
                                break;
                       
                        case TelephonyManager.CALL_STATE_IDLE:                               
                                if(incomingFlag){
                                        Log.i(TAG, "incoming IDLE");                               
                                }
                                break;
                        }
                }
        }
}

第二步:在AndroidManifest.xml,配置写好的Receiver,并拦截相应的BroadCastAction,
另外注意加上相应的权限。
<receiver android:name=".filter.PhoneStatReceiver"> 
            <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>
        <uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS"></uses-permission>


转载自:http://www.eoeandroid.com/thread-8994-1-1.html
分享到:
评论

相关推荐

    Android-高仿网易新闻新版频道管理功能

    8. **状态保存和恢复**:Android应用可能会因为各种原因(如电话来电、屏幕旋转)而被销毁和重建,因此需要保存和恢复频道列表的状态,以保持用户的操作不丢失。 9. **权限管理**:如果涉及到本地数据存储,需要...

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

    5. **来电处理**:考虑到手机设备的特性,需要监听来电事件,当电话接入或拨出时,暂停音乐播放并记录当前播放位置,电话结束时恢复播放。 6. **语言支持**:通过Android的资源文件(res/values/strings.xml)设置多...

    android 桌面快捷键未读的消息数目,未接来电,短信提醒那个右上角的数字

    在Android操作系统中,桌面快捷方式上的未读消息数目、未接来电和短信提醒的数字标记是一种常见的通知系统功能。这个小数字通常出现在应用图标右上角,被称为“通知徽标”或“角标”。它的作用是提醒用户有未处理的...

    Android应用源码之通话记录源码-IT计算机-毕业设计.zip

    `CallLog.Calls`表包含了各种通话信息,如ID、类型(来电、去电、未接)、时间、号码、持续时间等。你可以使用`SQLiteDatabase`类进行数据库操作。 4. **RecyclerView**:展示通话记录列表通常使用RecyclerView,这...

    android_phone_state.rar_android

    在Android系统中,电话状态监听是一项重要的功能,它允许应用程序获取和响应手机的通话状态,如来电、去电、通话结束等。这个"android_phone_state.rar_android"可能包含了一个示例项目或者库,用于演示如何在...

    短信转发器-监控Android手机短信、来电、APP通知,并根据指定规则转发到其他手机

    短信转发器——监控Android手机短信、来电、APP通知,并根据指定规则转发到其他手机:钉钉群自定义机器人、钉钉企业内机器人、企业微信群机器人、飞书机器人、企业微信应用消息、邮箱、bark、webhook、Telegram...

    Android如何帮助用户自动接听或者挂断来电

    首先,我们需要在AndroidManifest文件中添加相应的权限和广播接收器,以便监听来电的状态。权限包括MODIFY_PHONE_STATE和READ_PHONE_STATE,这两个权限是必需的,以便我们的应用程序可以控制电话的状态。 接下来,...

    Android的自动拨号

    同时,我们可以注册BroadcastReceiver监听特定的事件(如来电、网络状态变化等),当这些事件发生时,BroadcastReceiver接收到广播并启动拨号Intent。 2. **PhoneAccount**: 自定义PhoneAccount是Android 5.0...

    Android自定义滑动接听电话控件组

    这样的控件通常由一个显示来电信息的界面和一个可滑动的接听/挂断按钮组成。在这个场景中,我们将深入探讨如何创建这样一个自定义控件,并涵盖以下几个关键知识点: 1. **自定义View**: 自定义滑动接听控件首先...

    android音量控制

    总的来说,Android的音量控制系统是高度可定制的,无论是用户还是开发者,都能轻松调整和控制各个音量层次,以满足不同的需求。通过对AudioManager类的深入理解和使用,开发者可以创建出更加智能和用户友好的音频...

    Android 手机铃声软件源码.zip

    此外,还可能有设置界面,让用户可以轻松地将选择的铃声设为默认来电、短信或其他通知的提示音。 在事件处理方面,Android使用监听器(Listener)模式来响应用户的操作。比如,点击事件监听器会处理用户对铃声条目...

    Android操作铃声、震动与传感器的代码例子

    总结来说,Android提供的这些API使得开发者可以轻松地实现对设备硬件的控制,包括播放铃声、触发震动以及监听传感器事件,从而创建出丰富的交互体验。例如,结合上述代码,我们可以创建一个简单的应用,实现类似于...

    android左右滑动 半个窗体

    - **滑动监听**:在手势识别的回调中,根据滑动的距离和速度来调整动画的执行。如果滑动距离超过一定阈值,可以启动动画;若滑动速度过快,可以考虑使用回弹效果,这通常需要用到`Scroller`或`OverScroller`类。 4...

    Android 手机铃声软件源码.zip源码资源下载

    5. **Intent和BroadcastReceiver**:理解如何在不同组件间传递信息,以及如何监听系统事件(如来电、闹钟)来改变铃声。 6. **数据持久化**:如果应用有自定义铃声列表,可能涉及SQLite数据库或SharedPreferences的...

    Android项目超强功能通讯录.rar

    这涉及到了对输入文本的监听和数据过滤算法的实现。 4. **联系人同步与导入导出**:考虑到实际需求,项目可能集成了系统联系人的读取和写入功能,允许用户同步手机上的联系人到应用内,或者将应用内的联系人导出为...

    Android 音乐播放器 .zip

    本项目"Android音乐播放器"基于Android Studio,利用Service和BroadcastReceiver两大核心组件来实现后台播放、控制以及系统事件监听等功能。下面将详细解析这个项目中的知识点。 1. **Service组件**:在Android中,...

    CallReminder:安卓简单的来电提醒应用

    CallReminder的核心功能之一是监听来电事件,这需要用到Android的BroadcastReceiver组件。BroadcastReceiver可以监听系统广播,当接收到特定的系统事件(如来电)时,触发相应的回调函数,执行提醒操作。 5. **...

    基于Android系统的BusyBee手游开发毕业论文.doc

    通过BroadcastReceiver,我们可以监听系统事件,如来电或网络状态变化,以便在游戏中做出相应调整。 在需求分析与系统概要设计阶段,我们明确了游戏的目标用户群体,分析了他们的行为模式,以此为依据制定了游戏的...

    ContactHelper:Android通讯录,短信,通话记录的api封装

    - **读取通话记录**:库提供了读取通话记录的功能,包括通话类型(来电、去电、未接)、时间、号码等信息。 - **删除通话记录**:可以方便地删除某个或某类通话记录,如所有未接电话或特定号码的通话记录。 - **...

Global site tag (gtag.js) - Google Analytics