今天我想通过名字在我的应用中问候用户,但我没有设法得到它。
我找到了System.User
,但由于缺少一些例子,我无法获得所需的信息。我认为不可能让当前用户(id
)致电User.GetFromId()
。
你能引导我走向正确的方向吗?我走错了路吗?
答案 0 :(得分:2)
好的,首先,访问用户的个人信息是您必须要求的权限,因此在商店应用的Package.appxmanifest中,您需要在功能中启用User Account Information
功能标签。
接下来,您将要使用Windows.System.User类,而不是System.User(System.User不适用于Windows商店应用程序,鉴于您提供的标签,您似乎正在讨论这些应用程序你的问题)
第三,您需要这样的个人信息。
IReadOnlyList<User> users = await User.FindAllAsync(UserType.LocalUser, UserAuthenticationStatus.LocallyAuthenticated);
User user = users.FirstOrDefault();
if (user != null)
{
String[] desiredProperties = new String[]
{
KnownUserProperties.FirstName,
KnownUserProperties.LastName,
KnownUserProperties.ProviderName,
KnownUserProperties.AccountName,
KnownUserProperties.GuestHost,
KnownUserProperties.PrincipalName,
KnownUserProperties.DomainName,
KnownUserProperties.SessionInitiationProtocolUri,
};
IPropertySet values = await user.GetPropertiesAsync(desiredProperties);
foreach (String property in desiredProperties)
{
string result;
result = property + ": " + values[property] + "\n";
System.Diagnostics.Debug.WriteLine(result);
}
}
当您调用GetPropertiesAsync时,您的用户将从系统获得一个权限提示,询问他们是否要授予您访问权限的权限。如果他们回答“否”,您将获得一个空的用户对象(但是如果他们再次使用该应用程序,您仍然可以使用唯一的令牌来区分该用户。)
如果他们回答是,您将能够访问以下属性以及其他各种属性。
有关更多示例,请参阅Microsoft提供的UserInfo Sample。