ユーザー画面がロックされているかディープ スリープ状態かに関係なく表示されるダイアログ ボックスを表示する必要があります。私の現在のシナリオは次のとおりです。
ブロードキャスト レシーバがサービスを 開始し、WakeLock を取得します
PowerManager mgr=(PowerManager)context.getSystemService(Context.POWER_SERVICE); lockStatic=mgr.newWakeLock(PowerManager.FULL_WAKE_LOCK|PowerManager.ACQUIRE_CAUSES_WAKEUP, LOCK_NAME_STATIC);
サービスは次の設定でアクティビティを開始します
getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED | WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD); getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
アクティビティはDialogFragmentを開始します
問題は、画面がロックされているかスリープ状態の場合にダイアログが表示されないことです。画面がオフまたはロックされている場合でも、Viber アプリと Line メッセンジャー アプリのメッセージ ダイアログがポップアップします。彼らはどのようにそれを行うのですか?
編集
アクティビティのテーマがTheme.Holo.Light.NoActionBar.Fullscreenまたは Any FULLSCREEN テーマに設定されている場合に機能することがわかりました。:)