В Android (цель 25) У меня есть фоновое обслуживание, а в функции onCreate я инициализировал прослушиватель состояния телефона. Он отлично работает в версиях Android, которые находятся до Nougat, но в Nougat он не работает, хотя разрешения предоставляются.Android Nougat PhoneStateListener не запускается
public class Service extends IntentService
{
class PhoneListener extends PhoneStateListener
{
String TAG = getClass().getName();
@Override
public void onCallStateChanged(int state, String incomingNumber)
{
super.onCallStateChanged(state, incomingNumber);
switch (state)
{
case TelephonyManager.CALL_STATE_IDLE:
Log.d(TAG,"IDLE");
break;
case TelephonyManager.CALL_STATE_OFFHOOK:
Log.d(TAG,"OFFHOOK");
break;
case TelephonyManager.CALL_STATE_RINGING:
Log.d(TAG,"RINGING");
break;
}
}
}
public Service()
{
super("ChatService");
}
public Service(String name)
{
super(name);
}
@Override
public void onCreate()
{
super.onCreate();
TelephonyManager tm = (TelephonyManager)getApplicationContext().getSystemService(TELEPHONY_SERVICE);
PhoneListener listener = new PhoneListener();
tm.listen(listener,PhoneStateListener.LISTEN_CALL_STATE);
}
}
Я не знаю, что это проблема, похоже, менеджер телефонии не зарегистрирован и поэтому onCallStateChanged не срабатывает. Одним из моих догадок является функция Doze, которая была представлена на Android M, но все же ... этот код отлично работает на Android 6, даже если телефон не найден «в работе»