在我的应用程序中,当收到高优先级 FCM 消息时,我需要启动一个活动并打开屏幕。这是一个警报活动,对用户来说非常非常重要。在大多数 Android 设备上,代码运行良好。但是,在某些华为或 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,但它已被弃用。