Android 6.0 (M) cung cấp các tính năng mới cho người dùng và nhà phát triển ứng dụng. Tài liệu này giới thiệu về các API đáng chú ý nhất.
Bắt đầu phát triển
Để bắt đầu tạo ứng dụng cho Android 6.0, trước tiên, bạn phải tải SDK Android. Sau đó, hãy dùng Trình quản lý SDK để tải Nền tảng SDK Android 6.0 và Hình ảnh hệ thống xuống.
Cập nhật cấp độ API mục tiêu
Để tối ưu hoá ứng dụng cho các thiết bị chạy Android, hãy đặt targetSdkVersion thành "23", cài đặt ứng dụng trên một hình ảnh hệ thống Android, kiểm thử rồi xuất bản ứng dụng đã cập nhật cùng với thay đổi này.
Bạn có thể sử dụng API Android trong khi vẫn hỗ trợ các phiên bản cũ hơn bằng cách thêm các điều kiện vào mã để kiểm tra cấp độ API hệ thống trước khi thực thi các API mà minSdkVersion không được hỗ trợ.
Để tìm hiểu thêm về cách duy trì khả năng tương thích ngược, hãy đọc bài viết Hỗ trợ các phiên bản nền tảng khác nhau.
Để biết thêm thông tin về cách hoạt động của cấp độ API, hãy đọc bài viết Cấp độ API là gì?
Xác thực bằng vân tay
Bản phát hành này cung cấp các API mới để cho phép bạn xác thực người dùng bằng cách sử dụng tính năng quét vân tay trên các thiết bị được hỗ trợ. Hãy sử dụng các API này cùng với hệ thống Kho khoá Android.
Để xác thực người dùng thông qua tính năng quét vân tay, hãy lấy một thực thể của lớp FingerprintManager mới và gọi phương thức authenticate(). Ứng dụng của bạn phải chạy trên một thiết bị tương thích có cảm biến vân tay. Bạn phải triển khai giao diện người dùng cho quy trình xác thực bằng vân tay trên ứng dụng của mình và sử dụng biểu tượng vân tay chuẩn của Android trong giao diện người dùng.
Biểu tượng vân tay của Android (c_fp_40px.png) có trong mẫu Xác thực bằng sinh trắc học.
Nếu bạn đang phát triển nhiều ứng dụng sử dụng tính năng xác thực bằng vân tay, hãy lưu ý rằng mỗi ứng dụng phải xác thực vân tay của người dùng một cách độc lập.
Để sử dụng tính năng này trong ứng dụng, trước tiên, hãy thêm quyền USE_FINGERPRINT vào tệp kê khai.
<uses-permission android:name="android.permission.USE_FINGERPRINT" />
Để xem một ứng dụng triển khai quy trình xác thực bằng vân tay, hãy tham khảo mẫu Xác thực bằng sinh trắc học. Để xem minh hoạ về cách bạn có thể sử dụng các API xác thực này cùng với các API Android khác, hãy xem video API Vân tay và API Thanh toán.
Nếu bạn đang kiểm thử tính năng này, hãy làm theo các bước sau:
- Cài đặt Bộ công cụ SDK Android Bản sửa đổi 24.3 nếu bạn chưa thực hiện việc này.
- Đăng ký vân tay mới trong trình mô phỏng bằng cách chuyển đến phần Cài đặt > Bảo mật > Vân tay, sau đó làm theo hướng dẫn đăng ký.
- Sử dụng trình mô phỏng để mô phỏng các sự kiện chạm vân tay bằng lệnh sau. Sử dụng cùng một lệnh để mô phỏng các sự kiện chạm bằng vân tay trên màn hình khoá hoặc trong ứng dụng của bạn.
adb -e emu finger touch <finger_id>
Trên Windows, bạn có thể phải chạy
telnet 127.0.0.1 <emulator-id>rồi đếnfinger touch <finger_id>.
Xác nhận thông tin đăng nhập
Ứng dụng của bạn có thể xác thực người dùng dựa trên thời gian gần đây nhất mà họ mở khoá thiết bị. Tính năng này giúp người dùng không phải nhớ thêm mật khẩu dành riêng cho ứng dụng và bạn cũng không cần triển khai giao diện người dùng xác thực của riêng mình. Ứng dụng của bạn nên sử dụng tính năng này cùng với việc triển khai khoá công khai hoặc khoá bí mật để xác thực người dùng.
Để đặt khoảng thời gian chờ mà cùng một khoá có thể được sử dụng lại sau khi người dùng được xác thực thành công, hãy gọi phương thức setUserAuthenticationValidityDurationSeconds() mới khi bạn thiết lập KeyGenerator hoặc KeyPairGenerator.
Tránh hiển thị hộp thoại xác thực lại quá nhiều lần – trước tiên, ứng dụng của bạn nên thử sử dụng đối tượng mật mã và nếu hết thời gian chờ, hãy sử dụng phương thức createConfirmDeviceCredentialIntent() để xác thực lại người dùng trong ứng dụng.
Liên kết ứng dụng
Bản phát hành này cải thiện hệ thống ý định của Android bằng cách cung cấp tính năng liên kết ứng dụng mạnh mẽ hơn. Tính năng này cho phép bạn liên kết một ứng dụng với một miền web mà bạn sở hữu. Dựa trên mối liên kết này, nền tảng có thể xác định ứng dụng mặc định sẽ dùng để xử lý một đường liên kết trang web cụ thể và bỏ qua việc nhắc người dùng chọn một ứng dụng. Để tìm hiểu cách triển khai tính năng này, hãy xem phần Xử lý đường liên kết đến ứng dụng.
Tính năng Tự động sao lưu cho ứng dụng
Giờ đây, hệ thống sẽ tự động sao lưu và khôi phục toàn bộ dữ liệu cho các ứng dụng. Ứng dụng của bạn phải nhắm đến Android 6.0 (cấp độ API 23) để bật hành vi này; bạn không cần thêm mã bổ sung nào. Nếu người dùng xoá Tài khoản Google, dữ liệu sao lưu của họ cũng sẽ bị xoá. Để tìm hiểu cách hoạt động của tính năng này và cách định cấu hình nội dung cần sao lưu trên hệ thống tệp, hãy xem phần Định cấu hình tính năng Tự động sao lưu cho ứng dụng.
Chia sẻ trực tiếp
Bản phát hành này cung cấp cho bạn các API để giúp người dùng chia sẻ một cách nhanh chóng và trực quan. Giờ đây, bạn có thể xác định mục tiêu chia sẻ trực tiếp để khởi chạy một hoạt động cụ thể trong ứng dụng. Những mục tiêu chia sẻ trực tiếp này sẽ xuất hiện với người dùng thông qua trình đơn Chia sẻ. Tính năng này cho phép người dùng chia sẻ nội dung đến các mục tiêu, chẳng hạn như danh bạ, trong các ứng dụng khác. Ví dụ: đích chia sẻ trực tiếp có thể khởi chạy một hoạt động trong một ứng dụng mạng xã hội khác, cho phép người dùng chia sẻ nội dung trực tiếp với một người bạn hoặc cộng đồng cụ thể trong ứng dụng đó.
Để bật các mục tiêu chia sẻ trực tiếp, bạn phải xác định một lớp mở rộng lớp ChooserTargetService. Khai báo dịch vụ của bạn trong tệp kê khai. Trong phần khai báo đó, hãy chỉ định quyền BIND_CHOOSER_TARGET_SERVICE và một bộ lọc ý định bằng cách sử dụng thao tác SERVICE_INTERFACE.
Ví dụ sau đây cho biết cách bạn có thể khai báo ChooserTargetService trong tệp kê khai.
<service android:name=".ChooserTargetService" android:label="@string/service_name" android:permission="android.permission.BIND_CHOOSER_TARGET_SERVICE"> <intent-filter> <action android:name="android.service.chooser.ChooserTargetService" /> </intent-filter> </service>
Đối với mỗi hoạt động mà bạn muốn hiển thị cho ChooserTargetService, hãy thêm một phần tử <meta-data> có tên "android.service.chooser.chooser_target_service" vào tệp kê khai ứng dụng.
<activity android:name=".MyShareActivity” android:label="@string/share_activity_label"> <intent-filter> <action android:name="android.intent.action.SEND" /> </intent-filter> <meta-data android:name="android.service.chooser.chooser_target_service" android:value=".ChooserTargetService" /> </activity>
Tương tác bằng giọng nói
Bản phát hành này cung cấp một API tương tác bằng giọng nói mới. API này cùng với Lệnh thoại cho phép bạn tạo trải nghiệm đàm thoại bằng giọng nói trong các ứng dụng của mình. Gọi phương thức isVoiceInteraction() để xác định xem một hành động bằng giọng nói có kích hoạt hoạt động của bạn hay không. Nếu có, ứng dụng của bạn có thể dùng lớp VoiceInteractor để yêu cầu người dùng xác nhận bằng giọng nói, chọn trong danh sách các lựa chọn, v.v.
Hầu hết các lượt tương tác bằng giọng nói đều bắt nguồn từ một hành động bằng giọng nói của người dùng. Tuy nhiên, hoạt động tương tác bằng giọng nói cũng có thể bắt đầu mà không cần hoạt động đầu vào của người dùng. Ví dụ: một ứng dụng khác được khởi chạy thông qua một lượt tương tác bằng giọng nói cũng có thể gửi một ý định để khởi chạy một lượt tương tác bằng giọng nói. Để xác định xem hoạt động của bạn có được khởi chạy từ một cụm từ tìm kiếm bằng giọng nói của người dùng hay từ một ứng dụng tương tác bằng giọng nói khác hay không, hãy gọi phương thức isVoiceInteractionRoot(). Nếu một ứng dụng khác đã chạy hoạt động của bạn, phương thức này sẽ trả về false. Sau đó, ứng dụng của bạn có thể nhắc người dùng xác nhận rằng họ muốn thực hiện hành động này.
Để tìm hiểu thêm về cách triển khai thao tác bằng giọng nói, hãy xem trang web dành cho nhà phát triển Thao tác bằng giọng nói.
Assist API
Bản phát hành này mang đến một cách thức mới để người dùng tương tác với các ứng dụng của bạn thông qua trợ lý. Để sử dụng tính năng này, người dùng phải cho phép trợ lý sử dụng bối cảnh hiện tại. Sau khi bật, người dùng có thể gọi trợ lý trong bất kỳ ứng dụng nào bằng cách nhấn và giữ nút Màn hình chính.
Ứng dụng của bạn có thể chọn không chia sẻ ngữ cảnh hiện tại với trợ lý bằng cách đặt cờ FLAG_SECURE. Ngoài bộ thông tin tiêu chuẩn mà nền tảng truyền cho trợ lý, ứng dụng của bạn có thể chia sẻ thêm thông tin bằng cách sử dụng lớp AssistContent mới.
Để cung cấp cho trợ lý thêm ngữ cảnh từ ứng dụng của bạn, hãy làm theo các bước sau:
- Triển khai giao diện
Application.OnProvideAssistDataListener. - Đăng ký trình nghe này bằng cách sử dụng
registerOnProvideAssistDataListener(). - Để cung cấp thông tin theo bối cảnh dành riêng cho hoạt động, hãy ghi đè lệnh gọi lại
onProvideAssistData()và lệnh gọi lạionProvideAssistContent()mới (không bắt buộc).
Thiết bị lưu trữ thích ứng
Với bản phát hành này, người dùng có thể chấp nhận các thiết bị lưu trữ ngoài, chẳng hạn như thẻ SD. Việc sử dụng một thiết bị lưu trữ ngoài sẽ mã hoá và định dạng thiết bị đó để hoạt động như bộ nhớ trong. Tính năng này cho phép người dùng di chuyển cả ứng dụng và dữ liệu riêng tư của những ứng dụng đó giữa các thiết bị lưu trữ. Khi di chuyển các ứng dụng, hệ thống sẽ tuân theo lựa chọn ưu tiên android:installLocation trong tệp kê khai.
Nếu ứng dụng của bạn truy cập vào các API hoặc trường sau, hãy lưu ý rằng đường dẫn tệp mà các API hoặc trường này trả về sẽ thay đổi linh hoạt khi ứng dụng được di chuyển giữa các thiết bị lưu trữ trong và ngoài. Khi tạo đường dẫn tệp, bạn nên luôn gọi các API này một cách linh động. Đừng sử dụng đường dẫn tệp được mã hoá cứng hoặc duy trì đường dẫn tệp đủ điều kiện đã được tạo trước đó.
Contextphương thức:ApplicationInfofields:
Để gỡ lỗi tính năng này, bạn có thể bật tính năng chấp nhận ổ đĩa USB được kết nối với thiết bị Android thông qua cáp USB On-The-Go (OTG) bằng cách chạy lệnh sau:
$ adb shell sm set-force-adoptable true
Thông báo
Bản phát hành này bổ sung các thay đổi sau về API cho thông báo:
- Cấp độ bộ lọc
INTERRUPTION_FILTER_ALARMSmới tương ứng với chế độ không làm phiền Chỉ báo thức mới. - Giá trị danh mục
CATEGORY_REMINDERmới dùng để phân biệt lời nhắc do người dùng lên lịch với các sự kiện (CATEGORY_EVENT) và báo thức (CATEGORY_ALARM) khác. - Lớp
Iconmới mà bạn có thể đính kèm vào thông báo thông qua các phương thứcsetSmallIcon()vàsetLargeIcon(). Tương tự, phương thứcaddAction()hiện chấp nhận một đối tượngIconthay vì mã nhận dạng tài nguyên drawable. - Phương thức
getActiveNotifications()mới cho phép ứng dụng của bạn biết những thông báo nào hiện đang hoạt động.
Hỗ trợ bút cảm ứng Bluetooth
Bản phát hành này cải thiện khả năng hỗ trợ hoạt động đầu vào của người dùng bằng bút cảm ứng Bluetooth. Người dùng có thể ghép nối và kết nối một bút cảm ứng Bluetooth tương thích với điện thoại hoặc máy tính bảng. Khi được kết nối, thông tin vị trí từ màn hình cảm ứng sẽ được kết hợp với thông tin về áp lực và nút từ bút cảm ứng để mang đến nhiều cách thể hiện hơn so với chỉ dùng màn hình cảm ứng. Ứng dụng của bạn có thể lắng nghe các lần nhấn nút bút cảm ứng và thực hiện các thao tác phụ bằng cách đăng ký các đối tượng View.OnContextClickListener và GestureDetector.OnContextClickListener trong hoạt động của bạn.
Sử dụng các phương thức và hằng số MotionEvent để phát hiện các hoạt động tương tác với nút bút cảm ứng:
- Nếu người dùng chạm bút cảm ứng có nút vào màn hình ứng dụng của bạn, phương thức
getTooltype()sẽ trả vềTOOL_TYPE_STYLUS. - Đối với các ứng dụng nhắm đến Android 6.0 (cấp độ API 23), phương thức
getButtonState()sẽ trả vềBUTTON_STYLUS_PRIMARYkhi người dùng nhấn nút bút cảm ứng chính. Nếu bút cảm ứng có nút thứ hai, thì phương thức tương tự sẽ trả vềBUTTON_STYLUS_SECONDARYkhi người dùng nhấn nút đó. Nếu người dùng nhấn cả hai nút cùng lúc, phương thức này sẽ trả về cả hai giá trị được kết hợp với nhau (BUTTON_STYLUS_PRIMARY|BUTTON_STYLUS_SECONDARY). -
Đối với các ứng dụng nhắm đến phiên bản nền tảng thấp hơn, phương thức
getButtonState()sẽ trả vềBUTTON_SECONDARY(đối với thao tác nhấn nút chính của bút cảm ứng),BUTTON_TERTIARY(đối với thao tác nhấn nút phụ của bút cảm ứng) hoặc cả hai.
Cải thiện tính năng quét Bluetooth năng lượng thấp
Nếu ứng dụng của bạn thực hiện các hoạt động quét Bluetooth năng lượng thấp, hãy dùng phương thức setCallbackType() mới để chỉ định rằng bạn muốn hệ thống thông báo cho các lệnh gọi lại khi hệ thống tìm thấy lần đầu tiên hoặc thấy sau một thời gian dài một gói quảng cáo khớp với ScanFilter đã đặt. Phương pháp quét này tiết kiệm pin hơn so với phương pháp được cung cấp trong phiên bản nền tảng trước đó.
Hỗ trợ Hotspot 2.0 phiên bản 1
Bản phát hành này hỗ trợ thêm thông số kỹ thuật Hotspot 2.0 phiên bản 1 trên các thiết bị Nexus 6 và Nexus 9. Để cung cấp thông tin đăng nhập Hotspot 2.0 trong ứng dụng, hãy sử dụng các phương thức mới của lớp WifiEnterpriseConfig, chẳng hạn như setPlmn() và setRealm(). Trong đối tượng WifiConfiguration, bạn có thể đặt các trường FQDN và providerFriendlyName.
Phương thức isPasspointNetwork() mới cho biết liệu một mạng được phát hiện có phải là điểm truy cập Hotspot 2.0 hay không.
Chế độ màn hình 4K
Giờ đây, nền tảng này cho phép các ứng dụng yêu cầu nâng cấp độ phân giải màn hình lên 4K khi kết xuất trên phần cứng tương thích. Để truy vấn độ phân giải thực tế hiện tại, hãy sử dụng các API Display.Mode mới. Nếu giao diện người dùng được vẽ ở độ phân giải logic thấp hơn và được tăng tỷ lệ lên độ phân giải thực lớn hơn, hãy lưu ý rằng độ phân giải thực mà phương thức getPhysicalWidth() trả về có thể khác với độ phân giải logic do getSize() báo cáo.
Bạn có thể yêu cầu hệ thống thay đổi độ phân giải thực tế trong ứng dụng khi ứng dụng chạy bằng cách đặt thuộc tính preferredDisplayModeId của cửa sổ ứng dụng. Tính năng này hữu ích nếu bạn muốn chuyển sang độ phân giải màn hình 4K. Trong chế độ hiển thị 4K, giao diện người dùng vẫn được kết xuất ở độ phân giải gốc (chẳng hạn như 1080p) và được nâng cấp lên 4K, nhưng các đối tượng SurfaceView có thể hiển thị nội dung ở độ phân giải gốc.
Themeable ColorStateLists
Các thuộc tính giao diện hiện được hỗ trợ trong ColorStateList cho các thiết bị chạy Android 6.0 (cấp độ API 23). Các phương thức Resources.getColorStateList() và Resources.getColor() không còn được dùng nữa. Nếu bạn đang gọi các API này, hãy gọi phương thức Context.getColorStateList() hoặc Context.getColor() mới. Các phương thức này cũng có trong thư viện appcompat phiên bản 4 thông qua ContextCompat.
Các tính năng âm thanh
Bản phát hành này bổ sung các điểm cải tiến cho quá trình xử lý âm thanh trên Android, bao gồm:
- Hỗ trợ giao thức MIDI bằng các API
android.media.midimới. Sử dụng các API này để gửi và nhận các sự kiện MIDI. - Các lớp
AudioRecord.BuildervàAudioTrack.Buildermới để lần lượt tạo các đối tượng phát và ghi âm thanh kỹ thuật số, đồng thời định cấu hình các thuộc tính nguồn và đích âm thanh để ghi đè các giá trị mặc định của hệ thống. - Các hook API để liên kết thiết bị âm thanh và thiết bị đầu vào. Điều này đặc biệt hữu ích nếu ứng dụng của bạn cho phép người dùng bắt đầu tìm kiếm bằng giọng nói từ một tay điều khiển trò chơi hoặc điều khiển từ xa được kết nối với Android TV. Hệ thống sẽ gọi lệnh gọi lại
onSearchRequested()mới khi người dùng bắt đầu tìm kiếm. Để xác định xem thiết bị đầu vào của người dùng có micrô tích hợp hay không, hãy truy xuất đối tượngInputDevicetừ lệnh gọi lại đó, sau đó gọi phương thứchasMicrophone()mới. - Phương thức
getDevices()mới cho phép bạn truy xuất danh sách tất cả các thiết bị âm thanh hiện được kết nối với hệ thống. Bạn cũng có thể đăng ký một đối tượngAudioDeviceCallbacknếu muốn hệ thống thông báo cho ứng dụng của bạn khi một thiết bị âm thanh kết nối hoặc ngắt kết nối.
Tính năng cho video
Bản phát hành này bổ sung các chức năng mới cho API xử lý video, bao gồm:
- Lớp
MediaSyncmới giúp các ứng dụng kết xuất đồng bộ luồng âm thanh và video. Các vùng đệm âm thanh được gửi theo cách không chặn và được trả về thông qua một lệnh gọi lại. Ngoài ra, tính năng này còn hỗ trợ tốc độ phát linh hoạt. - Sự kiện
EVENT_SESSION_RECLAIMEDmới, cho biết rằng trình quản lý tài nguyên đã thu hồi một phiên do ứng dụng mở. Nếu ứng dụng của bạn sử dụng các phiên DRM, bạn nên xử lý sự kiện này và đảm bảo không sử dụng phiên đã được khôi phục. - Mã lỗi
ERROR_RECLAIMEDmới, cho biết trình quản lý tài nguyên đã thu hồi tài nguyên đa phương tiện mà codec sử dụng. Với trường hợp ngoại lệ này, codec phải được phát hành vì đã chuyển sang trạng thái kết thúc. - Giao diện
getMaxSupportedInstances()mới để gợi ý về số lượng tối đa của các phiên bản codec đồng thời được hỗ trợ. - Phương thức
setPlaybackParams()mới để đặt tốc độ phát nội dung nghe nhìn cho chế độ phát chuyển động nhanh hoặc chuyển động chậm. Tính năng này cũng tự động kéo dài hoặc tăng tốc độ phát âm thanh cùng với video.
Tính năng của camera
Bản phát hành này bao gồm các API mới sau đây để truy cập vào đèn pin của camera và để xử lý lại hình ảnh bằng camera:
Flashlight API
Nếu thiết bị camera có một đèn flash, bạn có thể gọi phương thức setTorchMode() để bật hoặc tắt chế độ đèn pin của đèn flash mà không cần mở thiết bị camera. Ứng dụng không có quyền sở hữu độc quyền đối với đèn flash hoặc thiết bị camera. Chế độ đèn pin sẽ tắt và không dùng được bất cứ khi nào thiết bị camera không dùng được hoặc khi các tài nguyên camera khác duy trì trạng thái bật đèn pin không dùng được. Các ứng dụng khác cũng có thể gọi setTorchMode() để tắt chế độ đèn pin. Khi ứng dụng cuối cùng bật chế độ đèn pin bị đóng, chế độ đèn pin sẽ tắt.
Bạn có thể đăng ký một lệnh gọi lại để nhận thông báo về trạng thái chế độ đèn pin bằng cách gọi phương thức registerTorchCallback(). Trong lần đầu tiên lệnh gọi lại được đăng ký, lệnh gọi lại sẽ được gọi ngay lập tức với trạng thái chế độ đèn pin của tất cả các thiết bị camera hiện đã biết có một bộ phận đèn flash. Nếu chế độ đèn pin được bật hoặc tắt thành công, phương thức onTorchModeChanged() sẽ được gọi.
Reprocessing API
API Camera2 được mở rộng để hỗ trợ việc xử lý lại hình ảnh ở định dạng YUV và định dạng mờ riêng tư. Để xác định xem các chức năng xử lý lại này có dùng được hay không, hãy gọi getCameraCharacteristics() và kiểm tra khoá REPROCESS_MAX_CAPTURE_STALL. Nếu thiết bị hỗ trợ xử lý lại, bạn có thể tạo một phiên chụp ảnh bằng camera có thể xử lý lại bằng cách gọi createReprocessableCaptureSession() và tạo các yêu cầu xử lý lại vùng đệm đầu vào.
Sử dụng lớp ImageWriter để kết nối luồng bộ nhớ đệm đầu vào với đầu vào xử lý lại của camera. Để lấy một vùng đệm trống, hãy làm theo mô hình lập trình này:
- Gọi phương thức
dequeueInputImage(). - Điền dữ liệu vào vùng đệm đầu vào.
- Gửi vùng đệm đến camera bằng cách gọi phương thức
queueInputImage().
Nếu bạn đang sử dụng một đối tượng ImageWriter cùng với hình ảnh PRIVATE, thì ứng dụng của bạn không thể truy cập trực tiếp vào dữ liệu hình ảnh. Thay vào đó, hãy truyền trực tiếp hình ảnh PRIVATE đến ImageWriter bằng cách gọi phương thức queueInputImage() mà không cần sao chép vùng đệm.
Lớp ImageReader hiện hỗ trợ các luồng hình ảnh ở định dạng PRIVATE. Nhờ chế độ hỗ trợ này, ứng dụng của bạn có thể duy trì một hàng đợi hình ảnh dạng vòng gồm các hình ảnh đầu ra ImageReader, chọn một hoặc nhiều hình ảnh rồi gửi chúng đến ImageWriter để xử lý lại bằng camera.
Các tính năng của Android for Work
Bản phát hành này bao gồm các API mới sau đây cho Android for Work:
- Các chế độ kiểm soát nâng cao cho thiết bị thuộc quyền sở hữu của công ty, chỉ dùng cho một mục đích: Hiện tại, Chủ sở hữu thiết bị có thể kiểm soát các chế độ cài đặt sau để cải thiện việc quản lý thiết bị thuộc quyền sở hữu của công ty, chỉ dùng cho một mục đích (COSU):
- Tắt hoặc bật lại keyguard bằng phương thức
setKeyguardDisabled(). - Tắt hoặc bật lại thanh trạng thái (bao gồm cả chế độ cài đặt nhanh, thông báo và cử chỉ vuốt lên để chuyển đến chế độ điều hướng nhằm khởi chạy Google Now) bằng phương thức
setStatusBarDisabled(). - Tắt hoặc bật lại chế độ khởi động an toàn bằng hằng số
UserManagerDISALLOW_SAFE_BOOT. - Ngăn màn hình tắt khi cắm điện bằng hằng số
STAY_ON_WHILE_PLUGGED_IN.
- Tắt hoặc bật lại keyguard bằng phương thức
- Chủ sở hữu thiết bị có thể cài đặt và gỡ cài đặt ứng dụng mà không cần sự cho phép của người dùng: Giờ đây, Chủ sở hữu thiết bị có thể cài đặt và gỡ cài đặt ứng dụng mà không cần sự cho phép của người dùng bằng cách sử dụng API
PackageInstaller, độc lập với Google Play cho Doanh nghiệp. Giờ đây, bạn có thể cung cấp thiết bị thông qua một Chủ sở hữu thiết bị. Chủ sở hữu thiết bị này sẽ tìm nạp và cài đặt ứng dụng mà không cần người dùng tương tác. Tính năng này hữu ích khi bạn muốn bật tính năng cung cấp một lần chạm cho các kiosk hoặc những thiết bị tương tự mà không cần kích hoạt Tài khoản Google. - Quyền truy cập chứng chỉ doanh nghiệp âm thầm: Khi một ứng dụng gọi
choosePrivateKeyAlias(), trước khi người dùng được nhắc chọn một chứng chỉ, Chủ sở hữu hồ sơ hoặc thiết bị hiện có thể gọi phương thứconChoosePrivateKeyAlias()để cung cấp bí danh một cách âm thầm cho ứng dụng yêu cầu. Tính năng này cho phép bạn cấp cho các ứng dụng được quản lý quyền truy cập vào chứng chỉ mà không cần người dùng tương tác. - Tự động chấp nhận các bản cập nhật hệ thống. Bằng cách đặt chính sách cập nhật hệ thống bằng
setSystemUpdatePolicy(), Chủ sở hữu thiết bị hiện có thể tự động chấp nhận bản cập nhật hệ thống, chẳng hạn như trong trường hợp thiết bị kiosk, hoặc hoãn bản cập nhật và ngăn người dùng thực hiện bản cập nhật đó trong tối đa 30 ngày. Hơn nữa, quản trị viên có thể đặt một khung thời gian hằng ngày mà bản cập nhật phải được thực hiện, chẳng hạn như trong những giờ mà thiết bị ki-ốt không được sử dụng. Khi có bản cập nhật hệ thống, hệ thống sẽ kiểm tra xem ứng dụng bộ điều khiển chính sách thiết bị có đặt chính sách cập nhật hệ thống hay không và hoạt động cho phù hợp. -
Uỷ quyền cài đặt chứng chỉ: Giờ đây, Chủ sở hữu hồ sơ hoặc thiết bị có thể cấp cho ứng dụng bên thứ ba khả năng gọi các API quản lý chứng chỉ
DevicePolicyManagersau đây: - Theo dõi mức sử dụng dữ liệu. Giờ đây, Chủ sở hữu hồ sơ hoặc thiết bị có thể truy vấn số liệu thống kê về mức sử dụng dữ liệu xuất hiện trong phần Cài đặt > Mức sử dụng dữ liệu bằng cách sử dụng các phương thức
NetworkStatsManagermới. Chủ sở hữu hồ sơ sẽ tự động được cấp quyền truy vấn dữ liệu trên hồ sơ mà họ quản lý, trong khi Chủ sở hữu thiết bị sẽ có quyền truy cập vào dữ liệu sử dụng của người dùng chính được quản lý. - Quản lý quyền khi bắt đầu chạy:
Chủ sở hữu hồ sơ hoặc thiết bị có thể đặt chính sách cấp quyền cho tất cả các yêu cầu khi bắt đầu chạy của tất cả các ứng dụng bằng cách sử dụng
setPermissionPolicy(), để nhắc người dùng cấp quyền hoặc tự động cấp hoặc từ chối quyền một cách âm thầm. Nếu bạn đặt chính sách thứ hai, thì người dùng không thể sửa đổi lựa chọn do Chủ sở hữu hồ sơ hoặc Chủ sở hữu thiết bị đưa ra trong màn hình quyền của ứng dụng trong phần Cài đặt. - VPN trong phần Cài đặt: Giờ đây, bạn có thể thấy các ứng dụng VPN trong phần Cài đặt > Tuỳ chọn khác > VPN. Ngoài ra, các thông báo đi kèm với việc sử dụng VPN hiện cụ thể cho cách VPN đó được định cấu hình. Đối với Chủ sở hữu hồ sơ, thông báo sẽ cụ thể cho việc VPN được định cấu hình cho hồ sơ được quản lý, hồ sơ cá nhân hay cả hai. Đối với Chủ sở hữu thiết bị, thông báo sẽ cụ thể tuỳ thuộc vào việc VPN có được định cấu hình cho toàn bộ thiết bị hay không.
- Thông báo trạng thái công việc: Biểu tượng cặp tài liệu trên thanh trạng thái hiện xuất hiện bất cứ khi nào một ứng dụng trong hồ sơ được quản lý có hoạt động ở nền trước. Ngoài ra, nếu thiết bị được mở khoá trực tiếp cho hoạt động của một ứng dụng trong hồ sơ được quản lý, thì một thông báo ngắn sẽ xuất hiện để thông báo cho người dùng rằng họ đang ở trong hồ sơ công việc.