Google cam kết thúc đẩy công bằng chủng tộc cho Cộng đồng người da đen. Xem cách thực hiện.

Quyền thời gian chạy

Trong Android 6.0 trở lên, mô hình quyền ứng dụng Android được thiết kế để làm cho quyền dễ hiểu, hữu ích và an toàn hơn cho người dùng. Mô hình di chuyển các ứng dụng Android đòi hỏi quyền nguy hiểm (xem điều khoản bị ảnh hưởng ) từ một mô hình cho phép cài đặt thời gian để một mô hình cho phép thời gian chạy:

  • Quyền thời gian cài đặt

    (Android 5.1 và thấp hơn) Người dùng cấp quyền nguy hiểm đến một ứng dụng khi họ cài đặt hoặc cập nhật các ứng dụng. Các nhà sản xuất thiết bị và nhà cung cấp dịch vụ có thể cài đặt sẵn ứng dụng với các quyền được tích hợp sẵn mà không cần thông báo cho người dùng.

  • Quyền thời gian chạy

    (Android 6,0-9) Người dùng cấp quyền nguy hiểm đối với một ứng dụng khi ứng dụng đang chạy. Thời điểm quyền được yêu cầu (chẳng hạn như khi ứng dụng khởi chạy hoặc khi người dùng truy cập vào một tính năng cụ thể) tùy thuộc vào ứng dụng, nhưng người dùng cấp / từ chối ứng dụng truy cập vào các nhóm quyền cụ thể. OEM / nhà cung cấp dịch vụ có thể cài đặt sẵn ứng dụng, nhưng không thể tích hợp trước các quyền trừ khi họ thực hiện quy trình ngoại lệ. (Xem Tạo ngoại lệ .)

    (Android 10) Người dùng thấy tăng tính minh bạch và có thể kiểm soát mà ứng dụng có quyền runtime nhận dạng hoạt động (AR). Người dùng được thúc đẩy bởi các điều khoản runtime thoại cho một trong hai luôn luôn cho phép, cho phép thời gian sử dụng, hoặc từ chối quyền. Trên một bản nâng cấp hệ điều hành Android 10, điều khoản dành cho các ứng dụng được giữ lại, nhưng người dùng có thể đi vào Cài đặt và thay đổi chúng.

Các quyền trong thời gian chạy ngăn các ứng dụng truy cập vào dữ liệu riêng tư mà không có sự đồng ý của người dùng, đồng thời cung cấp cho họ ngữ cảnh bổ sung và khả năng hiển thị về các loại quyền mà ứng dụng đang tìm kiếm hoặc đã được cấp. Mô hình thời gian chạy khuyến khích các nhà phát triển giúp người dùng hiểu lý do tại sao các ứng dụng yêu cầu các quyền được yêu cầu và cung cấp tính minh bạch cao hơn để người dùng có thể đưa ra quyết định tốt hơn về việc cấp hoặc từ chối chúng.

Quyền bị ảnh hưởng

Android 6.0 trở lên yêu cầu các quyền nguy hiểm để sử dụng mô hình quyền thời gian chạy. Quyền nguy hiểm là quyền có nguy cơ cao hơn (chẳng hạn như READ_CALENDAR ) mà cấp yêu cầu các ứng dụng truy cập vào dữ liệu người dùng cá nhân, hoặc kiểm soát một thiết bị, có thể ảnh hưởng xấu đến người sử dụng. Để xem danh sách các quyền nguy hiểm, hãy chạy lệnh:

adb shell pm list permissions -g -d

Android 6.0 và cao hơn không làm thay đổi hành vi của quyền bình thường . Đây là tất cả các quyền không nguy hiểm bao gồm các quyền thông thường, hệ thống và chữ ký. Quyền bình thường là quyền có nguy cơ thấp hơn (chẳng hạn như SET_WALLPAPER ) mà cấp yêu cầu các ứng dụng truy cập vào các ứng dụng cấp cách ly đặc trưng với rủi ro tối thiểu để các ứng dụng khác, hệ thống, hoặc người dùng. Như trong các bản phát hành Android 5.1 trở xuống, hệ thống tự động cấp các quyền bình thường cho ứng dụng yêu cầu khi cài đặt và không nhắc người dùng phê duyệt. Để biết chi tiết về điều khoản, xem <permission> yếu tố tài liệu.

Hạn chế cứng và mềm trong Android 10

Ngoài việc nguy hiểm, một sự cho phép có thể bị hạn chế cứng hoặc hạn chế mềm. Trong cả hai trường hợp, quyền hạn chế cũng phải được đưa vào danh sách trắng. Các hạn chế cứng không có trong danh sách cho phép hoạt động khác với các hạn chế mềm không có trong danh sách cho phép:

  • (Hạn chế cứng) Apps có thể không được cấp phép mà không phải là danh sách trắng.
  • (Hạn chế Soft) Ứng dụng không danh sách trắng cư xử theo sự cho phép cụ thể mà họ yêu cầu. Hành vi được mô tả trong tài liệu công khai về quyền được yêu cầu.

