Tính năng mới trong Android 8.0

Trang này cung cấp thông tin tổng quan về các API, tính năng và thay đổi mới về hành vi được ra mắt trong Android 8.0 (API cấp 26) ảnh hưởng đến Android trong doanh nghiệp.

API và tính năng mới

Chúng tôi đã cải tiến để các chế độ quản lý chủ sở hữu hồ sơ và chủ sở hữu thiết bị trở nên mạnh mẽ, hiệu quả và dễ cung cấp hơn bao giờ hết. Chúng tôi cũng đã triển khai một tình huống triển khai hoàn toàn mới – hồ sơ công việc trên các thiết bị được quản lý hoàn toàn. Những tính năng này và các tính năng khác được mô tả trong các phần sau.

Hồ sơ công việc trên các thiết bị được quản lý đầy đủ

Trong Android 8.0, các thiết bị được quản lý đầy đủ cũng có thể có hồ sơ công việc. Điều này cho phép doanh nghiệp phân tách các ứng dụng và chính sách trong khi vẫn duy trì quyền kiểm soát và chế độ hiển thị trên cả hai hồ sơ. Chủ sở hữu thiết bị hiện tại hoặc người kiểm soát chính sách thiết bị (DPC) khác có thể tạo hồ sơ được quản lý.

Khi hồ sơ công việc trên thiết bị được quản lý hoàn toàn, chủ sở hữu thiết bị có thể:

  • Tạo hồ sơ được quản lý mà không cần người dùng tương tác bằng cách gọi EXTRA_PROVISIONING_SKIP_USER_CONSENT.
  • Nhận thông báo khi tạo hoặc xoá người dùng phụ hoặc hồ sơ được quản lý. Các lệnh gọi lại là onUserAdded()onUserRemoved().
  • Ngăn các DPC khác tạo hồ sơ được quản lý bằng DISALLOW_ADD_MANAGED_PROFILE. Đây là chế độ cài đặt mặc định trong Android 8.0 đối với chủ sở hữu thiết bị trên các thiết bị mới được cấp phép hoặc thiết bị được nâng cấp lên Android 8.0.
  • Chủ sở hữu thiết bị cũng có thể ngăn người dùng xoá các hồ sơ được quản lý hiện có bằng DISALLOW_REMOVE_MANAGED_PROFILE.

Chủ sở hữu thiết bị và chủ sở hữu hồ sơ có thể giao tiếp với nhau nếu họ đến từ cùng một APK và được liên kết (xem phần Liên kết với người dùng dưới đây).

Để biết thêm thông tin chi tiết về cách hỗ trợ tình huống triển khai mới này, hãy xem trang dành riêng cho hồ sơ công việc trên các thiết bị được quản lý toàn bộ.

Mối liên kết của người dùng

Khi chủ sở hữu thiết bị và chủ sở hữu hồ sơ đại diện cho cùng một tổ chức:

  • Chủ sở hữu thiết bị và hồ sơ có thể giao tiếp với nhau trong cùng một APK – họ có thể muốn chia sẻ chính sách hoặc trạng thái (xem phần Hồ sơ công việc trên các thiết bị được quản lý toàn bộ ở trên).

  • Các tính năng trên toàn thiết bị, chẳng hạn như ghi nhật ký hoặc đưa chế độ khoá tác vụ vào danh sách cho phép, có thể áp dụng cho người dùng liên kết.

Mã đơn vị liên kết được đính kèm với hồ sơ hoặc người dùng để xác định các tổ chức. Khi mã liên kết khớp, người dùng sẽ được liên kết. Chủ sở hữu thiết bị và chủ sở hữu hồ sơ sử dụng set linkerIds() để đặt mã đơn vị liên kết của họ. Đại diện cho các tổ chức bằng cách sử dụng các mã nhận dạng chuỗi dài và khó đoán.

Quyền truy cập mới cho người dùng liên kết

Nếu tất cả hồ sơ và người dùng phụ trên thiết bị đều được liên kết với chủ sở hữu thiết bị, thì bạn có thể dùng các tính năng sau:

Trước đây, tính năng ghi nhật ký bảo mật và báo cáo lỗi chỉ được cung cấp cho một người dùng hoặc thiết bị chỉ có một hồ sơ và một người dùng.

Chế độ khoá tác vụ được cung cấp cho người dùng phụ và hồ sơ được quản lý khi được liên kết với chủ sở hữu thiết bị thông qua setLockTaskPackages(). Để biết thêm thông tin chi tiết về mối liên kết của người dùng, hãy xem bài viết Người dùng liên kết.

Tuyên bố từ chối trách nhiệm cấp phép được tuỳ chỉnh

