#java #android #activity
У меня есть сервис, который в определенное время вызывает BroadcastReciever, а тот сразу же активность, и телефон должен выйти из сна и разблокироваться. Проблема в том, что телефон разблокируется только в том случае, если он был заблокирован в активности, в которой прописан этот метод: Я прописал этот метод во всех активностях моего приложения. И выходит, что если я заблокирую телефон вне приложения, то он в нужный момент просто включит экран, но не разблокируется. Что надо делать? @Override public void onAttachedToWindow() { getWindow().setFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON, WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON | WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD); } Вот код Broadcast Receiver:там ничего особенного(просто вызываю активити) @Override public void onReceive(Context context, Intent intent) { WakeLock.acquire(context); Log.d(LOG_TAG, "receiver id started"); Bundle bundle = intent.getExtras(); alarm_time = (String) bundle.getSerializable("alarm_time"); //получаю time из интента alarm_name = (String) bundle.getSerializable("alarm_name"); //получаю name из интента Intent dialog_intent=new Intent(context, ServiceDialog.class); dialog_intent.putExtra("alarm_name",alarm_name); dialog_intent.putExtra("alarm_time",alarm_time); dialog_intent.putExtra("alarm_timeStart",alarm_time); dialog_intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(dialog_intent); } А вот код класса WakeLock public class WakeLock { private static PowerManager.WakeLock wakeLock; public static void acquire(Context context) { if (wakeLock != null) wakeLock.release(); PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE); wakeLock = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP | PowerManager.ON_AFTER_RELEASE,"Alarm"); wakeLock.acquire(); } public static void release() { if (wakeLock != null) wakeLock.release(); wakeLock = null; } } Причем флаг FULL_WAKE_LOCK id deprecated
Ответы
Ответ 1
Создайте ресивер на включение и отключение дисплея. Как только экран потух запустите активность и все что нужно, в этом же ресивере на включение экрана скрытие активности. Получится что ваша активность будет всегда запускаться при выключенном экране. Как вариант.
Комментариев нет:
Отправить комментарий