Kể từ ngày 27 tháng 3 năm 2025, bạn nên sử dụng android-latest-release
thay vì aosp-main
để xây dựng và đóng góp cho AOSP. Để biết thêm thông tin, hãy xem phần Thay đổi đối với AOSP.
Khóa màn hình
Sử dụng bộ sưu tập để sắp xếp ngăn nắp các trang
Lưu và phân loại nội dung dựa trên lựa chọn ưu tiên của bạn.
Cách triển khai mặc định của AOSP cho Màn hình khoá với các tính năng để mở khoá (khoá phím) chỉ xuất hiện trên màn hình chính. Trong Android 9 (và các phiên bản thấp hơn), màn hình phụ hỗ trợ một cửa sổ khoá trên một màn hình ngoài. Trong Android 10, Màn hình khoá được mở rộng cho tất 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ụ
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 yêu cầu bảo mật cơ bản. 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 tích hợp hoặc chế độ kiểm soát nào về nội dung cần hiển thị hoặc ẩn khi thiết bị bị khoá. Do đó, cách an toàn duy nhất để triển khai quyền truy cập bị hạn chế là ẩn tất cả nội dung sau màn hình Khoá và các cửa sổ khoá. Các trường hợp ngoại lệ duy nhất là những ứng dụng đã chọn hiển thị rõ ràng ở đầu Màn hình khoá bằng cách sử dụng phương thức R.attr.showWhenLocked
hoặc Activity.setShowWhenLocked()
.
Nếu không, có khả năng cao thông tin sẽ bị rò rỉ từ màn hình công khai và màn hình 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. Giống như 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ị được khoá (hoặc mở khoá). Ví dụ: thao tác nhấn vào nút nguồn thường sẽ khoá thiết bị di động. Nút nguồn cũng phải khoá tất cả màn hình bên trong và bên ngoài.
Vì cửa sổ khoá thuộc sở hữu của 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ửa sổ và bảo vệ nội dung khi thiết bị bị khoá. Việc 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 (Trình bày) 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ó 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à phải khoá ngay tất cả màn hình đã 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 vào thiết bị.
Cửa sổ khoá sẽ hiển thị 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á.
Nội dung và mã mẫu trên trang này phải tuân thủ các giấy phép như mô tả trong phần Giấy phép nội dung. Java và OpenJDK là nhãn hiệu hoặc nhãn hiệu đã đăng ký của Oracle và/hoặc đơn vị liên kết của Oracle.
Cập nhật lần gần đây nhất: 2025-07-27 UTC.
[[["Dễ hiểu","easyToUnderstand","thumb-up"],["Giúp tôi giải quyết được vấn đề","solvedMyProblem","thumb-up"],["Khác","otherUp","thumb-up"]],[["Thiếu thông tin tôi cần","missingTheInformationINeed","thumb-down"],["Quá phức tạp/quá nhiều bước","tooComplicatedTooManySteps","thumb-down"],["Đã lỗi thời","outOfDate","thumb-down"],["Vấn đề về bản dịch","translationIssue","thumb-down"],["Vấn đề về mẫu/mã","samplesCodeIssue","thumb-down"],["Khác","otherDown","thumb-down"]],["Cập nhật lần gần đây nhất: 2025-07-27 UTC."],[],[],null,["# Lock screen\n\nAOSP's default implementation of the Lock screen with affordances to unlock\nit (keyguard) appears only on the primary display. In Android 9 (and lower),\nsecondary screens supported a single *locking window* on a single external\ndisplay. In Android 10, the Lock screen is expanded to all public secondary\ndisplays. The Lock screen remains simple and doesn't support unlocking from secondary\nscreens.\n\n**Figure 1.** Lock screen on secondary display\n\nDevice manufacturers can implement their Lock screen for secondary displays,\nprovided the fundamental security requirement is fulfilled. When the device is\nlocked, information should be securely concealed on all displays. There's no\nbuilt-in policy or control over what content should be shown or hidden when device\nis locked. Therefore, the only secure way of implementing restricted access is to\nhide all content behind the Lock screen and locking windows. The only exceptions\nare apps that have explicitly opted in to be displayed on top of the Lock screen\nusing the\n[R.attr.showWhenLocked](https://developer.android.com/reference/android/R.attr.html#showWhenLocked) or\n[Activity.setShowWhenLocked()](https://developer.android.com/reference/android/app/Activity.html#setShowWhenLocked(boolean)) methods.\nOtherwise, there is strong potential to leak information from public and private\ndisplays.\n\nWhile displays can be placed in to different states (`ON`/`OFF`),\nthe locked state is global for all displays. As with any device implementation, it should\nbe obvious to a user when a device is locked (or unlocked). For example, pressing\na power button typically locks a mobile device. A power button should also lock all\ninternal and external screens.\n\nBecause the locking window is owned by SystemUI, it won't be placed on\nprivate displays. Owners of the private displays are responsible for hiding\nthe windows and protecting content when a device is locked. The default system\nimplementation *only* hides activities on private displays by changing\nvisibility.\n\nImplementation\n--------------\n\nThe locking window on secondary displays is implemented as a [Presentation](https://developer.android.com/reference/android/app/Presentation)\nwindow in `KeyguardDisplayManager`. Android 10 changed\n`KeyguardDisplayManager#mPresentations` to an array that holds all\nlocking windows for all secondary screens. `KeyguardDisplayManager` also\nhas a display-change listener to respond to changes to the available displays and\nsecure all screens. It's important to immediately lock all connected displays at\nany given time so that attackers can't extract user data even with physical access\nto the device.\n\nThe locking window is displayed on all public secondary displays (see\n`KeyguardDisplayManager#isKeyguardShowable()`). Owners of private\ndisplays are responsible for securing the content when a device is\nlocked."]]