@Override
public void onCallStateChanged(int state, String incomingNumber) {
super.onCallStateChanged(state, incomingNumber);
switch (state) {
case TelephonyManager.CALL_STATE_RINGING:
if (incomingNumber == null || "".equals(incomingNumber)) {
return;
}
break;
}
}
У меня одна и та же проблема ниже Android sdk27, я запускаю PhoneStateListener в PhoneService,
public void startPhoneStateListener() {
mTelManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
mTelManager.listen(mPhoneStateListener, PhoneStateListener.LISTEN_CALL_STATE);
}
, но я запускаю Сервис только в RootReceiver,не в MainActivity, когда я запускаю PhoneService в MainActivity, я исправил это.
<receiver android:name=".receiver.RootReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"/>
</intent-filter>
</receiver>
, но это работает только под Android SDK 27, я понятия не имею об Android 9.0, кстати, я написал разрешение:
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>