Khi cài đặt một ứng dụng, trình cài đặt (chẳng hạn như Cửa hàng Google Play) có thể chọn không liệt kê các quyền hạn chế cho ứng dụng vào danh sách trắng. Quyền bị hạn chế bởi nền tảng và chỉ được cấp nếu ứng dụng đáp ứng các tiêu chí đặc biệt cho mỗi chính sách nền tảng. Ví dụ về các loại quyền hạn chế cứng bao gồm quyền SMS và Nhật ký cuộc gọi.

Danh sách trắng xảy ra trong quá trình cài đặt và khi

  • một ứng dụng đã được cài đặt trong quá trình nâng cấp Android 9 lên 10.
  • một quyền được tích hợp sẵn hoặc một ứng dụng được cài đặt sẵn.
  • một quyền là bắt buộc đối với một vai trò đã được xác định để đưa quyền vào danh sách trắng.
  • trình cài đặt (chẳng hạn như Cửa hàng Google Play) đánh dấu quyền là danh sách trắng.

Người dùng không thể đưa các quyền vào danh sách trắng theo cách thủ công.

Yêu cầu

Mô hình quyền thời gian chạy áp dụng cho tất cả các ứng dụng, bao gồm các ứng dụng được cài đặt sẵn và các ứng dụng được phân phối tới thiết bị như một phần của quá trình thiết lập. Yêu cầu phần mềm ứng dụng bao gồm:

  • Mô hình quyền thời gian chạy phải nhất quán trên tất cả các thiết bị chạy Android 6.0 trở lên. Điều này được thực thi bởi các bài kiểm tra Bộ kiểm tra tính tương thích của Android (CTS).
  • Ứng dụng phải nhắc người dùng cấp quyền cho ứng dụng trong thời gian chạy. Để biết chi tiết, xem các ứng dụng cập nhật . Các ngoại lệ có giới hạn có thể được cấp cho các ứng dụng và trình xử lý mặc định cung cấp chức năng cơ bản của thiết bị cơ bản cho hoạt động dự kiến ​​của thiết bị. (Ví dụ, ứng dụng Dialer mặc định của thiết bị để xử lý ACTION_CALL có thể truy cập cho phép điện thoại.) Để biết chi tiết, xem Tạo ngoại lệ .
  • Các ứng dụng được tải trước có quyền nguy hiểm phải nhắm mục tiêu API cấp 23 và duy trì mô hình quyền thời gian chạy. Nghĩa là, luồng giao diện người dùng trong quá trình cài đặt ứng dụng không được sai lệch so với việc triển khai AOSP của PermissionController, người dùng có thể thu hồi các quyền nguy hiểm của các ứng dụng được cài đặt sẵn, v.v.
  • Các ứng dụng không có đầu phải sử dụng một hoạt động để yêu cầu quyền hoặc chia sẻ UID với một ứng dụng khác có các quyền cần thiết. Để biết chi tiết, xem các ứng dụng Headless .

Quyền di chuyển

Các quyền được cấp cho các ứng dụng trên Android 5.x vẫn được cấp sau khi cập nhật lên Android 6.0 trở lên, nhưng người dùng có thể thu hồi các quyền đó bất kỳ lúc nào.

Trong bản cập nhật Android 9 đến 10, tất cả các quyền bị hạn chế cứng đều được đưa vào danh sách cho phép. Để biết chi tiết về việc thực hiện các điều khoản chia foreground / nền, xem Android 10 thay đổi riêng tư , bắt đầu với vị trí Yêu cầu nền .

Hội nhập

Khi tích hợp mô hình quyền thời gian chạy ứng dụng cho Android 6.0 trở lên, bạn phải cập nhật các ứng dụng được cài đặt sẵn để hoạt động với mô hình mới. Bạn cũng có thể xác định trường hợp ngoại lệ cho các ứng dụng là xử lý mặc định / nhà cung cấp cho các chức năng cốt lõi, xác định quyền tùy chỉnh, và tùy chỉnh các chủ đề được sử dụng trong PermissionController ứng dụng.

Cập nhật ứng dụng

Các ứng dụng trên hình ảnh hệ thống và các ứng dụng được cài đặt sẵn không được tự động cài sẵn quyền. Chúng tôi khuyến khích bạn làm việc với các nhà phát triển ứng dụng được cài đặt sẵn (OEM, vận chuyển, và bên thứ ba) để thực hiện những sửa đổi ứng dụng cần sử dụng chủ trương phát triển . Cụ thể, bạn phải đảm bảo rằng các ứng dụng cài đặt sẵn được sửa đổi để tránh sự cố và các vấn đề khác khi người dùng thu hồi quyền.

