CSharp:Android App - Soluzioni avanzate
From Aino Wiki
Google Drive
- Doc, Google Drive API: [1]
- Google Drive API for Xamarin.Android nuget.org
- Tesi in cui si usa l'accesso a Google Drive usando le API, c'è anche un esempio di autenticazione usando API Rest Federico Gava unibo.it
Google Drive assegna per ogni file un codice identificativo. In questo modo è possibile caricare nella stessa directory molteplici file con lo stesso nome. L’univocità di un file all’interno di Google Drive infatti, non è data dal suo percorso e nome, come accade comunemente nei file system, ma dal suo ID.
DOC: Xamarin.Essentials: Share Seguono stralci di codice usato realmente in una applicazione:
private void ImgBtnShareDocImg_Click(object sender, EventArgs e) { string docFileNameFullPath = string.Empty; string currentItemFilePw = string.Empty; try { currentItemFilePw = TxtItemToSearch_FileName.Text.Trim(); if (m_DictCurrItemDocFileLst.Count > 0 && !string.IsNullOrWhiteSpace(currentItemFilePw)) { //Si zippa l'intera cartella di immagini assocaite all'item corrente (la ./Doc_Tmp) //e la si condivide nel passaggio successivo int compressionLevel = 0; //0 è il minimo per cui copia soltanto string password = null; //SharedSetupPar.SetupCfg.PWZipCloudRecoveryArchive; string strMessageOut = string.Empty; Java.IO.File extStorage = Android.OS.Environment.ExternalStorageDirectory; Java.IO.File dir = new Java.IO.File(extStorage.AbsolutePath); string tempFolder = string.Format("{0}/{1}/{2}", dir.AbsolutePath //storage/emulated/0/ , SharedSetupPar.TempRelFolder , SharedSetupPar.TempSubRelFolder); docFileNameFullPath = Path.Combine(tempFolder, currentItemFilePw + ".zip"); //Nome del file TXT con le password da custodire CommonHlp.ZipFiles(SharedSetupPar.SetupCfg.ArchiveDocPathTmp , docFileNameFullPath, string.Empty, password , ref strMessageOut, compressionLevel); //!!!!!!!!!!! ShareDocFile(docFileNameFullPath); } } catch (Exception ex) { CommonHlp.LogErr("ImgBtnShareDocImg_Click", ex.Message); AManager.MessageBox(this, "Error (ImgBtnShareDocImg_Click)", ex.Message); } } public async Task ShareDocFile(string docFileNameFullPath) { try { if (File.Exists(docFileNameFullPath)) { await Share.RequestAsync(new ShareFileRequest { Title = Title, File = new ShareFile(docFileNameFullPath) }); } else { throw new Exception(string.Format("File to share '{0}' not found.", docFileNameFullPath)); } } catch (Exception ex) { CommonHlp.LogErr("ShareDocFile", ex.Message); } }
Nella UI di interfaccia si usa il seguente stralcio del XML usato nella vista indirizzata dall'Activity_mail.xml:
<ImageButton android:id="@+id/ImgBtnShareDocImg" android:src="@android:drawable/ic_menu_share" android:contentDescription="@string/LblTxt_ImgBtnShareDocImg" android:visibility="gone" android:layout_row="14" android:layout_column="0" android:layout_columnSpan="4" android:layout_height="110px" android:layout_width="110px" android:layout_marginLeft="220dip" android:layout_marginBottom="20dip" />
Mappa e Link
C# | Android App | Windows Form
Visual Studio | MS SQL | Dizionario
Parole chiave: