如何利用广播知道谁给你打电话以及电话状态 —— >>
首先先有一个类继承 BroadcastReceiver ,重写 onReceive 方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 import android.content.BroadcastReceiver ; import android.content.Context ; import android.content.Intent ; import android.telephony.TelephonyManager ; import android.util.Log ; /** * Created by Administrator on 2017/7/11 0011. */ public class MyPhoneState extends BroadcastReceiver { private TelephonyManager tm ; @Override public void onReceive ( Context context , Intent intent ) { if ( "android.intent.action.PHONE_STATE" . equals ( intent . getAction ())){ //获取电话管理者 tm = ( TelephonyManager ) context . getSystemService ( Context . TELECOM_SERVICE ); int state = tm . getCallState (); //获取电话号码 String number = intent . getStringExtra ( "incoming_number" ); switch ( state ) { case TelephonyManager . CALL_STATE_RINGING : Log . i ( "test" , "有电话进来了:" + number ); break ; case TelephonyManager . CALL_STATE_OFFHOOK : Log . i ( "test" , "正在通话中:" + number ); break ; case TelephonyManager . CALL_STATE_IDLE : Log . i ( "test" , "通话结束:" + number ); break ; } } } }
添加读取电话状态的权限
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.android21_phone"> <!-- 读取电话状态的权限 --> <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> </application> </manifest>
