背水一战 Windows 10 (82) - 用户和账号: 获取用户的信息, 获取用户的同意
作者:webabcd
介绍
背水一战 Windows 10 之 用户和账号
- 获取用户的信息
- 获取用户的同意
示例
1、演示如何获取用户的信息
UserAndAccount/UserInfo.xaml
<Page
x:Class="Windows10.UserAndAccount.UserInfo"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:Windows10.UserAndAccount"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"> <Grid Background="Transparent">
<StackPanel Margin="10 0 10 10"> <TextBlock Name="lblMsg" Margin="5" /> <Image x:Name="imageProfile" Margin="5" Width="64" Height="64" HorizontalAlignment="Left" /> </StackPanel>
</Grid>
</Page>
UserAndAccount/UserInfo.xaml.cs
/*
* 演示如何获取用户的信息
*
* 需要在 Package.appxmanifest 中的“功能”中勾选“用户账户信息”,即 <Capability Name="userAccountInformation" />
* 如上配置之后,即可通过 api 获取用户的相关信息(系统会自动弹出权限请求对话框)
*
* User - 用户
* FindAllAsync() - 查找全部用户,也可以根据 UserType 和 UserAuthenticationStatus 来查找用户
* 经过测试,其只能返回当前登录用户
* GetPropertyAsync(), GetPropertiesAsync() - 获取用户的指定属性
* 可获取的属性请参见 Windows.System.KnownUserProperties
* GetPictureAsync() - 获取用户图片
* 图片规格有 64x64, 208x208, 424x424, 1080x1080
* NonRoamableId - 用户 id
* 此 id 不可漫游
* UserType - 用户类型
* LocalUser, RemoteUser, LocalGuest, RemoteGuest
* UserAuthenticationStatus - 用户的身份验证状态
* Unauthenticated, LocallyAuthenticated, RemotelyAuthenticated
* CreateWatcher() - 返回 UserWatcher 对象,用于监听用户的状态变化
* 本例不做演示
*/ using System;
using System.Collections.Generic;
using Windows.Foundation.Collections;
using Windows.Storage.Streams;
using Windows.System;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Media.Imaging;
using Windows.UI.Xaml.Navigation; namespace Windows10.UserAndAccount
{
public sealed partial class UserInfo : Page
{
public UserInfo()
{
this.InitializeComponent();
} protected async override void OnNavigatedTo(NavigationEventArgs e)
{
base.OnNavigatedTo(e); // 我这里测试的结果是:返回的集合中只有一个元素,就是当前的登录用户
IReadOnlyList<User> users = await User.FindAllAsync(); // 系统会自动弹出权限请求对话框
User user = users?[];
if (user != null)
{
// 对于获取用户的 NonRoamableId, Type, AuthenticationStatus 信息,不同意权限请求也是可以的
string result = "NonRoamableId: " + user.NonRoamableId + "\n";
result += "Type: " + user.Type.ToString() + "\n";
result += "AuthenticationStatus: " + user.AuthenticationStatus.ToString() + "\n"; // 对于获取用户的如下信息及图片,则必须要同意权限请求
string[] desiredProperties = new string[]
{
KnownUserProperties.DisplayName,
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)
{
result += property + ": " + values[property] + "\n";
}
// 获取用户的指定属性
// object displayName = await user.GetPropertyAsync(KnownUserProperties.DisplayName); lblMsg.Text = result; // 获取用户的图片
IRandomAccessStreamReference streamReference = await user.GetPictureAsync(UserPictureSize.Size64x64);
if (streamReference != null)
{
IRandomAccessStream stream = await streamReference.OpenReadAsync();
BitmapImage bitmapImage = new BitmapImage();
bitmapImage.SetSource(stream);
imageProfile.Source = bitmapImage;
}
}
}
}
}
2、演示如何获取用户的同意
UserAndAccount/UserVerifier.xaml
<Page
x:Class="Windows10.UserAndAccount.UserVerifier"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:Windows10.UserAndAccount"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"> <Grid Background="Transparent">
<StackPanel Margin="10 0 10 10"> <TextBlock Name="lblMsg" Margin="5" /> <Button Name="buttonRequestConsent" Content="获取用户的同意" Click="buttonRequestConsent_Click" Margin="5" /> </StackPanel>
</Grid>
</Page>
UserAndAccount/UserVerifier.xaml.cs
/*
* 演示如何获取用户的同意
*
* UserConsentVerifier - 验证器(比如 pin 验证等)
* CheckAvailabilityAsync() - 验证器的可用性
* RequestVerificationAsync(string message) - 请求用户的同意(可以指定用于提示用户的信息)
*/ using System;
using Windows.Security.Credentials.UI;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Navigation; namespace Windows10.UserAndAccount
{
public sealed partial class UserVerifier : Page
{
public UserVerifier()
{
this.InitializeComponent();
} protected async override void OnNavigatedTo(NavigationEventArgs e)
{
base.OnNavigatedTo(e); try
{
UserConsentVerifierAvailability verifierAvailability = await UserConsentVerifier.CheckAvailabilityAsync();
switch (verifierAvailability)
{
case UserConsentVerifierAvailability.Available: // 验证器可用
lblMsg.Text = "UserConsentVerifierAvailability.Available";
break;
case UserConsentVerifierAvailability.DeviceBusy:
lblMsg.Text = "UserConsentVerifierAvailability.DeviceBusy";
break;
case UserConsentVerifierAvailability.DeviceNotPresent:
lblMsg.Text = "UserConsentVerifierAvailability.DeviceNotPresent";
break;
case UserConsentVerifierAvailability.DisabledByPolicy:
lblMsg.Text = "UserConsentVerifierAvailability.DisabledByPolicy";
break;
case UserConsentVerifierAvailability.NotConfiguredForUser:
lblMsg.Text = "UserConsentVerifierAvailability.NotConfiguredForUser";
break;
default:
break;
}
}
catch (Exception ex)
{
lblMsg.Text = ex.ToString();
} lblMsg.Text += "\n";
} private async void buttonRequestConsent_Click(object sender, RoutedEventArgs e)
{
try
{
UserConsentVerificationResult consentResult = await UserConsentVerifier.RequestVerificationAsync("我要做一些操作,您同意吗?");
switch (consentResult)
{
case UserConsentVerificationResult.Verified: // 验证通过
lblMsg.Text += "UserConsentVerificationResult.Verified";
break;
case UserConsentVerificationResult.DeviceBusy:
lblMsg.Text += "UserConsentVerificationResult.DeviceBusy";
break;
case UserConsentVerificationResult.DeviceNotPresent:
lblMsg.Text += "UserConsentVerificationResult.DeviceNotPresent";
break;
case UserConsentVerificationResult.DisabledByPolicy:
lblMsg.Text += "UserConsentVerificationResult.DisabledByPolicy";
break;
case UserConsentVerificationResult.NotConfiguredForUser:
lblMsg.Text += "UserConsentVerificationResult.NotConfiguredForUser";
break;
case UserConsentVerificationResult.RetriesExhausted:
lblMsg.Text += "UserConsentVerificationResult.RetriesExhausted";
break;
case UserConsentVerificationResult.Canceled: // 验证取消
lblMsg.Text += "UserConsentVerificationResult.Canceled";
break;
default:
break;
}
}
catch (Exception ex)
{
lblMsg.Text += ex.ToString();
} lblMsg.Text += "\n";
}
}
}
OK
[源码下载]
背水一战 Windows 10 (82) - 用户和账号: 获取用户的信息, 获取用户的同意的更多相关文章
- 背水一战 Windows 10 (84) - 用户和账号: 微软账号的登录和注销
[源码下载] 背水一战 Windows 10 (84) - 用户和账号: 微软账号的登录和注销 作者:webabcd 介绍背水一战 Windows 10 之 用户和账号 微软账号的登录和注销 示例演示 ...
- 背水一战 Windows 10 (83) - 用户和账号: 数据账号的添加和管理, OAuth 2.0 验证
[源码下载] 背水一战 Windows 10 (83) - 用户和账号: 数据账号的添加和管理, OAuth 2.0 验证 作者:webabcd 介绍背水一战 Windows 10 之 用户和账号 数 ...
- 背水一战 Windows 10 (90) - 文件系统: 获取 Package 中的文件, 可移动存储中的文件操作, “库”管理
[源码下载] 背水一战 Windows 10 (90) - 文件系统: 获取 Package 中的文件, 可移动存储中的文件操作, “库”管理 作者:webabcd 介绍背水一战 Windows 10 ...
- 背水一战 Windows 10 (87) - 文件系统: 获取文件的属性, 修改文件的属性, 获取文件的缩略图
[源码下载] 背水一战 Windows 10 (87) - 文件系统: 获取文件的属性, 修改文件的属性, 获取文件的缩略图 作者:webabcd 介绍背水一战 Windows 10 之 文件系统 获 ...
- 背水一战 Windows 10 (86) - 文件系统: 获取文件夹的属性, 获取文件夹的缩略图
[源码下载] 背水一战 Windows 10 (86) - 文件系统: 获取文件夹的属性, 获取文件夹的缩略图 作者:webabcd 介绍背水一战 Windows 10 之 文件系统 获取文件夹的属性 ...
- 背水一战 Windows 10 (85) - 文件系统: 获取文件夹和文件, 分组文件夹, 排序过滤文件夹和文件, 搜索文件
[源码下载] 背水一战 Windows 10 (85) - 文件系统: 获取文件夹和文件, 分组文件夹, 排序过滤文件夹和文件, 搜索文件 作者:webabcd 介绍背水一战 Windows 10 之 ...
- 背水一战 Windows 10 (122) - 其它: 通过 Windows.System.Profile 命名空间下的类获取信息, 查找指定类或接口的所在程序集的所有子类和子接口
[源码下载] 背水一战 Windows 10 (122) - 其它: 通过 Windows.System.Profile 命名空间下的类获取信息, 查找指定类或接口的所在程序集的所有子类和子接口 作者 ...
- 背水一战 Windows 10 (101) - 应用间通信: 通过协议打开指定的 app 并传递数据以及获取返回数据, 将本 app 沙盒内的文件共享给其他 app 使用
[源码下载] 背水一战 Windows 10 (101) - 应用间通信: 通过协议打开指定的 app 并传递数据以及获取返回数据, 将本 app 沙盒内的文件共享给其他 app 使用 作者:weba ...
- 背水一战 Windows 10 (76) - 控件(控件基类): Control - 基础知识, 焦点相关, 运行时获取 ControlTemplate 和 DataTemplate 中的元素
[源码下载] 背水一战 Windows 10 (76) - 控件(控件基类): Control - 基础知识, 焦点相关, 运行时获取 ControlTemplate 和 DataTemplate 中 ...
随机推荐
- [PAClient Error] Error: E4356 File does not exist armv7
[PAClient Error] Error: E4356 File does not exist: /Users/tt/PAServer/scratch-dir/Administrator-snIO ...
- 资产管理平台 glpi
1.安装apache yum install httpdyum install httpd-devel 2.安装php 3.配置apache支持php 4.下载glpi并解压 5.配置apache 6 ...
- MySQL InnoDB引擎B+树索引简单整理说明
本文出处:http://www.cnblogs.com/wy123/p/7211742.html (保留出处并非什么原创作品权利,本人拙作还远远达不到,仅仅是为了链接到原文,因为后续对可能存在的一些错 ...
- ionic+cordova填坑
1.命令行更新 cordova,ionic.nodejs ,npm,bower等到新版本,不要在vs中更新 2.程序突然白屏 因为拷贝其他程序到js中,乱码 :a模拟器打开 f12看控制台错误解决 3 ...
- 深度学习中,使用regularization正则化(weight_decay)的好处,loss=nan
刚开始训练一个模型,自己就直接用了,而且感觉训练的数据量也挺大的,因此就没有使用正则化, 可能用的少的原因,我也就不用了,后面,训练到一定程度,accuracy不上升,loss不下降,老是出现loss ...
- ie7ajax 跨域 no transport 解决办法
客户端js <script src="jquery-1.8.0.min.js"></script> <script src="JavaScr ...
- 框架和内嵌框架--->frameset 和 iframe 的文档对象
框架和内嵌框架分别用 HTMLFrameElemnt 和 HTMLIFrameElement 表示,它们在 DOM2 中有一个新属性----->contentDocument,是一个指针,表示框 ...
- 丑数(python)
题目描述 把只包含质因子2.3和5的数称作丑数(Ugly Number).例如6.8都是丑数,但14不是,因为它包含质因子7. 习惯上我们把1当做是第一个丑数.求按从小到大的顺序的第N个丑数. # ...
- vue 自动识别PC、移动端,并跳转到对应页面
app.vuehead中添加 <!--自动识别PC.移动--> <script src="static/js/uaredirect.js" type=" ...
- PHP请求ws出现的问题
在SOAPUI中的请求如下: <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/&qu ...