在Android 9及更高版本中,来电号码被视为敏感信息,不再提供给第三方应用程序。因此,无法直接获取来电号码。但可以通过使用TelephonyManager.EXTRA_INCOMING_NUMBER来获取来电号码的替代信息。
以下是一个示例代码,演示如何在Android 9+中获取来电号码的替代信息:
public class IncomingCallReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if(intent.getAction().equals(TelephonyManager.ACTION_PHONE_STATE_CHANGED)) {
String state = intent.getStringExtra(TelephonyManager.EXTRA_STATE);
if(state.equals(TelephonyManager.EXTRA_STATE_RINGING)) {
// 获取来电号码的替代信息
String incomingNumber = intent.getStringExtra(TelephonyManager.EXTRA_INCOMING_NUMBER);
Log.d("IncomingCallReceiver", "Incoming number: " + incomingNumber);
// 其他处理逻辑...
}
}
}
}
在AndroidManifest.xml中注册广播接收器:
请注意,虽然无法直接获取来电号码,但仍然可以获取来电号码的替代信息,如上述代码示例中的incomingNumber
变量。