Deklarowanie uprawnień aplikacji

Jak wspomnieliśmy w przepływie pracy korzystania z usługi uprawnienia, jeśli aplikacja prosi o dostęp uprawnień, musisz zadeklarować je w pliku manifestu aplikacji. Te deklaracje ułatwiają sklepom z aplikacjami i użytkownikom zrozumienie zestawu uprawnień których może żądać aplikacja.

Proces prośby o przyznanie uprawnień zależy od typu uprawnienie:

.

Dodaj deklarację do pliku manifestu aplikacji

Aby zadeklarować uprawnienia, o które może prosić aplikacja, dodaj odpowiednie <uses-permission> w plik manifestu aplikacji. Na przykład: aplikacja, która potrzebuje dostępu do aparatu zawiera ten wiersz w języku AndroidManifest.xml:

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

Zadeklarowanie sprzętu jako opcjonalnego

Niektóre uprawnienia, na przykład CAMERA, pozwól aplikacji To sprzęt, który jest dostępny tylko w niektórych urządzeniach z Androidem. Jeśli Twoja aplikacja deklaruje jedno z tych powiązanych ze sprzętem uprawnienia, Zastanów się, czy aplikacja nadal może działać na urządzeniu, które jej nie ma. sprzęt. W większości przypadków sprzęt jest opcjonalny, więc lepiej zadeklarować parametr sprzętowy jako opcjonalny, ustawiając android:required na false w <uses-feature>, w tym fragmencie kodu z pliku AndroidManifest.xml:

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

Określanie dostępności sprzętu

Jeśli zadeklarujesz sprzęt jako opcjonalny, aplikacja może działać na które nie ma takiego sprzętu. Aby sprawdzić, czy urządzenie ma określony skorzystaj z hasSystemFeature() zgodnie z poniższym fragmentem kodu. Jeśli sprzęt nie jest dostępny, płynnie ją wyłączyć.

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.
}

Deklarowanie uprawnień według poziomu interfejsu API

Aby zadeklarować uprawnienie tylko na urządzeniach, które obsługują uprawnienia w czasie działania aplikacji – urządzenia z Androidem 6.0 (poziom interfejsu API 23) lub nowszym <uses-permission-sdk-23> zamiast Element <uses-permission>.

Jeśli używasz jednego z tych elementów, możesz ustawić atrybut maxSdkVersion w celu wskazania, że urządzenia z Androidem w wersji nowszej niż określona wartość nie wymaga specjalnych uprawnień. Dzięki temu możesz: wyeliminowanie niepotrzebnych uprawnień przy jednoczesnym zapewnieniu zgodności starszych urządzeń.

Na przykład aplikacja może wyświetlać treści multimedialne, takie jak zdjęcia utworzone przez użytkownika podczas korzystania z Twojej aplikacji. W takim przypadku nie musisz używać READ_EXTERNAL_STORAGE na urządzeniach, które mieć Androida w wersji 10 (poziom interfejsu API 29) lub nowszego, o ile Twoja aplikacja jest kierowana na Androida w wersji 10 lub nowszej. Jednak dla zapewnienia zgodności ze starszymi urządzeniami możesz zadeklarować uprawnienie READ_EXTERNAL_STORAGE i ustawić android:maxSdkVersion do 28.