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
Usare lo spread operator con i collection initializer in C#
Semplificare il deployment di siti statici con Azure Static Web App
Load test di ASP.NET Core con k6
Supporto ai tipi DateOnly e TimeOnly in Entity Framework Core
Potenziare Azure AI Search con la ricerca vettoriale
Configurare policy CORS in Azure Container Apps
Reactive form tipizzati con FormBuilder in Angular
Utilizzare i primary constructor di C# per inizializzare le proprietà
Sfruttare i KeyedService in un'applicazione Blazor in .NET 8
Verificare la provenienza di un commit tramite le GitHub Actions
Utilizzare Tailwind CSS all'interno di React: primi componenti
Gestire liste di tipi semplici con Entity Framework Core
I più letti di oggi
- Utilizzare Docker Compose con Azure App Service
- Utilizzare QuickGrid di Blazor con Entity Framework
- Modernizzare le applicazioni WPF e Windows Forms con Blazor
- ASP 3 per esempi
- annunciato #netstandard 2.1. .NET Core lo supporterà a partire da #netcore3, così come le prossime versione di #xamarin, #mono e #unity.il supporto per #netfx 4.8, invece, non ci sarà. https://aspit.co/bq2