W10 UWP - 将远程图片设为桌面壁纸/锁屏

7

我正在尝试在我的W10 UWP应用程序中将远程图像设置为桌面壁纸/手机锁屏:

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由于只读权限无法使用,所以我将其复制到新位置(图片库)以消除限制,生成file2注意file3可以正常工作,所以我不确定发生了什么情况——我猜测TrySetWallpaperImageAsync/TrySetLockScreenImageAsync只接受本地的msappx文件...
有没有任何解决方法?
谢谢。

3
你尝试过将目标文件保存到ApplicationData.Current.LocalFolder吗?显然这些方法只接受特定文件夹中的文件。 - Martin Suchan
啊,就是这样!谢谢。 - Travis Liew
我建议检查您的设备系列是否为移动设备,而不是检查API。虽然现在没有任何区别,但将来可能会因为出现了什么设备系列而无法正常工作。 - Ivan Ičin
1个回答

5

首先将远程图片保存到ApplicationData.Current.LocalFolder文件夹中,然后使用TrySetWallpaperImageAsync/TrySetLockScreenImageAsync方法,并指向保存的图片,而不是直接引用远程图片,这样应该就可以实现了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接