requestHealthPermissions static method
Implementation
static Future<SpikePermissionsResult> requestHealthPermissions({
required String connectionId,
required List<String> types,
}) async {
if (!Platform.isAndroid) {
return SpikePermissionsResult.undefined;
}
final prefs = await SharedPreferences.getInstance();
final timesCancelled = prefs.getInt(_healthConnectCancelStorageKey) ?? 0;
var checkResult = await checkPermissionsGranted(
connectionId: connectionId,
types: types,
);
if (checkResult == true) {
return SpikePermissionsResult.granted;
}
if (timesCancelled >= _healthConnectCancelBlockTimes) {
return SpikePermissionsResult.blocked;
}
final requestResult =
await _channel.invokeMethod('requestHealthPermissions', {
'connectionId': connectionId,
'permissions': types.join(","),
});
if (requestResult == 'result_canceled_user') {
await prefs.setInt(_healthConnectCancelStorageKey, timesCancelled + 1);
}
ExceptionHandler.checkException(requestResult);
checkResult = await _channel.invokeMethod('checkPermissionsGranted', {
'connectionId': connectionId,
'permissions': types.join(","),
});
if (checkResult == true) {
return SpikePermissionsResult.granted;
}
if (requestResult == 'result_ok') {
return SpikePermissionsResult.grantedPartially;
}
return SpikePermissionsResult.canceled;
}