Android.intent.action.SCREEN_ON не работает как фильтр намерения приемника

Я пытаюсь запустить BroadcastReceiver, когда экран включен. В моем AndroidManifest.xml я указал:

<receiver android:name="IntentReceiver"> <intent-filter> <action android:name="android.intent.action.SCREEN_ON"></action> </intent-filter> </receiver> 

Однако кажется, что приемник никогда не вызывается (точки останова не срабатывают, журналы игнорируются). Я проверил SCREEN_ON для BOOT_COMPLETED для теста, и это вызывает вызов.

Это в проекте 1.6 (SDK уровня 4).

Поиск Google Code выявил это, я загрузил проект и синхронизировал его, преобразовал его в работу с новейшими инструментами, но он тоже не смог перехватить это событие.

http://www.google.com/codesearch/p?hl=en#_8L9bayv7qE/trunk/phxandroid-intent-query/AndroidManifest.xml&q=android.intent.action.SCREEN_ON

Возможно, это больше не поддерживается?

Раньше я смог успешно перехватить это событие при вызове Context.registerReceiver ()

 registerReceiver(new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { // ... } }, new IntentFilter(Intent.ACTION_SCREEN_ON)); 

Однако это было выполнено долгоживущей службой. После совета мудрецов от CommonsWare я решил попытаться удалить долгоживущую Службу и использовать разные методы. Но мне все равно нужно определить экран и события.

Solutions Collecting From Web of "Android.intent.action.SCREEN_ON не работает как фильтр намерения приемника"

После совета мудрецов от CommonsWare я решил попытаться удалить долгоживущую Службу и использовать разные методы.

На самом деле, я считаю, что мой совет был скорее светло-голубого … 🙂

Но мне все равно нужно определить экран и события.

Есть определенные события, которые Android не хочет запускать для новых процессов, поэтому устройство не становится слишком медленным от всех видов вещей, которые нужно запускать сразу. ACTION_SCREEN_ON является одним из таких. См. Этот предыдущий вопрос для голубого совета по этой теме.

Итак, вам нужно спросить себя: «Я, мне действительно нужно контролировать эти события?». Основной команде Android хотелось бы, чтобы ваш ответ был «нет».

Actullay я столкнулся с этой проблемой, но я успешно ее разрешаю

1) начать сервис с вашего основного вида деятельности

  Intent i = new Intent(MainActivity.this, UpdateService.class); startService(i); 

2) зарегистрируйте ресивера в классе обслуживания.

 @Override public void onCreate() { super.onCreate(); // REGISTER RECEIVER THAT HANDLES SCREEN ON AND SCREEN OFF LOGIC IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_ON); filter.addAction(Intent.ACTION_SCREEN_OFF); BroadcastReceiver mReceiver = new ScreenReciever(); registerReceiver(mReceiver, filter); } 

3) Сделано