В моем приложении мне нужно запустить действие и включить экран при получении высокоприоритетного сообщения FCM.Это тревожное действие, которое очень, очень важно для пользователей.На большинстве устройств Android код работает нормально.Однако на некоторых устройствах Huawei или LG это действие не запускается, когда устройство находится в режиме ожидания или в кармане (датчик приближения).Поведение должно быть таким же, как Будильники, звонки и т. Д. Вот мой код:
FirebaseMessagingService:
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
Intent dialogIntent = new Intent(getBaseContext(), AlarmActivity.class);
dialogIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
dialogIntent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
dialogIntent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
dialogIntent.addFlags(Intent.FLAG_RECEIVER_FOREGROUND);
getApplication().startActivity(dialogIntent);
}
Активность тревоги:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// set flags so an activity fire on the screen
getWindow().addFlags(
WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD |
WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON |
WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED |
WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON
);
setContentView(R.layout.activity_alarm);
.
.
}
Я хотел использовать SCREEN_BRIGHT_WAKE_LOCK до запуска операции, но она устарела.