0

私のアプリケーションでは、優先度の高い FCM メッセージを受信したときに、アクティビティを起動して画面をオンにする必要があります。これは、ユーザーにとって非常に重要なアラーム アクティビティです。ほとんどの Android デバイスでは、コードは正常に機能しています。ただし、一部の Huawei または LG デバイスでは、デバイスが Doze モードの場合、またはポケット (近接センサー) にある場合、アクティビティは開始されません。動作は、目覚まし時計、通話などと似ているはずです。これが私のコードです:

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を使用したかったのですが、廃止されました。

4

1 に答える 1