Các ứng dụng được tải trước

Trong Android 9 trở xuống, các ứng dụng được tải trước sử dụng quyền nguy hiểm phải nhắm mục tiêu API cấp 23 trở lên và duy trì mô hình quyền AOSP của Android 6.0 trở lên. Ví dụ, dòng chảy UI trong một cài đặt ứng dụng không phải đi chệch khỏi việc thực hiện AOSP của PermissionController . Người dùng thậm chí có thể thu hồi các quyền nguy hiểm của các ứng dụng được cài đặt sẵn.

Trong Android 6.0 đến 9, một số quyền được cấp trong quá trình cài đặt. Tuy nhiên, bắt đầu từ năm 10, quá trình cài đặt lưu lượng (được thực hiện bởi Package Installer ứng dụng) là một chức năng riêng biệt từ quyền cấp (trong Permission Controller ứng dụng).

Ứng dụng không đầu

Chỉ các hoạt động mới có thể yêu cầu quyền. Dịch vụ không thể yêu cầu quyền trực tiếp.

  • Trong Android 5.1 trở về trước, các ứng dụng không có đầu có thể yêu cầu quyền khi được cài đặt hoặc nếu chúng được cài đặt sẵn mà không cần sử dụng hoạt động.
  • Trong Android 6.0 trở lên, các ứng dụng không có đầu phải sử dụng một trong các phương pháp sau để yêu cầu quyền:
    • Thêm một hoạt động để yêu cầu quyền. (Đây là phương pháp ưa thích.)
    • Chia sẻ UID với một ứng dụng khác có các quyền cần thiết. Chỉ sử dụng phương pháp này khi bạn cần nền tảng xử lý nhiều APK như một ứng dụng duy nhất.

Mục đích là để tránh gây nhầm lẫn cho người dùng với các yêu cầu cấp phép xuất hiện ngoài ngữ cảnh.

Tùy chỉnh giao diện người dùng PackageInstaller

Nếu muốn, bạn có thể tùy chỉnh các chủ đề Quyền UI bằng cách cập nhật các chủ đề thiết bị mặc định ( Theme.DeviceDefault.SettingsTheme.DeviceDefault.Light.Dialog.NoActionBar ) được sử dụng bởi PackageInstaller. Tuy nhiên, vì tính nhất quán là rất quan trọng đối với các nhà phát triển ứng dụng, bạn không thể tùy chỉnh vị trí, vị trí và các quy tắc về thời điểm Giao diện người dùng Quyền xuất hiện.

Bao gồm dây cho các ngôn ngữ bổ sung, đóng góp các dây để AOSP.

Tạo ngoại lệ

Bạn có thể pre-cấp quyền truy cập vào các ứng dụng được xử lý mặc định hoặc cung cấp dịch vụ cho các chức năng hệ điều hành cốt lõi bằng cách sử dụng DefaultPermissionGrantPolicy.java lớp trong PackageManager. Ví dụ:

ACTION_CALL (Dialer) Default
Phone, Contacts, SMS, Microphone
SMS_DELIVER_ACTION (SMS/MMS) Default
Phone, Contacts, SMS

Xác định quyền tùy chỉnh

Bạn có thể xác định quyền tùy chỉnh và các nhóm như bình thường, nguy hiểm và thêm quyền OEM / Carrier cụ thể cho các nhóm quyền hiện có, cũng giống như bạn có thể trong Android 5.x và phát hành trước đó.

Trong Android 6.0 trở lên, nếu bạn thêm quyền nguy hiểm mới, quyền đó phải được xử lý giống như các quyền nguy hiểm khác (được yêu cầu trong thời gian chạy ứng dụng và người dùng có thể thu hồi). Đặc biệt:

  • Bạn có thể thêm các quyền mới vào một nhóm hiện tại, nhưng bạn không thể sửa đổi ánh xạ AOSP về các quyền nguy hiểm và các nhóm quyền nguy hiểm. (Nói cách khác, bạn không thể xóa quyền khỏi một nhóm và gán cho một nhóm khác).
  • Bạn có thể thêm nhóm quyền mới trong các ứng dụng được cài đặt trên thiết bị, nhưng bạn không thể thêm nhóm quyền mới trong tệp kê khai nền tảng.

Kiểm tra quyền

Android bao gồm các bài kiểm tra Bộ kiểm tra khả năng tương thích (CTS) để xác minh các quyền cá nhân được ánh xạ tới các nhóm chính xác. Vượt qua các bài kiểm tra này là một yêu cầu đối với khả năng tương thích với Android 6.0 và CTS mới hơn.