Khai báo quyền cho ứng dụng

Như đã đề cập trong quy trình công việc để sử dụng quyền, nếu ứng dụng của bạn yêu cầu quyền cho ứng dụng, bạn phải khai báo các quyền này trong tệp kê khai của ứng dụng. Nội dung khai báo này giúp cửa hàng ứng dụng và người dùng nắm được tập hợp các quyền mà ứng dụng của bạn có thể yêu cầu.

Quá trình thực hiện một yêu cầu cấp quyền phụ thuộc vào loại quyền:

Thêm nội dung khai báo vào tệp kê khai ứng dụng

Để khai báo quyền mà ứng dụng của bạn có thể yêu cầu, hãy đưa phần tử <uses-permission> thích hợp vào tệp kê khai của ứng dụng. Ví dụ: Một ứng dụng cần truy cập vào máy ảnh sẽ có dòng này trong tệp kê khai:

AndroidManifest.xml

<manifest ...>
    <uses-permission android:name="android.permission.CAMERA"/>
    <application ...>
        ...
    </application>
</manifest>

Khai báo phần cứng là tuỳ chọn

Một số quyền, chẳng hạn như CAMERA, cho phép ứng dụng của bạn truy cập các phần cứng mà chỉ một số thiết bị Android mới có. Nếu ứng dụng của bạn khai báo một trong các quyền liên quan đến phần cứng này, hãy xem xét khả năng ứng dụng của bạn hoàn toàn không chạy được trên thiết bị không có phần cứng đó. Trong hầu hết các trường hợp, phần cứng là tuỳ chọn. Vì vậy, bạn nên khai báo phần cứng là tuỳ chọn bằng cách đặt android:required thành false trong nội dung khai báo <uses-feature> của bạn, như trong đoạn mã sau:

AndroidManifest.xml

<manifest ...>
    <application>
        ...
    </application>
    <uses-feature android:name="android.hardware.camera"
                  android:required="false" />
<manifest>

Xác định tính sẵn có của phần cứng

Nếu bạn khai báo phần cứng là tuỳ chọn, thì ứng dụng của bạn có thể chạy trên thiết bị không có phần cứng đó. Để kiểm tra xem thiết bị có một phần cứng cụ thể hay không, hãy sử dụng phương thức hasSystemFeature(), như trong đoạn mã sau đây. Nếu không có phần cứng, hãy linh hoạt tắt tính năng đó trong ứng dụng của bạn.

Kotlin

// Check whether your app is running on a device that has a front-facing camera.
if (applicationContext.packageManager.hasSystemFeature(
        PackageManager.FEATURE_CAMERA_FRONT)) {
    // Continue with the part of your app's workflow that requires a
    // front-facing camera.
} else {
    // Gracefully degrade your app experience.
}

Java

// Check whether your app is running on a device that has a front-facing camera.
if (getApplicationContext().getPackageManager().hasSystemFeature(
        PackageManager.FEATURE_CAMERA_FRONT)) {
    // Continue with the part of your app's workflow that requires a
    // front-facing camera.
} else {
    // Gracefully degrade your app experience.
}

Khai báo quyền theo cấp độ API

Để chỉ khai báo quyền trên các thiết bị hỗ trợ quyền khi bắt đầu chạy, tức là các thiết bị chạy Android 6.0 (API cấp 23) trở lên, hãy bao gồm phần tử uses-permission-sdk-23 thay vì phần tử uses-permission.

Khi sử dụng một trong hai phần tử này, bạn có thể đặt thuộc tính maxSdkVersion. Thuộc tính này cho biết các thiết bị đang chạy phiên bản cao hơn maxSdkVersion không cần một quyền cụ thể.