Android监听来电和去电的实现方法

本文实例讲述了Android监听来电和去电的实现方法。分享给大家供大家参考,具体如下:

要监听android打电话和接电话,只需下面2步骤

第一步,写一个Receiver继承自BroadcastReceiver

import android.app.Service;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.telephony.TelephonyManager;
import android.util.Log;
public class PhoneStateBroadCastReceiver extends BroadcastReceiver
{
 private static final String TAG = "PhoneStateBroadCastReceiver";
 private static boolean mIncomingFlag = false;
 private static String mIncomingNumber = null;
 @Override
 public void onReceive(Context context, Intent intent)
 {
 // 如果是拨打电话
 if (intent.getAction().equals(Intent.ACTION_NEW_OUTGOING_CALL))
 {
  mIncomingFlag = false;
  String phoneNumber = intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER);
  Log.i(TAG, "call OUT:" + phoneNumber);
 } else
 {
  // 如果是来电
  TelephonyManager tManager =
  (TelephonyManager) context.getSystemService(Service.TELEPHONY_SERVICE);
  switch (tManager.getCallState())
  {
  case TelephonyManager.CALL_STATE_RINGING:
  mIncomingNumber = intent.getStringExtra("incoming_number");
  Log.i(TAG, "RINGING :" + mIncomingNumber);
  break;
  case TelephonyManager.CALL_STATE_OFFHOOK:
  if (mIncomingFlag)
  {
   Log.i(TAG, "incoming ACCEPT :" + mIncomingNumber);
  }
  break;
  case TelephonyManager.CALL_STATE_IDLE:
  if (mIncomingFlag)
  {
   Log.i(TAG, "incoming IDLE");
  }
  break;
  }
 }
 }
}

第二步:在AndroidManifest.xml,配置写好的Receiver,并拦截相应的BroadCastAction,

另外注意加上相应的权限

<receiver android:name=".broadcase.PhoneStateBroadCastReceiver">
   <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 android:name="android.permission.PROCESS_OUTGOING_CALLS" />

PS:这里再为大家提供一个关于AndroidManifest.xml权限控制的在线查询工具:

Android Manifest功能与权限描述大全:
http://tools.jb51.net/table/AndroidManifest

更多关于Android相关内容感兴趣的读者可查看本站专题:《Android短信与电话操作技巧汇总》、《Android操作SQLite数据库技巧总结》、《Android开发入门与进阶教程》、《Android多媒体操作技巧汇总(音频,视频,录音等)》、《Android基本组件用法总结》、《Android视图View技巧总结》、《Android布局layout技巧总结》及《Android控件用法总结》

希望本文所述对大家Android程序设计有所帮助。

(0)

