我正在为UWP (通用Windows平台)开发一个在Windows 10和Xbox One设备上可用的应用程序。这个应用程序是一个单用户应用。我正在尝试在运行时确定一个活动登录用户的唯一标识符--只是一个没有任何个人可识别信息的ID。StoreContext类的文档表明,我应该能够通过检查默认StoreContext对象上的User属性来确定这一点;具体来说,NonRoamableId属性似乎是合适的。但是,在我运行应用程序的每个上下文中(调试、部署、Windows、Xbox),StoreContext的User属性始终是null。这是意料之中吗?我找不到任何其他方法来确定这个信息。
注意:我知道UserWatcher类及其在系统上查询用户的方法。不过,我想避免使用这个方法,原因如下:
User与当前StoreContext相关联,这意味着这样的解决方案很容易出错。我正在针对Windows 10创建者更新SDK (10.0.15063)进行开发。
编辑11/16/2017
这看起来可能是一个UWP的错误,现在已经修复。在没有任何代码更改的情况下,我现在看到一个非空的User对象在应用程序启动时附加到LaunchActivatedEventArgs上。因此接受了这一答复。
发布于 2017-08-22 09:37:39
使用MS帐户登录的活动用户可以从OnLaunched/ Active事件参数中获得。
protected override void OnLaunched(LaunchActivatedEventArgs e)
{
Windows.System.User active_user = e.User;
}这需要在包清单中添加用户帐户信息功能。
发布于 2018-03-27 20:34:17
我知道我在这里回答得太晚了,但其他人也可能会发现这个问题。StoreContext上的user属性不是用来检索用户的。事实上,UWP不可能获得关于当前登录到商店的用户的详细信息。
用户属性允许使用“StoreContext.GetForUser(.) API”创建StoreContext的多用户应用程序的开发人员,当使用此方法时,用户属性将是创建时提供的用户。
StoreContext.GetDefault()将始终具有一个空用户属性。
多用户模型是为Xbox 1设计的,其中可以同时有多个用户登录。
发布于 2017-08-17 02:57:41
StoreContext类的文档表明,我应该能够通过检查默认StoreContext对象上的用户属性来确定这一点;具体来说,NonRoamableId属性似乎是合适的。
更多的建议是使用Windows.Services.Store命名空间来获取Windows10CreatorUpdate中的用户ID。但是,此命名空间没有提供可用于在测试期间进行模拟的类。
因此,您应该发布应用程序,以存储和下载应用程序到您的开发设备进行测试,以便您可以得到一个有效的StoreContext。
对于单用户应用程序:
在单用户应用程序(即仅在启动应用程序的用户上下文中运行的应用程序)中,使用静态GetDefault方法获取一个StoreContext对象,您可以使用该对象为用户访问与Windows相关的数据。
Windows.Services.Store.StoreContext context = StoreContext.GetDefault();https://stackoverflow.com/questions/45720518
复制相似问题