Người dùng mong đợi ứng dụng của tôi sẽ tắt màn hình sau khi được sử dụng. Hiện tại, tôi đạt được điều này với quyền Quản trị thiết bị và DevicePolicyManager.lockNow()
, hoạt động tốt nếu cài đặt bảo mật được đặt thành Mã PIN/Mẫu/FaceUnlock, v.v.DevicePolicyManager.lockNow(); không tắt màn hình khi cài đặt bảo mật được đặt thành Slide/None
Tuy nhiên, nếu sử dụng Trang trình bày/Không, lệnh trên chỉ mất người dùng vào màn hình chính (hoặc không làm bất cứ điều gì), đó là dễ hiểu, vì không có gì để "khóa". Có cách nào để đạt được tắt màn hình trong tình huống như vậy không? Ứng dụng của tôi yêu cầu SDK> = 16, nếu điều đó quan trọng.
Vì vậy, tôi đoán câu hỏi của tôi là: Làm thế nào có thể một ứng dụng đáng tin cậy tắt màn hình (Tôi không cầm một wakelock
, Tôi đang sử dụng WindowManager
-flags FLAG_TURN_SCREEN_ON
trong onAttachedToWindow()
).
Những "dòng chảy" của ứng dụng của tôi là:
- Hoạt động được bắt đầu bởi một ý định trong khi màn hình tắt, thấy trên bàn phím bị khóa/công tắc trên màn hình với những lá cờ nêu trên
- Người dùng tích cực gạt bỏ tôi Hoạt động, tôi gọi số lockNow()
và finish()
và người dùng dự kiến màn hình sẽ tắt. Nếu người dùng đang sử dụng khóa không có/trượt, điều này không hoạt động và thay vào đó màn hình chính của người dùng được hiển thị
Cảm ơn!
Nếu bạn phát triển ứng dụng hệ thống (ví dụ: đã ký bằng khóa nền tảng), bạn có thể sử dụng phương thức [goToSleep' của lớp 'PowerManager'] (http://developer.android.com/reference/android /os/PowerManager.html#goToSleep%28long%29) ... – dst
Cảm ơn, dst! Thật không may, đó là một ứng dụng "bình thường": -/ – Nick
Nếu bạn yêu cầu 'WRITE_SETTINGS', bạn có thể đặt thời gian chờ màn hình là 1 giây -' android.provider.Settings.System.putInt (getContentResolver(), Settings.System. SCREEN_OFF_TIMEOUT, 1000); ' Tất nhiên, sau đó bạn đang làm rối loạn cài đặt của người dùng nhưng tôi không thể tìm ra cách tốt hơn để làm điều đó. Tôi ** có ** thấy các ứng dụng làm điều đó - NoLED là ví dụ nổi bật nhất. – Delyan