1

ロック画面上にDialogFragmentを表示しようとしています。これは、ユーザーが新しいキーガードウィジェット機能を介してアクションをトリガーしたときに発生する必要があります。

特に表示されるのはタイムピッカーダイアログですが、ユーザーは画面のロックを解除した場合にのみ表示されます。画面がロックされている場合でも、どうすれば表示できますか?

私はすでにこのフラグのすべての組み合わせを試しましたが、成功しませんでした:

AlertDialog dialog = dBuilder.create();
    Window window = dialog.getWindow();

    window.addFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON
            + WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
            + WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD
            + WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

これはonCreateViewで呼び出されます。

ご協力ありがとうございました!

4

3 に答える 3

1

ダイアログ ウィンドウはフローティング ウィンドウであるため、ロック画面に表示されません。Android でダイアログ ウィンドウが表示されない実際の理由を説明することはできませんが、基礎となるロック画面コンポーネントの描画に関係している可能性があります。すべての意図と目的のために、「安全なコンポーネント」です。

以前にあなたの問題に対処した後、別のアクティビティを作成し、上記のウィンドウ フラグをアクティビティのウィンドウに設定してからActivity.getWindow().setFlags()、DialogFragment を表示しました。きれいではありませんが、適切にセットアップすると確実に機能する最も近いもののようです。幸いなことに、UI に関しては、Activity のテーマをTheme.Wallpaper.NoTitleBarかなり見栄えの良いものに設定できます。

于 2012-12-07T03:49:17.047 に答える
0
getWindow().addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD
| WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON
                        | WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);
        PowerManager powerMgr = (PowerManager) getSystemService(POWER_SERVICE);
        wakeLock = powerMgr.newWakeLock(PowerManager.ACQUIRE_CAUSES_WAKEUP
                | PowerManager.SCREEN_BRIGHT_WAKE_LOCK | PowerManager.ON_AFTER_RELEASE,
                "noti");
        KeyguardManager keyMgr = (KeyguardManager) getSystemService(KEYGUARD_SERVICE);
        keyLock = keyMgr.newKeyguardLock("noti");
keyLock.disableKeyguard();

wakeLock.acquire();

コードの書式設定が不適切で申し訳ありません。

于 2013-10-09T02:56:41.817 に答える