2015-08-06 13 views
6

Sto cercando di impostare un'immagine remota come sfondo del desktop/telefono lockscreen nel mio W10 UWP app:W10 UWP - Imposta immagine come sfondo del desktop remoto/lockscreen

string name = "test_image.jpg"; 
Uri uri = new Uri("http://www.ucl.ac.uk/news/news-articles/1213/muscle-fibres-heart.jpg"); 

// download image from uri into temp storagefile 
var file = await StorageFile.CreateStreamedFileFromUriAsync(name, uri, RandomAccessStreamReference.CreateFromUri(uri)); 

// file is readonly, copy to a new location to remove restrictions 
var file2 = await file.CopyAsync(KnownFolders.PicturesLibrary); 

// test -- WORKS! 
//var file3 = await StorageFile.GetFileFromApplicationUriAsync(new Uri("ms-appx:///Assets/Design/1.jpg")); 

// try set lockscreen/wallpaper 
if (ApiInformation.IsTypePresent("Windows.Phone.UI.Input.HardwareButtons")) // Phone 
    success = await UserProfilePersonalizationSettings.Current.TrySetLockScreenImageAsync(file2); 
else // PC 
    success = await UserProfilePersonalizationSettings.Current.TrySetWallpaperImageAsync(file2); 

file1 non funziona come è di sola lettura, quindi lo copio in una nuova posizione (libreria di immagini) per rimuovere le restrizioni ->file2.

Nota: file3 lavori, quindi non sono sicuro di quello che sta accadendo - presumo TrySetWallpaperImageAsync/TrySetLockScreenImageAsync accetta solo msappx file locali ...

Qualcuno ha qualche idea su arounds di lavoro?

Grazie.

+3

Hai provato a salvare il file di destinazione in ApplicationData.Current.LocalFolder? Apparentemente questi metodi accettano solo file da cartelle specifiche. –

+0

Ah, era così! Grazie. –

+0

Vorrei anche suggerire di verificare se la famiglia di dispositivi è Mobile piuttosto che controllare API, mentre non c'è alcuna differenza in futuro potrebbe non funzionare correttamente a seconda di quali famiglie di dispositivi appaiono. –

risposta

5

Salvare prima l'immagine remota su ApplicationData.Current.LocalFolder, quindi utilizzare TrySetWallpaperImageAsync/TrySetLockScreenImageAsync e puntare all'immagine salvata anziché fare riferimento direttamente all'immagine remota.