Auf Geräten mit Android 11 oder höher unterstützt das Android-Framework Systemkameras, bei denen es sich um Kamerageräte handelt, die nur für Prozesse mit der android.permission.SYSTEM_CAMERA
und regulären Kameraberechtigungen sichtbar sind. Die in Android 11 eingeführte Berechtigung android.permission.SYSTEM_CAMERA
hat eine Schutzebene von system|signature
. Dies bedeutet, dass nur Apps, die auf der Systempartition installiert oder mit demselben Zertifikat wie das System signiert sind, diese Berechtigung erteilt werden kann. Öffentliche Apps von Drittanbietern können nicht auf Systemkameras zugreifen.
Systemkameras sind nützlich für Gerätehersteller, die Funktionen implementieren möchten, die Zugriff auf eine Kamera erfordern, aber auch auf privilegierte oder System-Apps beschränkt sind.
Da System-Apps, denen die Berechtigung android.permission.SYSTEM_CAMERA gewährt wurde, auch die android.permission.SYSTEM_CAMERA
haben android.permission.CAMERA
, können Benutzer die normalen CAMERA
-Berechtigungen widerrufen, um zu verhindern, dass eine solche App auf die Kameras auf dem Gerät zugreift.
Implementierung
Um ein bestimmtes Kameragerät zu einer Systemkamera zu machen, muss die Kamera-HAL ANDROID_REQUEST_AVAILABLE_CAPABILITIES_SYSTEM_CAMERA
in ihrer Fähigkeitsliste ankündigen.
Um eine App zu erstellen, die Zugriff auf eine Systemkamera hat, muss die App in der gerätespezifischen Datei privapp-permissions.xml
auf die Whitelist gesetzt werden, die die Apps angibt, denen die Berechtigung android.permission.SYSTEM_CAMERA
gewährt werden muss.
Validierung
Um sicherzustellen, dass keine Systemkameras auf dem Gerät von einer öffentlichen App erkannt werden können, führen Sie den android.permission.cts.Camera2PermissionTest.testSystemCameraDiscovery
CTS-Test aus.
Alle Kamera-CTS-Tests werden auf Systemkamerageräten ausgeführt.