In Windows Phone è da sempre possibile condividere contenuti multimediali attraverso social network o app di terze parti che si sono integrate nel sistema. La condivisione è possibile attraverso l'hub foto, che permette di selezionare una foto e di scegliere il mezzo di condivisione.
Una mancanza presente nelle versioni 7.x, però, è la possibilità di utilizzare questa funzionalità anche in app di terze parti. Pensiamo ad un'app alternativa di visualizzazione foto, locali o remote: è utile permettere all'utente di convidere un'immagine di suo interesse.
In Windows Phone 8 viene in aiuto la classe ShareMediaTask la quale semplicemente permette di prendere un'immagine e farla condividere attraverso il sistema integrato. L'unica cosa che richiede è il percorso al file, che deve obbligatoriamente risiedere nella picture library. Possiamo usare il CameraCaptureTask per ottere un'immagine e l'OriginalFileName come risultato, oppure possiamo utilizzare la classe PictureLibrary per salvare l'immagine e passarla poi al task. In questo script mostriamo questa possibilità.
// Recupero il riferimento all'immagine dalla cartella dell'app StorageFolder assetsFolder = await Package.Current.InstalledLocation.GetFolderAsync("assets"); StorageFile file = await assetsFolder.GetFileAsync("test.png"); // Apro in lettura il file using (var r = await file.OpenReadAsync()) { // Salvo nella picture library var picture = new MediaLibrary().SavePicture("test.png", r.AsStreamForRead()); // Condivido l'immagine ShareMediaTask share = new ShareMediaTask(); share.FilePath = picture.GetPath(); share.Show(); }
Come possiamo vedere, nell'esempio recuperiamo l'immagine dalla cartella dell'applicazione, ma questa potrebbe anche provenire da internet. Ad ogni modo, ottenuto lo Stream dell'immagine, lo persisistiamo nella picture library. A questo punto abbiamo il percorso del file invocando il metodo GetPath (namespace Microsoft.Xna.Framework.Media.PhoneExtensions), che possiamo poi passare al task di condivisione dell'immagine. Ricordiamo che per scrivere nella media library è necessario richiedere il permesso ID_CAP_MEDIALIB_PHOTO.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Rinnovare il token di una GitHub App durante l'esecuzione di un workflow
Collegare applicazioni server e client con .NET Aspire
Effettuare il refresh dei dati di una QuickGrid di Blazor
Sfruttare GPT-4o realtime su Azure Open AI per conversazioni vocali
Selettore CSS :has() e i suoi casi d'uso avanzati
Usare le navigation property in QuickGrid di Blazor
Escludere alcuni file da GitHub Secret Scanning
Gestione degli eventi nei Web component HTML
Generare HTML a runtime a partire da un componente Razor in ASP.NET Core
Utilizzare Copilot con Azure Cosmos DB
Configurare e gestire sidecar container in Azure App Service
Aprire una finestra di dialogo per selezionare una directory in WPF e .NET 8
I più letti di oggi
- Creare un router per Single Page Application con l'evento navigate
- Serializzazione e deserializzazione JSON in JavaScript
- Utilizzare app-shell per rendere un'applicazione Angular più responsiva alla partenza
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!