DPC hiện có thể hiển thị tuyên bố từ chối trách nhiệm của riêng họ cho người dùng trong khi cấp phép. Sử dụng EXTRA_PROVISIONING_DISCLAIMERS, EXTRA_PROVISIONING_DISCLAIMER_HEADEREXTRA_PROVISIONING_DISCLAIMER_CONTENT để cung cấp tuyên bố từ chối trách nhiệm bằng văn bản theo kiểu văn bản. Tuyên bố từ chối trách nhiệm tuỳ chỉnh của DPC sẽ xuất hiện trong Danh sách điều khoản có thể thu gọn.

Bảo mật

Chủ sở hữu hồ sơ và chủ sở hữu thiết bị có thể sử dụng setRequiredStrongAuthTimeout() để định cấu hình khoảng thời gian chờ nhằm mở khoá thiết bị hoặc hồ sơ bằng phương thức xác thực phụ, chẳng hạn như vân tay hoặc tác nhân tin cậy. Sau khi hết khoảng thời gian chờ, người dùng phải mở khoá thiết bị hoặc hồ sơ bằng một phương thức xác thực mạnh mẽ, chẳng hạn như mật khẩu, mã PIN hoặc hình mở khoá.

Chủ sở hữu thiết bị và chủ sở hữu hồ sơ có thể đặt lại mật khẩu thiết bị và hồ sơ công việc một cách an toàn bằng resetPasswordWithToken(). Đối với các thiết bị hỗ trợ mã hoá dựa trên tệp, API này sẽ hoạt động trước khi người dùng mở khoá thiết bị hoặc hồ sơ của họ, miễn là DPC có thể nhận biết quá trình mã hoá.

Khi khoá hồ sơ công việc trên một thiết bị hỗ trợ phương thức mã hoá dựa trên tệp, lockNow(int) có thể tuỳ ý loại bỏ các khoá mã hoá chính của hồ sơ công việc bằng cách sử dụng FLAG_EVICT_CREDENTIAL_ENCRYPTION_KEY. Các khoá mã hoá cũng bị loại bỏ nếu người dùng tắt hồ sơ công việc.

Ngoài ra, chủ sở hữu thiết bị có thể dùng setNetworkLoggingEnabled() để bật tính năng ghi nhật ký mạng đối với các truy vấn DNS và kết nối TCP được khởi tạo từ các thiết bị thuộc sở hữu của công ty. Để biết thêm thông tin, hãy xem bài viết Ghi nhật ký hoạt động mạng.

Chủ sở hữu hồ sơ có thể hạn chế gói nào của người dùng chính có thể theo dõi thông báo hồ sơ công việc. Gọi setPermittedCrossProfileNotificationListeners() để đặt các gói trong danh sách cho phép sẽ nhận sự kiện thông qua NotificationListenerService. Việc đặt trình nghe được phép thành null (mặc định) sẽ tắt danh sách cho phép và tất cả các gói đều có thể theo dõi thông báo. Để giới hạn sự kiện ở các gói hệ thống, hãy truyền một Set trống. Để xem các ứng dụng không thể truy cập vào thông báo hồ sơ công việc, người dùng có thể nhấn vào Cài đặt > Ứng dụng và thông báo > Quyền truy cập đặc biệt > Quyền truy cập thông báo.

Cuối cùng, chủ sở hữu hồ sơ và chủ sở hữu thiết bị có thể truy xuất thông tin về các bản cập nhật hệ thống đang chờ xử lý có trên thiết bị bằng getPendingSystemUpdate().

Uỷ quyền API quản lý ứng dụng

Tính năng uỷ quyền API cho phép chủ sở hữu thiết bị và hồ sơ giảm tải hoàn toàn hoạt động quản lý ứng dụng cho các ứng dụng khác. Lớp DevicePolicyManager cung cấp các phương thức để quản lý phạm vi uỷ quyền mà chủ sở hữu thiết bị và hồ sơ có thể cấp cho một gói:

  • Phương thức setDelegatedScopes() cho phép chủ sở hữu thiết bị và chủ sở hữu hồ sơ cấp quyền truy cập vào API đặc quyền cho các ứng dụng khác.
  • Phương thức getDelegatedScopes() trả về các phạm vi đã cấp cho một gói.
  • getDelegatePackages() trả về các gói có phạm vi.

Bảng sau đây cho biết cách các phương thức trong DevicePolicyManager được sắp xếp thành các phạm vi khác nhau:

Bảng 1. Tương quan giữa các phạm vi và phương thức chính sách thiết bị

Nhóm Phương thức
DELEGATION_CERT_INSTALL
DELEGATION_APP_RESTRICTIONS
DELEGATION_BLOCK_UNINSTALL setUninstallBlocked()
DELEGATION_PERMISSION_GRANT
DELEGATION_PACKAGE_ACCESS
DELEGATION_ENABLE_SYSTEM_APP enableSystemApp()

