Открытие активити из Service
Есть сервис, работающий постоянно, который отслеживает включен ли экран телефона. Как сделать, чтобы при включенном экране сервис открывал активити?
Ответы (1 шт):
Зачем вам это? Не занимайтесь глупостью. Во первых это не нормальное поведение приложения, когда при разблокировке он будет тыкать ваше ативити: это поведение вирусняков вымогателей, если ваше приложение не Launcher. Ещё исключением является подмена экранов блокировки, но это тоже зачастую не правильная практика, лучшим вариантов является вывод своей информации на экране блокировки или в виджетах здесь же. Вроде как с 21 АПИ поддерживается.
А во вторых с сервисами сейчас плохая практика. Более надёжным будет использование системное события BroadcastReceivers. Да и сам гугл рекомендует так делать:
public class ScreenBroadcastReceiver extends BroadcastReceiver {
public void onReceive(Context context, Intent intent) {
Log.i(P.TAG, "ScreenService onReceive");
if(intent.getAction().equals(Intent.ACTION_SCREEN_ON)){
//ваш действия при включении экрана
} else if(intent.getAction().equals(Intent.ACTION_SCREEN_OFF)){
//и отключение экрана
}
}
Не забудьте установить его, например в onCreate:
screenBroadcastReceiver = new ScreenBroadcastReceiver();
IntentFilter filter = new IntentFilter();
filter.addAction(Intent.ACTION_SCREEN_ON);
filter.addAction(Intent.ACTION_SCREEN_OFF);
registerReceiver(screenBroadcastReceiver, filter);
Но для начала стоит с ними ознакомится, например здесьвведите сюда описание ссылки и здесь