- cú pháp:
<permission android:description="string resource" android:icon="drawable resource" android:label="string resource" android:name="string" android:permissionGroup="string" android:protectionLevel=["normal" | "dangerous" | "signature" | ...] />
- có trong:
<manifest>
- mô tả:
- Khai báo quyền bảo mật có thể được dùng để giới hạn quyền truy cập vào một số thành phần hoặc tính năng của ứng dụng này hoặc các ứng dụng khác. Xem mục Quyền trong phần giới thiệu và tài liệu về Bảo mật và quyền để biết thêm thông tin về cách thức hoạt động của các quyền.
- thuộc tính:
android:description
- Nội dung mô tả về quyền mà người dùng có thể đọc, dài hơn và chứa nhiều thông tin hơn so với nhãn. Nội dung này có thể được hiển thị để giải thích quyền cho người dùng, ví dụ như khi người dùng được hỏi có nên cấp quyền cho một ứng dụng khác hay không.
Thuộc tính này phải được đặt làm tham chiếu đến tài nguyên chuỗi; không giống như thuộc tính
label
, thuộc tính này không được là chuỗi thô. android:icon
- Tham chiếu đến tài nguyên có thể vẽ cho biểu tượng mà đại diện cho quyền.
android:label
- Tên của một quyền có thể hiển thị cho người dùng.
Để thuận tiện, bạn có thể đặt nhãn trực tiếp dưới dạng chuỗi thô trong khi phát triển ứng dụng. Tuy nhiên, khi ứng dụng sẵn sàng để được xuất bản, bạn phải đặt nhãn dưới dạng tham chiếu đến tài nguyên chuỗi để có thể bản địa hoá nhãn như các chuỗi khác trong giao diện người dùng.
android:name
- Tên của quyền. Đây là tên sẽ được sử dụng khi viết mã để chỉ một quyền cụ thể, ví dụ như trong phần tử
<uses-permission>
và các thuộc tínhpermission
của các thành phần ứng dụng.Lưu ý: Hệ thống không cho phép nhiều gói khai báo một quyền có cùng tên, trừ trường hợp tất cả các gói được ký bằng cùng một chứng chỉ. Nếu một gói khai báo quyền, hệ thống sẽ không cho phép người dùng cài đặt các gói khác có cùng tên quyền, trừ trường hợp các gói đó được ký bằng cùng một chứng chỉ với gói đầu tiên.
Bạn nên đặt tiền tố cho tên gói của một ứng dụng thông qua cách đặt tên kiểu miền ngược. Tiền tố này phải theo sau là
.permission.
, sau đó là nội dung mô tả về khả năng mà quyền đó biểu thị ở phần trên của SNAKE_CASE. Ví dụ:com.example.myapp.permission.ENGAGE_HYPERSPACE
.Việc làm theo đề xuất này sẽ giúp tránh việc đặt tên cho những xung đột và giúp xác định rõ ràng chủ sở hữu cũng như ý định yêu cầu một quyền tuỳ chỉnh.
android:permissionGroup
- Chỉ định quyền này cho một nhóm. Giá trị của thuộc tính này là tên của nhóm và phải được khai báo bằng phần tử
<permission-group>
trong ứng dụng này hoặc một ứng dụng khác. Nếu bạn không thiết lập thuộc tính này thì quyền sẽ không thuộc về nhóm nào cả. android:protectionLevel
-
Biểu thị đặc điểm rủi ro tiềm ẩn trong quyền và cho biết quy trình mà hệ thống nên tuân theo khi xác định liệu có cần cấp quyền cho một ứng dụng yêu cầu quyền hay không.
Mỗi cấp độ bảo vệ bao gồm một loại quyền cơ sở và có số lượng cờ từ 0 trở lên. Ví dụ: cấp độ bảo vệ
"dangerous"
sẽ không có cờ. Ngược lại, cấp bảo vệ"signature|privileged"
là sự kết hợp của loại quyền cơ sở"signature"
và cờ"privileged"
.Bảng sau đây trình bày tất cả các loại quyền cơ sở. Để xem danh sách cờ, hãy xem phần
protectionLevel
.Giá trị Ý nghĩa " normal
"Giá trị mặc định. Quyền có mức độ rủi ro thấp hơn 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 riêng biệt ở cấp ứng dụng (rủi ro đối với các ứng dụng khác, hệ thống hoặc người dùng ở mức tối thiểu). Hệ thống tự động cấp loại quyền này cho ứng dụng yêu cầu quyền tại thời điểm cài đặt mà không cần xin phép người dùng đồng ý (mặc dù người dùng luôn có thể xem qua các quyền này trước khi cài đặt). " dangerous
"Quyền có mức độ rủi ro cao hơn cho phép ứng dụng yêu cầu quyền truy cập vào dữ liệu riêng tư của người dùng hoặc quyền kiểm soát thiết bị mà có thể ảnh hưởng tiêu cực đến người dùng. Vì loại quyền này có thể gây ra rủi ro tiềm ẩn nên hệ thống có thể không tự động cấp quyền đó cho ứng dụng yêu cầu. Ví dụ: bất kỳ quyền nguy hiểm nào mà ứng dụng yêu cầu có thể hiển thị cho người dùng và yêu cầu họ xác nhận trước khi tiếp tục, hoặc một số phương pháp khác có thể được thực hiện để tránh việc người dùng tự động cho phép ứng dụng yêu cầu truy cập. " signature
"Quyền mà hệ thống chỉ cấp khi ứng dụng yêu cầu được ký bằng cùng một chứng chỉ với ứng dụng đã khai báo quyền. Nếu các chứng chỉ khớp, hệ thống sẽ tự động cấp quyền mà không thông báo cho người dùng hoặc yêu cầu người dùng đồng ý thủ công. " signatureOrSystem
"Từ đồng nghĩa cũ của
"signature|privileged"
. Không được dùng trong API cấp 23 nữa.Quyền mà hệ thống chỉ cấp cho ứng dụng nằm trong một thư mục chuyên dụng trong ảnh hệ thống Android hoặc được ký bằng cùng một chứng chỉ với ứng dụng đã khai báo quyền. Hãy tránh dùng phương án này, vì cấp bảo vệ
signature
là đã đủ để đáp ứng hầu hết các nhu cầu và công việc bất kể ứng dụng được cài đặt ở đâu đi nữa. Quyền "signatureOrSystem
" được dùng cho một số trường hợp đặc biệt trong đó nhiều nhà cung cấp có các ứng dụng được tích hợp vào ảnh hệ thống và cần chia sẻ một số tính năng thủ công vì các nhà cung cấp đó được tạo cùng nhau.
- áp dụng từ:
- API cấp 1
- xem thêm:
<uses-permission>
<permission-tree>
<permission-group>
Nội dung và mã mẫu trên trang này phải tuân thủ các giấy phép như mô tả trong phần Giấy phép nội dung. Java và OpenJDK là nhãn hiệu hoặc nhãn hiệu đã đăng ký của Oracle và/hoặc đơn vị liên kết của Oracle.
Cập nhật lần gần đây nhất: 2022-05-12 UTC.
[{
"type": "thumb-down",
"id": "missingTheInformationINeed",
"label":"Thiếu thông tin tôi cần"
},{
"type": "thumb-down",
"id": "tooComplicatedTooManySteps",
"label":"Quá phức tạp/quá nhiều bước"
},{
"type": "thumb-down",
"id": "outOfDate",
"label":"Đã lỗi thời"
},{
"type": "thumb-down",
"id": "translationIssue",
"label":"Vấn đề về bản dịch"
},{
"type": "thumb-down",
"id": "samplesCodeIssue",
"label":"Vấn đề về mẫu/mã"
},{
"type": "thumb-down",
"id": "otherDown",
"label":"Khác"
}]
[{
"type": "thumb-up",
"id": "easyToUnderstand",
"label":"Dễ hiểu"
},{
"type": "thumb-up",
"id": "solvedMyProblem",
"label":"Giúp tôi giải quyết được vấn đề"
},{
"type": "thumb-up",
"id": "otherUp",
"label":"Khác"
}]