2012-11-16 8 views
7

Ứng dụng của tôi, hiển thị hộp thoại cho người dùng trước màn hình khóa. Đó là một hoạt động đơn giản có chứa DialogFragments (từ thư viện hỗ trợ khi ứng dụng này chạy trên 2.2+).Cửa sổ nổi của Android kết hợp với FLAG_SHOW_WHEN_LOCKED không hoạt động

Kể từ khi hoạt động thực tế mà hiển thị những hộp thoại không phải là một cửa sổ nổi theo tiêu chuẩn của Android,

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

làm việc tốt.

Tuy nhiên, tôi đã nghĩ tôi sẽ sử dụng Hoạt động giống như Hộp thoại thay thế. Tất cả các chủ đề Dialog (Holo, vv), mặc dù, có mặt hàng này:

Điều này, vì một số lý do khiến lá cờ cửa sổ bị bỏ qua hoàn toàn. Điều thú vị là Activity được hiển thị sau khi người dùng mở khóa màn hình.

Tại sao điều này lại như vậy và có cách nào đó không?

+1

Đau khổ từ cùng một vấn đề ... Bạn có thể tìm thấy bất kỳ quanh công việc ? –

+0

Tôi đã kết thúc bằng cách kết nối với một hoạt động khởi chạy hộp thoại không thể hủy và hoàn toàn tắt chức năng bảo vệ phím tắt trong ứng dụng của tôi. –

+0

có cùng một vấn đề, tôi muốn hiển thị hoạt động "transperant" trên màn hình khóa, nhưng dường như không thể –

Trả lời

4

Đau khổ từ cùng một vấn đề. Điều duy nhất mà dường như làm việc trong vấn đề này là

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

Dont quên sử dụng sự cho phép bảo vệ phím trong manifest:

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

Đó là một API không được chấp nhận, nhưng nó hoạt động một phần, do đó, nó vẫn cần một số công việc để có được kết quả nhất quán. Tuy nhiên, điều này có vẻ tốt nhất chúng ta có thể làm. –

+1

Câu trả lời rất hữu ích. Thật là xấu hổ vì điều này không được chấp nhận vì có một cách 'tốt hơn' để làm những gì bạn muốn, chỉ có cách 'tốt hơn' không hoạt động trong mọi trường hợp mà cách 'tồi tệ' hơn. – user1445967

+1

có ai tìm được giải pháp tốt hơn để sử dụng không? giải pháp này không mở khóa màn hình, tôi muốn giữ màn hình bị khóa và hiển thị hộp thoại như tin nhắn whatsapp. có vẻ như điều này là có thể bởi vì whatsapp làm điều đó –