Các dịch vụ nền hoạt động trong thời gian dài

Chủ sở hữu thiết bị và hồ sơ có thể phân lớp con DeviceAdminService để tạo các dịch vụ nền. Hệ thống Android sẽ cố gắng duy trì dịch vụ trong khi người dùng đang chạy. Nếu bạn muốn chạy các tác vụ định kỳ, hãy cân nhắc sử dụng JobScheduler trước khi tạo dịch vụ nền.

Kiểm soát dịch vụ sao lưu

Chủ sở hữu thiết bị có thể bật/tắt Android Backup Service bằng các phương thức mới trong DevicePolicyManager. Bật và tắt dịch vụ sao lưu bằng setBackupServiceEnabled(). Kiểm tra trạng thái của dịch vụ sao lưu bằng isBackupServiceEnabled().

Cấu hình proxy Wi-Fi

Chủ sở hữu thiết bị và chủ sở hữu hồ sơ có thể định cấu hình máy chủ proxy HTTP cho mạng Wi-Fi. Sử dụng tệp PAC hoặc chế độ cài đặt thủ công để định cấu hình máy chủ proxy cho từng mạng Wi-Fi. Để đặt hoặc xoá proxy cho WifiConfiguration, hãy gọi phương thức setHttpProxy(). Để tải chế độ cài đặt proxy, hãy gọi getHttpProxy().

Hộp thoại giải thích về những tính năng bị quản trị viên tắt

Ứng dụng của bạn phải hiển thị nội dung giải thích hữu ích cho những người dùng cố gắng sử dụng tính năng bị quản trị viên tắt. Hiện tại, tất cả ứng dụng đều có thể sử dụng createAdminSupportIntent() để tạo ý định hiển thị hộp thoại giải thích khi được chuyển vào startActivity(Intent). Ý định bao gồm nội dung giải thích tuỳ chỉnh và đã bản địa hoá cho các máy ảnh đã tắt, tính năng chụp ảnh màn hình đã tắt và tất cả các hạn chế của UserManager.

Hạn chế Bluetooth

Chủ sở hữu thiết bị có thể tắt Bluetooth – ảnh hưởng đến tất cả người dùng và hồ sơ trên thiết bị. Để tắt Bluetooth, hãy thêm giới hạn đối với người dùng DISALLOW_BLUETOOTH.

Chủ sở hữu thiết bị và chủ sở hữu hồ sơ có thể ngăn người dùng gửi tệp qua Bluetooth bằng DISALLOW_BLUETOOTH_SHARING. Việc nhận tệp không bị ảnh hưởng. Khi do chủ sở hữu thiết bị thiết lập, DISALLOW_BLUETOOTH_SHARING sẽ áp dụng cho mọi người dùng trên thiết bị. Đây là chế độ cài đặt mặc định trong Android 8.0 cho các cấu hình mới và hồ sơ hiện có trên các thiết bị được nâng cấp lên Android 8.0.

Thay đổi về hành vi

Nếu đang xây dựng ứng dụng cho doanh nghiệp, bao gồm cả DPC, bạn nên xem lại những thay đổi về hành vi sau đây trong Android 8.0 và sửa đổi ứng dụng của mình cho phù hợp.

Xóa người dùng

Chủ sở hữu thiết bị có thể xoá người dùng phụ và hồ sơ được quản lý bằng removeUser(), ngay cả khi DISALLOW_REMOVE_USER được bật.

Bảo mật

Xác thực

Những thay đổi sau có hiệu lực trong lớp DevicePolicyManager:

  • Phương thức lockNow() chỉ khoá hồ sơ công việc nếu có một thử thách công việc riêng biệt đang hoạt động.
  • Phương thức resetPassword() không còn được cung cấp cho các DPC đóng vai trò là chủ sở hữu thiết bị hoặc chủ sở hữu hồ sơ và nhắm mục tiêu Android 8.0. Nếu được gọi, hệ thống sẽ gửi một trường hợp ngoại lệ về bảo mật. Thay vào đó, DPC phải sử dụng resetPasswordWithToken().

    Lưu ý: Thay đổi này sẽ không ảnh hưởng đến các DPC nhắm đến Android 7.1.1 (API cấp 25) trở xuống, cũng như các DPC chỉ có đặc quyền của quản trị viên thiết bị.

  • Đối với các thiết bị hỗ trợ phương thức mã hoá dựa trên tệp, isActivePasswordSufficient() sẽ không dùng được trước khi người dùng mở khoá thiết bị lần đầu tiên sau khi khởi động lại. Nếu được gọi trước khi người dùng mở khoá thiết bị, thì hệ thống sẽ gửi một trường hợp ngoại lệ.

