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. Android版本号与API级别对应关系表
  2. Android 设置百度地图最大最小缩放级别
  3. Android 服务的五大级别
  4. Android各版本代号和API级别对照表
  5. 安卓开发10:常用控件-常用表单级别控件
  6. Android 的权限级别小记
  7. Android 进程级别 和 oom_adj对应关系
  8. Android 各 api 级别与ndk 原生 api对照表
  9. Android 虚拟摇杆,多种模式回调,返回距离级别,方向,角度。

随机推荐

  1. Android(安卓)ProGuard打包混淆代码
  2. Android(安卓)RecyclerView LayoutManage
  3. Android(安卓)java在窗口画图写字符串
  4. 封装Retrofit,RXJAVA,okhttp网络请求的工
  5. android 自定義的對話框(AlertActivity)
  6. 自定义开关控件(ToggleView)继承View实现
  7. 主流移动平台分辨率
  8. android framework之Audio
  9. Android百度地图的搜索及附近地址的检索
  10. Android开关控件ToggleButton