import 'dart:developer'; import 'dart:io'; Future grantCameraPermission() async { try { final bool adbExists = Process.runSync('which', ['adb']).exitCode == 0; if (!adbExists) { log(r'This test needs ADB to exist on the $PATH. Skipping...'); exit(0); } final deviceId = await Process.run('adb', ["-s", 'shell', 'devices']).then((value) { if (value.stdout is String) { return RegExp(r"(?:List of devices attached\n)([A-Z0-9]*)(?:\sdevice\n)") .firstMatch(value.stdout as String)! .group(1); } }); if (deviceId == null) { log('This test needs at least one device connected'); exit(0); } await Process.run('adb', [ "-s", deviceId, // https://github.com/flutter/flutter/issues/86295#issuecomment-1192766368 'shell', 'pm', 'grant', 'com.vodemn.lightmeter.dev', 'android.permission.CAMERA', ]); } catch (e) { log('Error occured: $e'); } }