2016-10-18 13 views
0

Ich versuche, den Sperrbildschirm Hintergrund aus meiner App zu setzen. Ich verwende den folgenden Code:UWP-Set Sperrbildschirm Bild funktioniert nicht

var cachedPhotos = (await Photos.GetCachedPhotosAsync()).ToList(); // Get a list of Photo objects ({ "id": "12345.jpg", "url": "http://me.com/12345.jpg" }. 
var newPhotos = (await Photos.GetAllPhotosAsync()).ToList(); // Ditto above comment. 
var newPhotosList = ListHelpers.Merge(cachedPhotos, newPhotos); // Merge the two lists. 
await Photos.CachePhotosAsync(newPhotosList); // Create a JSON file with a list of Photo objects. Also download each photo into the "photo_cache" folder. 
var index = _random.Next(0, newPhotosList.Count - 1); 
var photo = newPhotosList[index]; 

var file = await StorageFile.GetFileFromPathAsync($"{ApplicationData.Current.LocalCacheFolder.Path}\\photo_cache\\{photo.Id}"); 

if (await UserProfilePersonalizationSettings.Current.TrySetLockScreenImageAsync(file)) 
    Debug.WriteLine("Wallpaper set!"); 
else 
    Debug.WriteLine("Wallpaper failed to set..."); 

Das Foto vorhanden und gültig ist, wenn ich es in Datei-Explorer anzuzeigen. Mein C# bekommt die StorageFile korrekt. Aber immer wenn ich TrySetLockScreenImageAsync starte, gibt es false zurück. (Beachten Sie, dass es nur gibt false zurück, und nicht ein Exception oder alles, was ich tatsächlich sehen kann, was das Problem ist.) Ich verwende genau das, was ich here gefunden habe, aber ich kann es einfach nicht zur Arbeit bekommen. Gibt es ein anderes Stück, das ich vermisse?

+0

In demselben Link, den Sie angegeben haben, müssen Sie zuerst 'UserProfilePersonalizationSettings.IsSupported()' überprüfen. ist es wahr? – AVK

+0

@AVKNaidu Ja, es ist wahr. Alles, was ich gepostet habe, ist in eine "if" -Anweisung eingebettet, die diese Bedingung überprüft. – RareNCool

+1

Seltsam. Denn ohne deinen 'photo_cache' habe ich es auf meinem Handy ausprobiert, es funktioniert perfekt. – AVK

Antwort

1

Ok also aus irgendeinem seltsamen Grund scheint es, dass ich eine CopyAsync auf der StorageFile machen muss und kopieren Sie es auf LocalFolder, dann verwenden Sie die neu kopierte Datei. Anscheinend mag es die Datei nicht, die von LocalCacheFolder kommt.

Verwandte Themen