Camera.open() получает "Доступ для <package> ограничен"
- Проблема происходит на Nokia 6 с Android 7.1.1
- Разрешение получено
AppOpsManager#checkOp(AppOpsManager.OPSTR_CAMERA, Process.myUid(), getPackageName())
возвращаетсяAppOpsManager#MODE_ALLOWED
Тем не менее при попытке Camera.open(я) для проверки свойств камеры я получаю
I/CameraService: Camera 0: доступ к "пакету" ограничен
По-видимому, это может произойти только [1], если пакет или uId приложения были явно ограничены при запуске AppOpsManager#OP_CAMERA. Но почему это случилось? После AppOpsManager#checkOp
говорит AppOpsManager#MODE_ALLOWED
Образец кода
for (int i = 0; i < numCameras; ++i) {
List<Size> supportedSizes = null;
List<int[]> supportedFpsRanges = null;
Camera camera = null;
try {
camera = Camera.open(i);
Parameters parameters = camera.getParameters();
supportedSizes = parameters.getSupportedPreviewSizes();
supportedFpsRanges = getFpsRangesRobust(parameters);
} catch (Exception e) {
...
} finally {
if (camera != null) {
camera.release();
}
}
2 ответа
Решение
По-видимому, это проблема устройства. Nokia 6 / TA-1000, Android 7.1.1
Сценарий
- попробуйте использовать камеру
- приложение запрашивает разрешение, нажмите "Запретить"
- попробуйте использовать камеру
- приложение запрашивает разрешение, нажмите Разрешить
- Ошибка в logcat, камера не работает
Воспроизводится с любым другим приложением, включая приложение камеры по умолчанию.
Убедитесь, что вы добавили эту строку в манифест приложения.
android:foregroundServiceType="camera"