UWP设置锁定屏幕图像不起作用

时间:2016-10-18 15:49:10

标签: c# uwp lockscreen

我正在尝试从我的应用设置锁定屏幕背景。我正在使用以下代码:

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...");

如果我在文件资源管理器中查看照片,则该照片存在且有效。我的C#正确获得StorageFile。但每当我运行TrySetLockScreenImageAsync时,它都会返回false。 (请注意,返回false,而不是Exception或任何我能够真正看到问题所在的内容。)我正在使用我发现的{{ 3}},但我无法让它发挥作用。我还缺少另一件作品吗?

1 个答案:

答案 0 :(得分:1)

好的,出于某种奇怪的原因,似乎我必须在CopyAsync上执行StorageFile并将其复制到LocalFolder,然后使用新复制的文件。显然它不喜欢来自LocalCacheFolder的文件。