【发布时间】:2016-10-18 15:49:09
【问题描述】:
我正在尝试从我的应用设置锁屏背景。我正在使用以下代码:
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 或任何我能真正看到问题所在的东西。)我使用的正是我找到的 here,但我只是无法让它工作。我还缺少另一部分吗?
【问题讨论】:
-
在您提供的同一个链接中,它说您需要先检查
UserProfilePersonalizationSettings.IsSupported()。是true吗? -
@AVKNaidu 是的,这是真的。我发布的所有内容都包含在
if语句中,用于检查该条件。 -
奇怪。因为没有你的
photo_cache,我在我的手机上试过了,效果很好。
标签: c# uwp lockscreen