Так вот мой код, который работал и в Android Nougat:

roid (цель 25) у меня есть фоновый сервис, а в функции onCreate я инициализировал прослушиватель состояния телефона. Он отлично работает на версиях Android, выпущенных до Nougat, но в Nougat он не работает, даже если разрешения предоставлены.

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, даже если телефон не находится "в работе"

Ответы на вопрос(2)

Ваш ответ на вопрос