На устройствах PreOreo я использую широковещательный приемник для прослушивания пользовательских разблокировок. Я использую для этого сервис.
public class UserUnlockService extends Service {
public UserUnlockService() {
}
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
IntentFilter filter=new IntentFilter();
filter.addAction(Intent.ACTION_USER_PRESENT);
registerReceiver(new UserUnlockBroadcastReceiver(),filter);
return START_STICKY;
}
}
Это решение отлично работает на устройствах PreOreo и работает на устройстве Oreo, если мое приложение находится на переднем плане. Когда приложение работает в фоновом режиме, эта служба не работает. Я знаю, что в Oreo мы не можем запускать фоновые службы. Я пробовал Большинство ответов SO 123
И я пробовал этот статья, но он мне не помогает
Я также пробовал услуги переднего плана. но постоянное отображение уведомлений не очень хорошо для UX моего приложения.
Итак, мой вопрос: как я могу получать трансляцию USER_PRESENT в Oreo, если приложение находится в фоновом режиме. Есть ли какое-нибудь обходное решение для этого?
Или как другие популярные приложения обеспечивают долгую работу сервисов на устройствах Oreo?
@CommonsWare Есть ли другой способ без уведомления. Я хочу только слушать разблокировку пользователя (USER_PRESENT)
ACTION_USER_PRESENT
не отображается на неявный белый список исключений широковещательной передачи. Этот белый список не совсем точен, поэтому вы можете просто попробовать зарегистрированного в манифесте получателя и посмотреть, работает ли он. Но, если это не сработает, то AFAIK служба переднего плана - ваш единственный вариант.
Я попробовал зарегистрированный в манифесте получатель. Это не сработает. единственное, что работает, - это служба переднего плана.
@VinayakB Мое приложение с таргетингом ниже Oreo работало нормально, и триггеры работали. Но когда я сделал его целевой Oreo, трансляция user_present прекратилась. Я показываю уведомление с услугой. Вы нашли какое-нибудь решение?
@ kirtan403 Нет. Я этого не делал. Сейчас я использую уведомление переднего плана
«но постоянное отображение уведомлений не очень хорошо для UX моего приложения» - это решение зависит от пользователя, а не от вас.