App-Berechtigungen deklarieren

Wie bereits im Workflow zur Verwendung von Berechtigungen, wenn deine App eine App anfordert Berechtigungen, musst du diese in der Manifestdatei deiner App deklarieren. Diese Deklarationen helfen App-Shops und Nutzern, die verschiedenen Berechtigungen zu verstehen die Ihre App anfordern könnte.

Wie Sie eine Berechtigung anfordern, hängt von der Art der Berechtigung:

Erklärung zum App-Manifest hinzufügen

Um eine Berechtigung zu erklären, die von deiner App möglicherweise angefordert wird, füge die entsprechenden <uses-permission> Element in in der Manifest-Datei Ihrer App. Beispiel: Eine App, die auf die Kamera zugreifen muss, enthält diese Zeile in AndroidManifest.xml:

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

Hardware als optional deklarieren

Einige Berechtigungen, z. B. CAMERA, lassen Sie Ihre App Zugriff auf Hardwarekomponenten, die nur auf einigen Android-Geräten vorhanden sind. Wenn Ihre App deklariert, dass eines dieser Hardware-bezogenen Berechtigungen Prüfen, ob deine App auch auf Geräten ohne diese Funktion ausgeführt werden kann Hardware. In den meisten Fällen ist die Hardware optional. Daher ist es besser, die als optional festlegen, indem Sie android:required auf false in Ihrem <uses-feature>-Deklaration als wie im folgenden Code-Snippet einer AndroidManifest.xml-Datei dargestellt:

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

Hardwareverfügbarkeit ermitteln

Wenn du Hardware als optional angibst, kann deine App auf einem Gerät ohne diese Hardware. Um zu prüfen, ob ein Gerät eine bestimmte verwendet den hasSystemFeature() an, wie im folgenden Code-Snippet gezeigt. Wenn die Hardware nicht verfügbar ist, diese Funktion in Ihrer App ordnungsgemäß deaktivieren.

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

Deklarieren Sie Berechtigungen nach API-Ebene

Die Deklaration einer Berechtigung nur auf Geräten, die Laufzeitberechtigungen unterstützen, Geräte mit Android 6.0 (API-Level 23) oder höher – einschließlich der <uses-permission-sdk-23> anstelle des <uses-permission>-Element.

Wenn Sie eines dieser Elemente verwenden, können Sie das Attribut maxSdkVersion um anzuzeigen, dass Geräte mit einer höheren Android-Version für den angegebenen Wert keine bestimmte Berechtigung erforderlich ist. So können Sie Unnötige Berechtigungen entfernen und gleichzeitig Kompatibilität sicherstellen für ältere Geräte.

Ihre App kann beispielsweise Medieninhalte wie Fotos anzeigen oder Videos, die der Nutzer in Ihrer App erstellt hat. In dieser Situation müssen Sie das READ_EXTERNAL_STORAGE auf Geräten, die Android 10 (API-Level 29) oder höher ausführen, Android 10 oder höher. Aus Gründen der Kompatibilität mit älteren Geräten können Sie die Berechtigung READ_EXTERNAL_STORAGE deklarieren und android:maxSdkVersion auf 28.