App-Berechtigungen deklarieren

Wie im Workflow zur Verwendung von Berechtigungen erwähnt, müssen Sie diese Berechtigungen in der Manifestdatei Ihrer App deklarieren, wenn Ihre App App-Berechtigungen anfordert. Mithilfe dieser Deklarationen können App-Shops und Nutzer besser nachvollziehen, welche Berechtigungen von Ihrer App angefordert werden.

Das Verfahren zum Anfordern einer Berechtigung hängt von der Art der Berechtigung ab:

Erklärung zum App-Manifest hinzufügen

Wenn du eine Berechtigung deklarieren möchtest, die deine App möglicherweise anfordern soll, füge das entsprechende <uses-permission>-Element in die Manifestdatei deiner App ein. Beispielsweise enthält eine App, die auf die Kamera zugreifen muss, diese Zeile in AndroidManifest.xml:

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

Hardware als optional deklarieren

Einige Berechtigungen wie CAMERA erlauben deiner App, auf Hardware zuzugreifen, die nur einige Android-Geräte haben. Wenn Ihre Anwendung eine dieser hardwarebezogenen Berechtigungen deklariert, prüfen Sie, ob Ihre Anwendung noch auf einem Gerät ohne diese Hardware ausgeführt werden kann. In den meisten Fällen ist die Hardware optional. Daher ist es besser, die Hardware als optional zu deklarieren. Setzen Sie dazu android:required in Ihrer <uses-feature>-Deklaration auf false, wie im folgenden Code-Snippet aus einer AndroidManifest.xml-Datei gezeigt:

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

Hardwareverfügbarkeit bestimmen

Wenn du Hardware als optional angibst, kann deine App auf einem Gerät ohne diese Hardware ausgeführt werden. Mit der Methode hasSystemFeature() können Sie prüfen, ob ein Gerät eine bestimmte Hardware hat, wie im folgenden Code-Snippet gezeigt. Wenn die Hardware nicht verfügbar ist, deaktiviere diese Funktion ordnungsgemäß in deiner App.

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

Wenn Sie eine Berechtigung nur auf Geräten deklarieren möchten, die Laufzeitberechtigungen unterstützen, also auf Geräten mit Android 6.0 (API-Level 23) oder höher, müssen Sie das Element <uses-permission-sdk-23> anstelle des Elements <uses-permission> einfügen.

Wenn Sie eines dieser Elemente verwenden, können Sie mit dem Attribut maxSdkVersion angeben, dass Geräte mit einer Android-Version, die höher als der angegebene Wert ist, keine bestimmte Berechtigung benötigen. So können Sie unnötige Berechtigungen beseitigen und gleichzeitig für Kompatibilität mit älteren Geräten sorgen.

Beispielsweise kann Ihre App Medieninhalte wie Fotos oder Videos anzeigen, die der Nutzer in der App erstellt hat. In diesem Fall müssen Sie die Berechtigung READ_EXTERNAL_STORAGE nicht auf Geräten mit Android 10 (API-Level 29) oder höher verwenden, solange Ihre App auf Android 10 oder höher ausgerichtet ist. Aus Gründen der Kompatibilität mit älteren Geräten kannst du die Berechtigung READ_EXTERNAL_STORAGE jedoch deklarieren und android:maxSdkVersion auf 28 setzen.