相关推荐

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

    1.问题 项目中有自己企业的通讯录,但是在应用中拨打公司通讯录的联系人,由于手机通讯录中没有相应的信息,只显示一串电话号 2 .目的 监听系统来电,获取到电话号码,通过调用接口,查询出来相应电话号码的详细信息,并弹出系统悬浮框,给用户提示. 3.实现 首先 注册广播监听系统来电.监听系统来电需要.注册相应的权限 代码地址:https://github.com/sdsjk/phone_alert.git <uses-permission android:name="android.permi

  • Android监听手机电话状态与发送邮件通知来电号码的方法(基于PhoneStateListene实现)

    本文实例讲述了Android监听手机电话状态与发送邮件通知来电号码的方法.分享给大家供大家参考,具体如下: 在android中可以用PhoneStateListener来聆听手机电话状态(比如待机.通话中.响铃等).本例是通过它来监听手机电话状态,当手机来电时,通过邮件将来电号码发送到用户邮箱的例子.具体程序如下: import android.app.Activity; import android.content.Intent; import android.os.Bundle; impor

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

    我觉得写文章就得写得有用一些的,必须要有自己的思想,关于来电去电监听将按照下面三个问题展开 1.监听来电去电有什么用? 2.怎么监听,来电去电监听方式一样吗? 3.实战,有什么需要特别注意地方? 监听来电去电能干什么 1.能够对监听到的电话做个标识,告诉用户这个电话是诈骗.推销.广告什么的 2.能够针对那些特殊的电话进行自动挂断,避免打扰到用户 来电去电的监听方式(不一样的方式) 1.来电监听(PhoneStateListener) 来电监听是使用PhoneStateListener类,使用方式

  • Android中监听未接来电的2种方法

    这里主要是总结一下如何监听有未接来电的问题   1.1 使用广播接收器 BrocastReceiver 实现思路 : 静态注册监听android.intent.action.PHONE_STATE 的广播接收器 当手机的状态改变后将会触发 onReceive. 手机的状态分为CALL_STATE_RINGING(响铃中),CALL_STATE_IDLE(空闲),CALL_STATE_OFFHOOK(忙音). 也就是说当你没有任何电话是,状态是 IDLE ,当接到电话时是 OFFHOOK ,电话结

  • android实现来电静音示例(监听来电)

    复制代码 代码如下: private static int previousMuteMode = -1; /** * 来电静音 *  * @param context */private void toggleRingerMute(Context context){    AudioManager am = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);    if (previousMuteMode == -1) 

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

    实现手机电话状态的监听,主要依靠两个类:TelephoneManger和PhoneStateListener. TelephonseManger提供了取得手机基本服务的信息的一种方式.因此应用程序可以使用TelephonyManager来探测手机基本服务的情况.应用程序可以注册listener来监听电话状态的改变.我们不能对TelephonyManager进行实例化,只能通过获取服务的形式: Context.getSystemService(Context.TELEPHONY_SERVICE);

  • Android监听来电和去电的实现方法

    本文实例讲述了Android监听来电和去电的实现方法.分享给大家供大家参考,具体如下: 要监听android打电话和接电话,只需下面2步骤 第一步,写一个Receiver继承自BroadcastReceiver import android.app.Service; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import andr

  • Android监听ScrollView滑动距离的简单处理

    本文实例为大家分享了Android监听ScrollView滑动距离的具体方法,供大家参考,具体内容如下 使用ScrollView时,有时候我们需要要获取它滑动的距离,Android的API给我们提供了设置监听的方法: scrollView.setOnScrollChangeListener(new View.OnScrollChangeListener() {             @Override             public void onScrollChange(View v,

  • android监听返回按钮事件的方法

    本文实例讲述了android监听返回按钮事件的方法.分享给大家供大家参考.具体如下: 用户在点击手机的返回按钮时,默认是推出当前的activty,但是有时用户不小心按到返回,所以需要给用户一个提示,这就需要重写onkeydown事件,实现的效果如下: java代码如下: @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.l

  • Android 监听WiFi的开关状态实现代码

    Android 监听WiFi的开关状态实现代码 WifiSwitch_Presenter 源码: package com.yiba.wifi.sdk.lib.presenter; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.net

  • Android 监听软键盘状态的实例详解

    Android 监听软键盘状态的实例详解 近日遇到要检测软键盘是否显示或隐藏的问题,搜了一下网上,最后找到一个很简单的,记录一下. activityRoot是activity的根view,就是xml里面的第一个view,给它设置一个id. final View activityRootView = findViewById(R.id.activityRoot); activityRootView.getViewTreeObserver().addOnGlobalLayoutListener(ne

  • Android监听电池状态实例代码

    如果要监听电池的状态改变,需要动态注册:android.intent.action.BATTERY_CHANGED,收到Action后可以根据对应的Key获取你需要的信息,更详细信息可以参考以下例子中的BatteryChangedReceiver类 具体代码如下所示: package com.example.charginganimation; import android.app.Activity; import android.content.BroadcastReceiver; impor

  • Android编程监听网络连接状态改变的方法

    本文实例讲述了Android编程监听网络连接状态改变的方法.分享给大家供大家参考,具体如下: BroadcastReceiver public class MyReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { // TODO Auto-generated method stub //Toast.makeText(context, intent

  • Android 监听锁屏、解锁、开屏 功能代码

    1.首先定义 ScreenListener package com.app.lib; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.os.PowerManager; /** * Created by ${zyj} on 2016/6

随机推荐