电话广播
打开 AndroidManifest.xml 配置获取响铃、电话的权限。
在 application 节点内,添加,广播接受配置
xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.systembroadcastreceiver">
<!--配置获取系统响铃、电话来电读取 权限-->
<uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>
<application android:allowBackup="true" android:icon="@mipmap/ic_launcher"
android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true" android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<!--配置广播接受-->
<receiver android:name=".Broadcast">
<intent-filter>
<action android:name="android.intent.action.PHONE_STATE"></action>
</intent-filter>
</receiver>
</application>
</manifest>
Java 代码
建立一个类,继承BroadcastReceiver 使其变成一个广播接受类,然后重写,接受方法(Receive),必须在xml中配置,接受本广播,否者无效!
package com.example.systembroadcastreceiver;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.telecom.TelecomManager;
import android.telephony.TelephonyManager;
/**
* Created by Administrator on 2017/7/12.
*/
public class Broadcast extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
//取来电号码(取到广播内容), 取广播值得键是系统定的,不能写别的
String phony=intent.getStringExtra("incoming_number");
Intent intent1=new Intent();
if("android.intent.action.PHONE_STATE".equals(intent.getAction())){
//取到电话的服务 返回为,电话管理器
TelephonyManager telecomManager= (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
//取到 来电的状态
int TelephonyState=telecomManager.getCallState();
switch (TelephonyState) {
//来电
case TelephonyManager.CALL_STATE_RINGING:
break;
//接听
case TelephonyManager.CALL_STATE_OFFHOOK:
break;
//挂断
case TelephonyManager.CALL_STATE_IDLE:
break;
}
}
}
}