创建一个广播事件接收者,并在清单文件中注册此文件,过滤意图为android.intent.action.PHONE_STATE
在intellij中因为未提示还以为没有这个,其实是有的,增加权限android.permission.READ_PHONE_STATE
<receiver android:name=".receiver.CallReceiver">
<intent-filter>
<action android:name="android.intent.action.PHONE_STATE"/>
</intent-filter>
</receiver>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
在receiver中确定 intent的action是电话状态改变并且带有的参数 改变后的状态为RINGRING,即电话响起时,获取手机号码
public class CallReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (TelephonyManager.ACTION_PHONE_STATE_CHANGED.equals(intent.getAction()) && "RINGING".equals(intent.getStringExtra(TelephonyManager.EXTRA_STATE))) {
String number = intent.getStringExtra(TelephonyManager.EXTRA_INCOMING_NUMBER);
}
}
}
此时获取到的number即为来电号码。
时间: 2024-10-11 13:38:27