2012-11-16 17 views
7

私のアプリは、ロック画面の前にユーザーにダイアログボックスを表示します。 DialogFragmentsを含むシンプルなアクティビティです(このアプリは2.2以上で動作するため、サポートライブラリから)。AndroidのフローティングウィンドウとFLAG_SHOW_WHEN_LOCKEDの組み合わせが失敗する

これらのダイアログを表示し、実際の活動は、Androidの標準化により、フローティングウィンドウではなかったので、

getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED); 

がうまく働きました。

しかし、代わりにダイアログのように見えるアクティビティを使用すると思っていました。すべてのダイアログのテーマ(ホロなど)、しかし、このアイテムを持っている:

<item name="android:windowIsFloating">true</item> 

これ、何らかの理由で窓フラグが完全に無視されます。興味深いことに、ユーザーが画面のロックを解除した後にアクティビティが表示されます。

なぜそうであり、その周りに道があるのですか?

+1

同じ問題に苦しんで...あなたは、任意の回避策を見つけることができました? –

+0

私はキャンセルできないダイアログを起動し、キーガードを完全に私のアプリから無効にしたままにする活動に固執しました。 –

+0

は同じ問題を抱えていますが、私はロック画面上で "transperant"アクティビティを表示したいのですが、不可能と思われます。 –

答えて

4

同じ問題が発生しました。この問題で動作しているようです唯一のことは、

KeyguardManager myKeyGuard = (KeyguardManager)getSystemService(Context.KEYGUARD_SERVICE); 
myLock = myKeyGuard.newKeyguardLock("tagName"); 
myLock.disableKeyguard(); 

いけないマニフェストにキーガードの許可を使用することを忘れている:

<uses-permission android:name = "android.permission.DISABLE_KEYGUARD"/> 
+3

廃止予定のAPIですが、やや機能するので、一貫した結果を得るにはまだまだ作業が必要です。しかし、これは私たちができる最善の方法です。 –

+1

非常に有益な答えです。なぜなら、「より良い」方法は、「悪い」方法がすべての場合に機能しないからです。 – user1445967

+1

誰かがより良いソリューションを見つけましたか?このソリューションは、画面のロックを解除する、私は画面をロックし、whatsappメッセージのようなダイアログを表示し続けたい。 whatsappはそれを持っているので、これは可能です –

関連する問題