`
mickey_hou
  • 浏览: 249119 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

来电监听

阅读更多
    <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>


    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;
                            }
                    }
            }
    }
分享到:
评论

相关推荐

    安卓通讯录来电监听

    在安卓系统中,来电监听是一种常见的功能,尤其在开发企业级应用或个性化工具时,它允许应用程序接收并处理来电信息。来电监听主要涉及到Android的电话服务API和广播接收器机制。接下来,我们将深入探讨如何在...

    Android来电监听和去电监听实现代码

    来电监听主要利用`PhoneStateListener`类,这是一个系统提供的接口,用于监听手机的通话状态变化。以下是如何实现来电监听的步骤: 1. 创建一个继承自`PhoneStateListener`的子类,并重写`onCallStateChanged`方法...

    Android监听系统来电并弹出提示窗口

    - 通过查看该项目的代码,可以更深入地了解如何实现来电监听以及弹出提示窗口的具体实现逻辑。 通过上述知识点的梳理,我们可以了解到在Android系统中实现监听系统来电并弹出提示窗口涉及到的权限申请、广播接收器...

    Android应用源码之来电弹屏实例代码,带关闭按钮-IT计算机-毕业设计.zip

    - 实现来电监听功能,需要在AndroidManifest.xml文件中声明`READ_PHONE_STATE`权限,否则应用无法获取电话状态。 - 若要在锁屏状态下显示悬浮窗,还需要`SYSTEM_ALERT_WINDOW`权限,即“显示系统级弹窗”的权限。 ...

    ComingCallPro.zip

    在Android开发中,来电监听是一项常见的需求,例如用于创建提醒服务或者自定义来电界面。"ComingCallPro.zip"这个压缩包文件很可能包含了实现这一功能的示例代码。下面我们将详细探讨Android来电监听的两种主要方法...

    自定义来电秀Demo

    2. **来电监听**: - 实现自定义来电秀,首先需要监听电话状态的变化。这通常通过注册一个BroadcastReceiver来实现,监听`android.intent.action.PHONE_STATE`广播事件。 3. **反射机制**: - 在Android系统中,...

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

    实现手机电话状态的监听,主要依靠两个类:TelephoneManger和PhoneStateListener。 TelephonseManger提供了取得手机基本服务的信息的一种方式。因此应用程序可以使用TelephonyManager来探测手机基本服务的情况。应用...

    Android查询来电归属地示例

    在Android中,来电监听通常通过注册BroadcastReceiver来实现。创建一个继承自BroadcastReceiver的类,并重写onReceive()方法。在该方法中,我们可以获取到Intent对象,通过Intent的行动(ACTION_PHONE_STATE)判断...

    Android来电接听或挂断界面源码

    2. **来电监听服务(CallReceiver)**: - 开发者需要创建一个BroadcastReceiver,用于监听来电事件。当电话打入时,系统会广播一个`Intent`,我们可以在这个BroadcastReceiver中接收并处理这个事件。 3. **自定义...

    FloatView-master_rapidlyqnn_来电秀_android_

    3. **来电监听**:项目需要监听电话状态,这涉及到Android的PhoneStateListener,用于检测电话的拨打、接听和挂断状态。 4. **自定义布局**:来电秀的核心是自定义UI设计,开发者需要对Android的XML布局文件和视图...

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

    总结,这个实例项目涵盖了Android自定义对话框的创建、来电监听、权限管理、服务与BroadcastReceiver的使用等多个核心知识点,对于学习和实践Android来电弹屏功能具有很好的参考价值。通过深入研究这个项目,开发者...

    安卓开发-来电弹屏实例代码,带关闭按钮.zip

    7. **异步处理**:由于来电监听可能发生在任何线程中,包括主线程,因此弹屏操作需要在UI线程执行。可以使用`Handler`或`runOnUiThread()`确保更新界面的操作在正确的线程中进行。 8. **性能优化**:为了提供良好的...

    android 利用重力感应监听

    例如,检查来电状态通常需要监听PhoneStateListener或BroadcastReceiver,而权限方面则需要确保应用已经获得了ACCESS_FINE_LOCATION或ACCESS_COARSE_LOCATION权限,因为Android 6.0及以上版本需要运行时权限。...

    安卓Andriod源码——来电弹屏实例代码,带关闭按钮.zip

    6. **线程管理**:由于UI操作必须在主线程中进行,因此来电监听器回调可能需要在子线程中处理,然后通过Handler或者runOnUiThread()切换到主线程执行显示弹屏的操作。 7. **动画效果**:为了提高用户体验,弹屏的...

    Android 公司通讯录(含来电号码姓名查询和搜索功能)-IT计算机-毕业设计.zip

    5. **来电监听服务**:实现来电号码姓名查询功能,开发者需要注册一个BroadcastReceiver监听电话状态广播,当接收到来电时,读取来电号码并匹配数据库中的联系人信息,显示对应的姓名。 6. **搜索功能**:搜索功能...

    [Android源码备份][聊天通讯]公司通讯录(含来电号码姓名查询和搜索功能

    总的来说,这份"Android公司通讯录"源码备份涵盖了Android开发中的多个重要知识点,包括但不限于ContentProvider的使用、来电监听、联系人查询、搜索功能实现、UI设计和权限管理。对于想要深入学习Android应用开发,...

    Android程序研发源码Android 公司通讯录(含来电号码姓名查询和搜索功.zip

    4. 来电识别:Android系统提供了来电监听接口,通过注册BroadcastReceiver监听ACTION_PHONE_STATE广播,当有来电时,可以获取来电电话号码。然后,我们可以对比数据库中的号码,查找对应的联系人信息,并显示在来电...

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

    2. **来电识别**:当手机接收到电话时,Android系统会触发来电监听服务。源码中可能包含一个BroadcastReceiver,用于监听电话状态的变化。一旦有来电,BroadcastReceiver会接收到电话号码,并通过查询数据库匹配对应...

    Android中39采用Service实现电话监听器并将监听到的内容上传到服务器案例

    首先,电话监听器(PhoneStateListener)是Android提供的一个接口,用于监听手机的通话状态,如来电、去电、通话结束等事件。要实现电话监听,我们需要创建一个PhoneStateListener的子类,并重写其中的...

Global site tag (gtag.js) - Google Analytics