Tính năng Khoá ứng dụng cho phép người dùng bảo mật từng ứng dụng bằng một mã PIN riêng biệt. Điều này giúp bảo vệ dữ liệu nhạy cảm khỏi bị khách hoặc người dùng phụ truy cập, đặc biệt là khi người dùng chính không ở trong xe.
Tính năng Khoá ứng dụng hoạt động độc lập với tính năng khoá hồ sơ. Thiết kế này mang đến cho người dùng sự linh hoạt để bảo mật các ứng dụng nhạy cảm cụ thể mà không cần khoá toàn bộ hồ sơ người dùng.
Khoá ứng dụng có sẵn dưới dạng một ứng dụng độc lập trên Android 14 (cấp độ API 34) trở lên. Bạn có thể phát triển ứng dụng này riêng biệt với nền tảng Android Automotive OS (AAOS) cốt lõi. Tuy nhiên, bạn phải triển khai ứng dụng Khoá ứng dụng dưới dạng một ứng dụng đặc quyền được ký bằng nền tảng và có trong hình ảnh nền tảng của bạn.
Người dùng được thông báo về tính năng Khoá ứng dụng khi cài đặt ứng dụng:
Hình 1. Thông báo về tính năng Khoá ứng dụng xuất hiện sau khi một ứng dụng được cài đặt.
Theo mặc định, tính năng Khoá ứng dụng sẽ bị tắt. Sau khi bật tính năng này, người dùng sẽ được nhắc đặt mã PIN. Sau đó, bạn phải nhập mã PIN này để truy cập vào mọi ứng dụng được bảo mật bằng tính năng Khoá ứng dụng:
Hình 2. Chế độ cài đặt Khoá ứng dụng.
Khi tìm cách mở một ứng dụng bị khoá, người dùng sẽ được nhắc nhập mã PIN Khoá ứng dụng:
Hình 3. Lời nhắc Khoá ứng dụng khi bạn tìm cách mở một ứng dụng bị khoá.
Định cấu hình tính năng Khoá ứng dụng
Để áp dụng cấu hình ứng dụng, hãy chỉnh sửa res/values/config.xml:
<resources>
<!--A customizable list of system packages that appear in the App Lock settings. -->
<string-array name="system_lockable_packages">
<item>com.android.car.calendar</item>
</string-array>
<!-- Config for allowing locking of media apps. -->
<bool name="config_enableMediaAppsLocking">true</bool>
<!-- Default account type used for recovering pin. -->
<string name="config_recoveryAccountType" translatable="false">com.google</string>
</resources>
Tuỳ chỉnh các ứng dụng có thể khoá
Theo mặc định, bạn không khoá được các ứng dụng hệ thống. Bạn có thể chỉ định các ứng dụng hệ thống có thể khoá bằng cấu hình system_lockable_packages.
Bạn không thể khoá các ứng dụng cốt lõi như phần Cài đặt, ứng dụng điều hướng và trợ lý giọng nói vì việc này có thể khiến hệ thống hoạt động không lường trước được.
Để bật tính năng Khoá ứng dụng cho một ứng dụng hệ thống, hãy sử dụng danh sách system_lockable_packages:
<!-- List of system packages that appear in the App Lock settings. -->
<string-array name="system_lockable_packages">
<item>com.android.car.calendar</item>
</string-array>
Định cấu hình chế độ tạm ngưng nội dung nghe nhìn
Theo mặc định, các ứng dụng đa phương tiện có thể bị khoá nếu nền tảng hỗ trợ Ứng dụng đa phương tiện trên ô tô từ Car-apps-release 17 trở lên. Nếu không hỗ trợ Car-apps-release 17 trở lên, bạn có thể tắt tính năng khoá ứng dụng đa phương tiện:
<!-- Config for allowing locking of media apps. -->
<bool name="config_enableMediaAppsLocking">false</bool>
Thiết lập quy trình khôi phục
Người dùng có thể quên mã PIN của tính năng Khoá ứng dụng. Sử dụng config_recoveryAccountType để tuỳ chỉnh loại tài khoản dùng cho tính năng khôi phục mã PIN.
<!-- Default account type used for recovering pin. -->
<string name="config_recoveryAccountType" translatable="false">com.google</string>
Khoá ứng dụng sẽ đặt lại mã PIN và xoá dữ liệu ứng dụng riêng tư khi người dùng xác thực bằng tài khoản có loại khớp với config_recoveryAccountType.
Tạo kiểu cho mã tham chiếu
Để tuỳ chỉnh mã tham chiếu, hãy sử dụng lớp phủ tài nguyên thời gian chạy (RRO) để phủ lên SensitiveAppLockOverlayableResources.
Vì tính năng Khoá ứng dụng sử dụng Thư viện giao diện người dùng trên ô tô, nên bạn cũng có thể áp dụng các RRO hiện có của Thư viện giao diện người dùng trên ô tô cho tính năng Khoá ứng dụng.
Các khoá trên bàn phím mã PIN sử dụng cùng một kiểu như được xác định trong styles.xml:
<style name="PinPadKey" parent="Widget.CarUi.Button">
<item name="android:textSize">@dimen/pin_pad_key_text_size</item>
<item name="android:layout_height">@dimen/pin_pad_key_diameter</item>
<item name="android:layout_width">@dimen/pin_pad_key_diameter</item>
…
</style>
Bạn cũng có thể xác định kích thước của bàn phím mã PIN:
<resources>
<!-- Default dimensions for PIN pad view -->
<dimen name="pin_pad_title_text_size">44sp</dimen>
<dimen name="pin_pad_subtitle_text_size">32sp</dimen>
<dimen name="pin_pad_key_diameter">96dp</dimen>
<dimen name="pin_pad_key_text_size">32sp</dimen>
<dimen name="pin_pad_key_padding">0dp</dimen>
<dimen name="pin_pad_row_spacing">10dp</dimen>
<dimen name="pin_pad_col_spacing">12dp</dimen>
</resources>
Hỗ trợ chế độ tạm ngưng vào RAM
Để hỗ trợ tính năng tạm ngưng vào RAM, bạn phải thêm dịch vụ Khoá ứng dụng vào config_earlyStartupServices:
<string-array translatable="false" name="config_earlyStartupServices">
<!-- App Lock Persistent Background Service -->
<item>com.android.car.sensitiveapplock/.service.PersistentBackgroundService#bind=bind,user=foreground,trigger=userUnlocked</item>
</string-array>
Cấu hình bản dựng
Tính năng Khoá ứng dụng yêu cầu phải có các quyền đặc biệt của hệ thống. Những nền tảng hỗ trợ tính năng Khoá ứng dụng cũng phải khai báo tính năng hệ thống com.android.car.sensitive_app_lock.
Thêm nội dung khai báo tính năng và quyền vào com.android.car.sensitiveapplock.xml:
<permissions>
<feature name="com.android.car.sensitive_app_lock"/>
<privapp-permissions package="com.android.car.sensitiveapplock">
<permission name="android.permission.GET_ACCOUNTS_PRIVILEGED" />
<permission name="android.permission.QUERY_USERS" />
<permission name="android.permission.MEDIA_CONTENT_CONTROL" />
<permission name="android.car.permission.CAR_POWER" />
<permission name="android.permission.POST_NOTIFICATIONS" />
</privapp-permissions>
</permissions>
Bạn phải nhập Khoá ứng dụng dưới dạng một ứng dụng hệ thống đã ký trong tệp Android.bp:
android_app_import {
name: "AppLock",
apk: "AppLock.apk",
certificate: "platform",
privileged: true,
required: [
"privapp-com.android.car.sensitiveapplock",
],
optional_uses_libs: [
"androidx.window.extensions",
"androidx.window.sidecar",
"com.android.oem.tokens", /* For Android 16+ */
],
}
prebuilt_etc {
name: "privapp-com.android.car.sensitiveapplock",
sub_dir: "permissions",
src: "com.android.car.sensitiveapplock.xml",
filename_from_src: true,
}
Vì chế độ người dùng hệ thống không có giao diện (HSUM) và người dùng Khách không hỗ trợ tính năng Khoá ứng dụng, nên bạn chỉ được bật tính năng Khoá ứng dụng trong hồ sơ phụ. Sử dụng cấu hình này để bật ứng dụng cho người dùng phụ.
Ví dụ: trong preinstalled-packages.xml:
<config>
…
<!-- Config for the Sensitive App Lock app -->
<install-in-user-type package="com.android.car.sensitiveapplock">
<!-- Sensitive App Lock is only available to secondary users. Do not install app in Guest users. -->
<install-in user-type="android.os.usertype.full.SECONDARY" />
</install-in-user-type>
</config>