Chế độ triển khai mặc định của AOSP đối với Màn hình khoá có các lựa chọn để mở khoá (keyguard) chỉ xuất hiện trên màn hình chính. Trong Android 9 (trở xuống), màn hình phụ hỗ trợ một cửa sổ khoá duy nhất trên một màn hình ngoài duy nhất. Trong Android 10, Màn hình khoá được mở rộng cho tất cả các màn hình phụ công khai. Màn hình khoá vẫn đơn giản và không hỗ trợ mở khoá từ màn hình phụ.
Hình 1. Màn hình khoá trên màn hình phụ
Các nhà sản xuất thiết bị có thể triển khai Màn hình khoá cho màn hình phụ, miễn là đáp ứng được yêu cầu cơ bản về bảo mật. Khi thiết bị bị khoá, thông tin phải được che giấu an toàn trên tất cả màn hình. Không có chính sách hoặc chế độ kiểm soát tích hợp nào đối với nội dung cần hiển thị hoặc ẩn khi thiết bị bị khoá. Do đó, cách duy nhất để triển khai quyền truy cập có hạn một cách an toàn là ẩn tất cả nội dung sau màn hình khoá và các cửa sổ khoá. Ngoại lệ duy nhất là những ứng dụng đã chọn hiển thị trên cùng Màn hình khoá bằng phương thức R.attr.showWhenLocked
hoặc Activity.setShowWhenLocked()
.
Nếu không, thông tin có thể bị rò rỉ từ màn hình công khai và riêng tư.
Mặc dù màn hình có thể được đặt ở nhiều trạng thái (ON
/OFF
), nhưng trạng thái khoá là trạng thái chung cho tất cả màn hình. Như với mọi hoạt động triển khai thiết bị, người dùng phải biết rõ khi nào thiết bị bị khoá (hoặc mở khoá). Ví dụ: việc nhấn nút nguồn thường khoá thiết bị di động. Nút nguồn cũng sẽ khoá tất cả màn hình bên trong và bên ngoài.
Vì cửa sổ khoá thuộc về SystemUI nên cửa sổ này sẽ không được đặt trên màn hình riêng tư. Chủ sở hữu màn hình riêng tư có trách nhiệm ẩn các cửa sổ và bảo vệ nội dung khi thiết bị bị khoá. Hoạt động triển khai hệ thống mặc định chỉ ẩn các hoạt động trên màn hình riêng tư bằng cách thay đổi chế độ hiển thị.
Triển khai
Cửa sổ khoá trên màn hình phụ được triển khai dưới dạng cửa sổ Presentation trong KeyguardDisplayManager
. Android 10 đã thay đổi KeyguardDisplayManager#mPresentations
thành một mảng chứa tất cả các cửa sổ khoá cho tất cả màn hình phụ. KeyguardDisplayManager
cũng có một trình nghe thay đổi màn hình để phản hồi các thay đổi đối với màn hình hiện có và bảo mật tất cả màn hình. Điều quan trọng là bạn phải khoá ngay tất cả các màn hình được kết nối tại bất kỳ thời điểm nào để kẻ tấn công không thể trích xuất dữ liệu người dùng ngay cả khi có quyền truy cập thực tế vào thiết bị.
Cửa sổ khoá sẽ xuất hiện trên tất cả màn hình phụ công khai (xem KeyguardDisplayManager#isKeyguardShowable()
). Chủ sở hữu màn hình riêng tư có trách nhiệm bảo mật nội dung khi thiết bị bị khoá.