Мое приложение использует TelephonyManager.ACTION_PHONE_STATE_CHANGED
для некоторых действий.Но я хочу другое действие, когда телефон зазвонил, когда пользователь присутствовал (экран был включен), и другое действие, когда пользователь не присутствовал (экран был выключен).Я попробовал метод isScreenOn()
только в начале onReceive
(потому что, когда экран выключен и поступает входящий вызов, экран ненадолго отключается).Не повезло, однако - иногда это работает, иногда нет.Трансляция асинхронна с состоянием экрана ...
public void onReceive(Context context, Intent intent) {
pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
Boolean screenOn = pm.isScreenOn();
Log.w(TAG, "Screen on is " + screenOn.toString());
Как я могу изменить свой код, чтобы действительно определить, не спал ли телефон, когда поступил звонок?