Google cam kết thúc đẩy công bằng chủng tộc cho các cộng đồng Đen. Xem thế nào.
Trang này được dịch bởi Cloud Translation API.
Switch to English

Quyền thời gian chạy

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

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

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

  • Quyền chạy

    ( Android 6.0 - 9 ) Người dùng cấp quyền nguy hiểm cho ứng dụng khi ứng dụng đang chạy. Khi 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 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 quyền truy cập ứng dụng vào các nhóm quyền cụ thể. Các OEM / nhà mạng có thể cài đặt sẵn các ứng dụng, nhưng không thể cấp phép trước trừ khi họ trải qua quá trình ngoại lệ. (Xem phần Tạo ngoại lệ .)

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

Quyền thời gian chạy ngăn ứ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 và cung cấp cho họ ngữ cảnh bổ sung và khả năng hiển thị đối với 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 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 quyền nguy hiểm để sử dụng mô hình quyền thời gian chạy. READ_CALENDAR nguy hiểm là các quyền có rủi ro cao hơn (chẳng hạn như READ_CALENDAR ) cho phép các ứng dụng yêu cầu quyền truy cập vào dữ liệu người dùng riêng tư hoặc kiểm soát thiết bị, có thể tác động tiêu cực đến người 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 trở lên không thay đổi hành vi của các quyền thông 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ý. Các quyền thông thường là các quyền có rủi ro thấp hơn (như SET_WALLPAPER ) cho phép các ứng dụng yêu cầu quyền truy cập vào các tính năng cấp ứng dụng bị cô lập với rủi ro tối thiểu cho các ứng dụng khác, hệ thống hoặc người dùng. Như trong Android 5.1 và các bản phát hành thấp hơn, hệ thống sẽ tự động cấp 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ề các quyền, hãy xem tài liệu phần tử <allow> .

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

Ngoài việc nguy hiểm, 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, sự cho phép 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 trắng hoạt động khác với các hạn chế mềm không có trong danh sách trắng:

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

Khi cài đặt một ứng dụng, trình cài đặt (như Google Play Store) có thể chọn không đưa vào danh sách trắng các quyền hạn chế cho ứng dụng. Quyền bị hạn chế bởi nền tảng và chỉ được cấp nếu một ứ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ế 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 nào

  • một ứng dụng đã được cài đặt trong quá trình nâng cấp Android 9-10.
  • một quyền được cấp phép hoặc một ứng dụng được cài đặt sẵn.
  • cần có sự cho phép đối với một vai trò đã được xác định để đưa vào danh sách trắng sự cho phép.
  • trình cài đặt (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ể tự cấp quyền danh sách trắng.

Yêu cầu

Mô hình cấp phép 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 và ứng dụng được cài đặt sẵn được gửi đến thiết bị như một phần của quy trình thiết lập. Yêu cầu phần mềm ứng dụng bao gồm:

  • Mô hình cấp phép 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 thi hành bằng các bài kiểm tra Bộ tương thích Android (CTS).
  • Ứng dụng phải nhắc người dùng cấp quyền cho ứng dụng khi chạy. Để biết chi tiết, xem Cập nhật ứng dụng . Các ngoại lệ 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 cho thiết bị cơ bản cho hoạt động dự kiến ​​của thiết bị. (Ví dụ: ứng dụng Trình quay số mặc định của thiết bị để xử lý ACTION_CALL có thể có quyền truy cập quyền của Điện thoại.) Để biết chi tiết, hãy xem Tạo ngoại lệ .
  • Các ứng dụng được tải sẵn có quyền nguy hiểm phải nhắm mục tiêu API cấp 23 và duy trì mô hình cấp phép thời gian chạy. Nghĩa là, luồng UI trong quá trình cài đặt ứng dụng không được đi chệch khỏi triển khai AOSP của PermissionControll, 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 đầ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 Không đầu .

Quyền di chuyển

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 cứ lúc nào.

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

Hội nhập

Khi tích hợp mô hình cấp phép 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 ngoại lệ cho các ứng dụng là trình xử lý / nhà cung cấp mặc định cho chức năng cốt lõi, xác định quyền tùy chỉnh và tùy chỉnh chủ đề được sử dụng trong ứng dụng PermissionController .

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 tự động cấp 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, nhà cung cấp và bên thứ ba) để thực hiện các sửa đổi ứng dụng cần thiết theo hướng dẫn của nhà phát triển . Cụ thể, bạn phải đảm bảo rằng các ứng dụng được cài đặt sẵn được sửa đổi để tránh sự cố và các sự cố khác khi người dùng thu hồi quyền.

Ứng dụng được tải sẵn

Trong Android 9 trở xuống, các ứng dụng được tải sẵn sử dụng các 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 cấp phép AOSP Android 6.0 trở lên. Ví dụ: luồng UI trong quá trình cài đặt ứng dụng không được đi chệch khỏi triển khai 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ừ 10, luồng cài đặt (được thực hiện bởi ứng dụng Package Installer ) là một chức năng riêng biệt với cấp quyền (trong ứng dụng Trình Permission Controller ).

Ứng dụng không đầu

Chỉ các hoạt động 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 đầ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 một hoạt động.
  • Trong Android 6.0 trở lên, các ứng dụng không đầ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 dưới dạng một ứng dụng.

Mục tiêu 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 GóiInstaller

Nếu muốn, bạn có thể tùy chỉnh 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 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à quy tắc khi Giao diện người dùng quyền xuất hiện.

Để bao gồm các chuỗi cho các ngôn ngữ bổ sung, hãy đóng góp các chuỗi vào AOSP.

Tạo ngoại lệ

Bạn có thể cấp quyền trước cho các ứng dụng là trình xử lý mặc định hoặc nhà cung cấp cho chức năng hệ điều hành cốt lõi bằng cách sử dụng lớp DefaultPermissionGrantPolicy.java 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 các quyền và nhóm tùy chỉnh là bình thường hoặc nguy hiểm và thêm các quyền cụ thể OEM / Carrier cho các nhóm quyền hiện có, giống như bạn có thể trong Android 5.x và các bản phát hành trước đó.

Trong Android 6.0 trở lên, nếu bạn thêm một quyền nguy hiểm mới, nó phải được xử lý theo cách tương tự 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ể hủy bỏ). Đặc biệt:

  • Bạn có thể thêm 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 của 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 từ một nhóm và gán cho nhóm khác).
  • Bạn có thể thêm các 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 các nhóm quyền mới trong bảng kê khai nền tảng.

Kiểm tra quyền

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