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

简单Receiver监听打进电话和打出电话。

阅读更多

public class ListenerCall extends BroadcastReceiver {
 private static final String TAG = "ListenerCallOut";
 private Intent intent;
 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)) {
//    Log.i(TAG,"onReceive");
//    intent=new Intent(CallService.ACTION);
//    context.startService(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);
   TelephonyManager tm = (TelephonyManager) context.getSystemService(Service.TELEPHONY_SERVICE);
   switch (tm.getCallState()) {
   case TelephonyManager.CALL_STATE_OFFHOOK:
     Log.i(TAG, "CAllOut ACCEPT :" + phoneNumber);
    break;
   case TelephonyManager.CALL_STATE_IDLE:
     Log.i(TAG, "incoming IDLE");
     Uri uri=Uri.parse("tel:"+phoneNumber);
     intent=new Intent(Intent.ACTION_CALL,uri);
     context.startActivity(intent);
    break;
   }
  } 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;
   }
  }
 }
 
}
-------------------------------------------------------------------------------------

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
 package="com.vance" android:versionCode="1"
 android:versionName="1.0">
 <application android:icon="@drawable/icon"
  android:label="@string/app_name">
  <receiver android:name=".ListenerCallOut">
            <intent-filter>
                 <action android:name="android.intent.action.NEW_OUTGOING_CALL" />
            </intent-filter>
  </receiver>
   </application>
 <uses-sdk android:minSdkVersion="7" />
 <uses-permission
  android:name="android.permission.PROCESS_OUTGOING_CALLS">
 </uses-permission>
 <uses-permission
  android:name="android.permission.READ_PHONE_STATE">
 </uses-permission>
 <uses-permission android:name="android.permission.CALL_PHONE" />
</manifest>

分享到:
评论

相关推荐

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

    在Android平台上,对电话状态的监听和拦截是一个需要特别权限和精确实现的敏感操作,这涉及到Android的权限管理、广播接收器(BroadcastReceiver)、事件监听机制以及电话状态的处理。以下知识点将详细介绍如何实现这...

    Android中监听电话状态.zip

    在Android系统中,监听电话状态是一项重要的功能,它允许开发者获取到电话的实时信息,比如来电、去电、通话结束等事件。这项功能通常应用于电话录音、来电管理、短信拦截等场景。本教程将深入探讨如何在Android应用...

    android 电话监听实例

    在Android平台上,电话监听涉及到的是对...总结,Android电话监听实例主要涉及BroadcastReceiver、电话状态监听和权限管理。通过这些技术,开发者可以实现对电话事件的监控,但需谨慎处理用户隐私,遵循相关法律法规。

    Android 电话及短信的监听程序源码.zip

    在Android中,电话监听主要通过`TelephonyManager`类和`PhoneStateListener`接口来实现。`TelephonyManager`是系统服务,用于获取设备的电话状态信息;`PhoneStateListener`则用于监听电话状态的变化,例如来电、去...

    Sender-receiver 消息

    Receiver通常是消息的接收端,虽然在提供的代码片段中Receiver部分没有完全给出,但通常Receiver也会使用JNDI查找队列,并创建`QueueConnection`、`QueueSession`和`MessageListener`。Receiver通过注册`Message...

    Android电话及短信的监听程序源码.zip

    在Android平台上,开发电话和短信监听程序涉及到一系列的API接口和权限管理。下面将详细讲解这一领域的关键知识点。 首先,监听电话状态需要使用到`TelephonyManager`类,它是Android提供的一个系统服务,用于获取...

    完美卸载 Citrix Receiver

    您可以使用 Windows 的“程序和功能”实用工具(添加/删除程序)卸载 Receiver。 注意:如果曾使用 Citrix Receiver Updater 安装 Receiver,请勿使用此方法。 在某些情况下,卸载 Receiver for Windows 不会删除...

    监听软键盘的弹出与收起(近乎完美的)

    在Android开发中,软键盘的弹出与收起是一个常见的需求,特别是在输入框交互和界面布局自适应时。本文将详细介绍三种实现软键盘监听的方法,帮助开发者选择最适合自己的方案。 一、方法一:使用InputMethodManager...

    Receiver卸载

    Citrix Receiver是一款由Citrix公司开发的远程桌面访问软件,它允许用户从任何地方通过互联网安全地访问企业内部的应用程序和资源。Receiver卸载过程有时可能会遇到问题,尤其是在多版本交替使用或尝试重新安装时,...

    trap receiver(trap模拟接收器)

    在IT行业中,SNMP(简单网络管理协议)是一种广泛用于网络设备管理的标准协议,它允许网络管理员远程监控和管理网络设备。"Trap"是SNMP中的一个重要概念,它是一种从网络设备向网络管理系统发送的被动通知,通常发生...

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

    通过上述知识点的梳理,我们可以了解到在Android系统中实现监听系统来电并弹出提示窗口涉及到的权限申请、广播接收器的使用、状态监听、网络请求、悬浮窗口的创建等多方面的技术和细节。这些内容共同构成了一个完整...

    Android 监听应用的安装和卸载

    在Android系统中,开发者可以通过创建自定义的BroadcastReceiver来监听应用程序的安装和卸载事件。BroadcastReceiver是Android四大组件之一,它能接收到系统或应用发送的广播消息,并执行相应的处理逻辑。以下将详细...

    安卓广播监听按键事件和屏幕熄屏亮屏监听

    本文将深入探讨如何使用BroadcastReceiver监听按键事件和屏幕状态的变化,包括熄屏与亮屏。 首先,我们需要了解BroadcastReceiver的基本用法。在Android中,创建一个BroadcastReceiver有两种方式:静态注册和动态...

    在运行时管理Manifest Receiver

    当`MainActivity` 被销毁时,Receiver也会被注销,不会继续监听广播。 在`DisabledDemo` 这个示例项目中,可能包含了一个演示如何动态管理BroadcastReceiver的代码。可能的实现包括在特定条件下注册Receiver,或者...

    Android源码——电话及短信的监听程序源码.zip

    首先,电话监听主要涉及Android的电话管理服务(TelephonyManager)和电话状态监听器(PhoneStateListener)。通过调用`Context.getSystemService(Context.TELEPHONY_SERVICE)`可以获得`TelephonyManager`实例,然后...

    听筒播放音乐(Receiver测试)

    if (state.equals(TelephonyManager.EXTRA_STATE_RINGING)) { // 电话打进 // 开始通过听筒播放音乐 playMusicThroughEarpiece(context); } else if (state.equals(TelephonyManager.EXTRA_STATE_IDLE)) { // ...

    CitrixReceiver.dmg

    CitrixReceiver.dmg

    citrix receiver for mac

    citrix receiver for mac

    citrix receiver 清理工具

    Citrix Receiver是一款强大的远程访问软件,它允许用户从任何设备上安全地访问企业应用程序和桌面。然而,在长期使用过程中,由于各种原因,如版本更新、安装卸载不当等,可能会导致系统中残留不必要的文件和配置,...

Global site tag (gtag.js) - Google Analytics