博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android广播接实现电话的监听(电话的状态,拦截)
阅读量:5359 次
发布时间:2019-06-15

本文共 2865 字,大约阅读时间需要 9 分钟。

原文地址:

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

 

 

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);        }    }*/}

 

转载于:https://www.cnblogs.com/flyoung/p/4929807.html

你可能感兴趣的文章
java项目用SpringMVC+mybatis中的配置文件详解
查看>>
Ajax原理(收藏)
查看>>
VS2010发布,IIS实际目录,无法修改只读状态解难决办法
查看>>
关于html5画布(canvas)
查看>>
python数据结构--列表、元组
查看>>
(转载)MyBatis传入多个参数的问题
查看>>
20145335郝昊《网络对抗技术》Exp6 信息搜集技术
查看>>
Codeforces - 1195E - OpenStreetMap - 单调队列
查看>>
数位dp
查看>>
js判断变量是否未定义
查看>>
算法学习-第一天 插入算法
查看>>
JMeter 查看结果树监听器响应数据中文显示乱码解决方法
查看>>
poj2485 Highways 最小生成树
查看>>
Dotnet面试题
查看>>
JS实现字符串去重,数组去重
查看>>
java 中的字符串处理--正则表达式
查看>>
ReactiveCocoa
查看>>
linux下命令行文件路径隐藏
查看>>
国庆七天乐——第四天
查看>>
OVAL学习笔记
查看>>