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
Utilizzare Locust con Azure Load Testing
Integrare LLM alle nostre applicazioni in .NET con MCP
Collegare applicazioni server e client con .NET Aspire
Gestire progetti .NET + React in .NET Aspire
Importare un servizio esterno in .NET Aspire
Loggare le query più lente con Entity Framework
Semplificare i deployment con le label in Azure Container App
Gestione degli eventi nei Web component HTML
Self-healing degli unit test con Copilot in GitHub
Eliminare record doppi in Sql Server
Integrazione di Copilot in .NET Aspire
Fissare una versione dell'agent nelle pipeline di Azure DevOps


