public void Download(DriveId driveId) { /* * Download snippet from: * http://stackoverflow.com/questions/37407368/android-drive-api-download-file */ Task.Run(delegate { if (DownloadStarted != null) { DownloadStarted(null, null); } /* * All "Result" variables are under Android.Gms.Drive, search for "result". * Be sure to await, else it'll return cast failure */ IDriveFile file = DriveClass.DriveApi.GetFile(client, driveId); IDriveApiDriveContentsResult result = file.Open(client, Android.Gms.Drive.DriveFile.ModeReadOnly, null).Await().JavaCast <IDriveApiDriveContentsResult>(); IDriveResourceMetadataResult metadataResult = file.GetMetadata(client).Await().JavaCast <IDriveResourceMetadataResult>(); Stream stream = result.DriveContents.InputStream; if (DownloadComplete != null) { string name = metadataResult.Metadata.Title; DownloadComplete(null, new DownloadEventArgs { Stream = stream, Name = name }); } }); }
private async Task <string> ReadFileAsync(IDriveFile file) { var result = await file.OpenAsync(this.client, DriveFile.ModeReadOnly, null); if (!result.Status.IsSuccess) { this.logger.Error("Failed to read file."); return(null); } using (var streamReader = new StreamReader(result.DriveContents.InputStream)) { return(await streamReader.ReadToEndAsync()); } }
private async Task TickFileContents(IDriveFile file) { var contents = await this.ReadFileAsync(file); this.exerciseDocument.OnNext(contents); }
private async Task<string> ReadFileAsync(IDriveFile file) { var result = await file.OpenAsync(this.client, DriveFile.ModeReadOnly, null); if (!result.Status.IsSuccess) { this.logger.Error("Failed to read file."); return null; } using (var streamReader = new StreamReader(result.DriveContents.InputStream)) { return await streamReader.ReadToEndAsync(); } }
//получаем файл backup private async Task GetBackUpFile(IDriveApiDriveContentsResult contentResults) { try { var contentFile = new StringBuilder(); //получаем папку backup DriveId folderBackUpId = FindItems(folderName).Result; if (folderBackUpId == null) { CreateAlertDialog("", errorMessage); //папка с backup не обнаружена } else { IDriveFolder driveFolder = null; IDriveFile driveFile = null; //получаем папку по ID driveFolder = driveFolder ?? folderBackUpId.AsDriveFolder(); //если папка не ноль то получаем файлы if (driveFolder != null) { var filesResult = await driveFolder.ListChildrenAsync(_googleApiClient); Java.Util.Date temp = null; foreach (var item in filesResult.MetadataBuffer) { if (item.Title.Contains(filename)) { if (temp == null || !temp.After(item.ModifiedDate)) { temp = item.ModifiedDate; driveFile = item.DriveId.AsDriveFile(); } } } //чтение файла из Google drive и получение строки в BAse64 var readFile = await driveFile.OpenAsync(_googleApiClient, DriveFile.ModeReadOnly, null); using (var inpstr = readFile.DriveContents.InputStream) using (var streamReade = new StreamReader(inpstr)) { while (streamReade.Peek() >= 0) { contentFile.Append(await streamReade.ReadLineAsync()); } } //конвертируем строку из base64 и записываем в файл БД(переписываем) byte[] bytes = Convert.FromBase64String(contentFile.ToString()); System.IO.File.WriteAllBytes(pathToDb, bytes); CreateAlertDialog("", successMessage); } } } catch (Exception er) { Log.Logger.Error(er.Message, er.StackTrace); CreateAlertDialog("", errorMessage); } }
public static async Task <IDriveApiDriveContentsResult> OpenAsync(this IDriveFile api, GoogleApiClient apiClient, int mode, IDriveFileDownloadProgressListener listener) { return((await api.Open(apiClient, mode, listener)).JavaCast <IDriveApiDriveContentsResult> ()); }
public Task <IListenerToken> OpenFileAsync(IDriveFile file, int i, OpenFileCallback callback) { return(OpenFile(file, i, callback).AsAsync <IListenerToken> ()); }
public Task <IDriveContents> OpenFileAsync(IDriveFile file, int i) { return(OpenFile(file, i).AsAsync <IDriveContents> ()); }