建立一个广播事件接收者,并在清单文件中注册此文件,过滤意图为
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即为来电号码。