Dữ liệu của hồ sơ công việc bị khoá

Android 8.0 có các thay đổi về giao diện người dùng để tách dữ liệu khỏi hồ sơ công việc bị khoá.

  • Giờ đây, thông báo của các ứng dụng trong hồ sơ công việc có thể ẩn nội dung ứng dụng. Trước đây, ngăn thông báo hiển thị nội dung của các ứng dụng công việc từ một hồ sơ công việc bị khoá.
  • Màn hình Recents (Gần đây) giờ đây hiển thị một bảng điều khiển thuần tuý để chạy các ứng dụng trong hồ sơ công việc bị khoá. Bảng điều khiển thuần tuý có khoá màu chứa biểu tượng và tên của ứng dụng. Trước đây, các hoạt động hoặc tác vụ trong hồ sơ công việc bị khoá sẽ hiển thị bản xem trước trên màn hình Gần đây.

Tính toàn vẹn của thiết bị

  • Cờ ENSURE_VERIFY_APPS hiện là một quy định hạn chế đối với người dùng trên toàn cầu. Nếu bất kỳ người dùng nào trên thiết bị có quy định hạn chế này, thì quy trình xác minh ứng dụng sẽ được thực thi đối với tất cả người dùng trên thiết bị. Ví dụ: nếu chủ sở hữu hồ sơ đặt giới hạn cho hồ sơ công việc, thì quy trình xác minh ứng dụng sẽ được thực thi trên hồ sơ cá nhân của người dùng.
  • Phương thức onSystemUpdatePending() hiện được gọi cho chủ sở hữu hồ sơ, ngoài chủ sở hữu thiết bị.
  • Khi sử dụng lớp SystemUpdatePolicy, chính sách hoãn lại không còn áp dụng cho các bản vá bảo mật, vì vậy, các bản vá bảo mật có thể không bị trì hoãn nữa. Tuy nhiên, hành vi của các loại chính sách khác, chẳng hạn như chính sách tự động và chế độ cửa sổ, sẽ không bị ảnh hưởng.
  • Chủ sở hữu thiết bị có thể kích hoạt quá trình đặt lại về trạng thái ban đầu bằng cách sử dụng wipeData(), ngay cả khi DISALLOW_FACTORY_RESET được bật.

VPN luôn bật

Android 8.0 có các thay đổi về giao diện người dùng để giúp người dùng hiểu được trạng thái của kết nối VPN luôn bật:

  • Khi kết nối VPN luôn bật ngắt kết nối hoặc không thể kết nối, người dùng sẽ thấy một thông báo không đóng được. Thao tác nhấn vào thông báo đó sẽ cho thấy các chế độ cài đặt cấu hình VPN. Thông báo sẽ biến mất khi VPN kết nối lại hoặc người dùng tắt tuỳ chọn VPN luôn bật.
  • VPN luôn bật cho phép người dùng sử dụng thiết bị chặn mọi kết nối mạng không dùng VPN. Khi bật tuỳ chọn này, ứng dụng Cài đặt sẽ cảnh báo người dùng rằng họ sẽ không có kết nối Internet cho đến khi VPN kết nối. Chế độ cài đặt sẽ nhắc người dùng tiếp tục hoặc huỷ.

VpnService của các ứng dụng VPN hiện phải gọi phương thức startForeground() sau khi chạy. Vì hệ thống Android bắt đầu trực tiếp dịch vụ của ứng dụng VPN, nên việc chuyển sang nền trước là trách nhiệm của ứng dụng. Android 8.0 tắt các ứng dụng VPN không chuyển đổi dịch vụ VPN sang nền trước.

Gọi lại mật khẩu

Các lệnh gọi lại thay đổi mật khẩu của DeviceAdminReceiver hiện bao gồm tham số user để xác định người dùng hoặc hồ sơ mà mật khẩu đó thuộc về. Các chữ ký của phương thức mới bao gồm:

Phương thức triển khai mặc định của mỗi phương thức mới sẽ gọi phiên bản trước đó – bỏ đối số người dùng. Android 8.0 không dùng các phương thức trước đó nữa.

Uỷ quyền API quản lý ứng dụng

Các phương thức sau trong lớp DevicePolicyManager hiện đã ngừng hoạt động:

Ngoài ra, bạn hiện có thể uỷ quyền một phạm vi cho nhiều gói. Nói cách khác, chủ sở hữu thiết bị và chủ sở hữu hồ sơ có thể cấp đồng thời cho 2 gói khác nhau quyền truy cập vào cùng một tập hợp API.