Android广播接实现电话的监听

1:需要在AndroidManifest.xml清单中添加权限

<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE" />

2:注册广播 要注意事件的级别 (android中的级别-1000~1000)

<receiver android:name=".PhoneBroadcastReceiver">
<intent-filter android:priority="1000">
<action android:name="android.intent.action.NEW_OUTGOING_CALL"/>
<action android:name="android.intent.action.PHONE_STATE"/>
</intent-filter>
</receiver>

详细配置请看AndroidManifest.xml

<manifest xmlns:android="http://schemas.android.com/apk/res/android"    package="com.zyw.broadcastsendsms"    android:versionCode="1"    android:versionName="1.0" >    <uses-sdk        android:minSdkVersion="8"        android:targetSdkVersion="15" />    <application        android:icon="@drawable/ic_launcher"        android:label="@string/app_name"        android:theme="@style/AppTheme" >        <activity            android:name=".SendSMS"            android:label="@string/title_activity_send_sms" >            <intent-filter>                <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.LAUNCHER" />            </intent-filter>                    </activity>                <receiver android:name=".PhoneBroadcastReceiver">            <intent-filter android:priority="1000">                <action android:name="android.intent.action.NEW_OUTGOING_CALL"/>                <action android:name="android.intent.action.PHONE_STATE"/>               </intent-filter>        </receiver>            </application>    <uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS"/>    <uses-permission android:name="android.permission.READ_PHONE_STATE" /></manifest>

3:编写广播的实现类 这里需要继承BroadcastReceiver 实现onReceive()方法

程序的源代码如下:

package com.zyw.broadcastsendsms;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 PhoneBroadcastReceiver extends BroadcastReceiver {    private static final String TAG = "message";    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;            }        }    }        /*@Override    public void onReceive(Context context, Intent intent) {        String number = getResultData();        if("5556".equals(number)){            setResultData(null);//挂断        }else{            number = "12593"+ number; //其他,则加区号            setResultData(number);        }    }*/}

更多相关文章

  1. 浅谈Java中Collections.sort对List排序的两种方法
  2. python list.sort()根据多个关键字排序的方法实现
  3. android ndk实现java层代码。。
  4. tab上显示数字
  5. Android(安卓)开启或关闭WIFI实现
  6. android 监听USB连接状态
  7. android页面管理器。可以实现完整退出android软件
  8. Android(安卓)实现闪屏页和右上角的倒计时跳转
  9. 在Android中实现多线程同步

随机推荐

  1. FTP文件传输协议介绍和常用命令
  2. html+css基础入门教程篇之伪元素
  3. 「知识点」JavaScript 中11个有趣的事实
  4. 前端vue面试题大全
  5. 前端开发」一篇文章概括目前流行的前端开
  6. 时序数据库丨DolphinDB流计算引擎如何实
  7. 各种raid的区别
  8. 渠道分析如何助力精细化运营?
  9. 基于CentOS7.x 使用Autofs_配置自动挂载
  10. VPS用途