我正在开发一个本地网络可玩游戏的 WinRT 应用程序。我可以在应用程序中读取用户的 DisplayName 和 AccountPicture,并通过 xaml 在本地向用户显示它们。我正在使用以下代码将帐户图片转换为 BitmapImage 以在 xaml 页面中进行绑定:
private async Task<BitmapImage> GetDisplayImage()
{
BitmapImage image = null;
if (CoreApplication.MainView != null)
{
await CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(
CoreDispatcherPriority.Normal, async () =>
{
var stream = await Windows.System.UserProfile.UserInformation.GetAccountPicture(Windows.System.UserProfile.AccountPictureKind.LargeImage).OpenReadAsync();
image = new BitmapImage();
image.SetSource(stream);
});
}
return image;
}
我认为可以将流读入字节数组,并在应用程序连接到其他应用程序时将其发送,然后像这样在另一端重构字节数组:
public static async Task<byte[]> ToArray(this IRandomAccessStream stream)
{
IBuffer buffer = new Windows.Storage.Streams.Buffer((uint)stream.Size);
await stream.ReadAsync(buffer, buffer.Capacity, InputStreamOptions.ReadAhead);
await stream.FlushAsync();
return buffer.ToArray();
}
然而,上线:
await stream.FlushAsync();
我收到 UnauthorizedAccessException:
Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))
必须可以与其他人共享个人资料图片,因为我在其他地方看到它完成了,但我似乎找不到任何有关如何执行此操作的信息。如果有人能指出我正确的方向(我想知道我是否需要连接不同的 api,或者我是否需要在 App 清单中设置一些东西..),我将不胜感激。