uploadToGoogleDrive method
Implementation
Future<void> uploadToGoogleDrive(String filePath) async {
if (_driveApi == null) {
print(
'Google Drive API client not initialized. Please authenticate first.');
return;
}
final file = File(filePath);
final media = drive.Media(file.openRead(), file.lengthSync());
final driveFile = drive.File()
..name = path.basename(filePath)
..mimeType = 'application/vnd.android.package-archive';
try {
// Upload the file
final uploadedFile =
await _driveApi.files.create(driveFile, uploadMedia: media);
print('Upload successful to Google Drive!');
// Set file permissions to make it shareable
final permission = drive.Permission()
..type = 'anyone'
..role = 'reader';
await _driveApi.permissions.create(
permission,
uploadedFile.id!,
);
// Retrieve the updated file metadata to get the webContentLink
final updatedFile = await _driveApi.files.get(
uploadedFile.id!,
$fields: 'webContentLink',
) as drive.File;
// Print the uploaded file's link
if (updatedFile.webContentLink != null) {
IndividualUploadService.updateUrlLinkState(updatedFile.webContentLink!);
} else {
print('Upload link not available.');
}
} catch (e) {
print('Error uploading to Google Drive: $e');
exit(0);
}
}