原文:整理UWP中网络和设备信息获取的帮助类,需要的拿走。

网络(运营商信息,网络类型)

public static class NetworkInfo{/// <summary>/// 网络是否可用/// </summary>public static bool IsNetworkAvailable{get{ConnectionProfile profile = NetworkInformation.GetInternetConnectionProfile();return (profile?.GetNetworkConnectivityLevel() == NetworkConnectivityLevel.InternetAccess);}}/// <summary>/// 获取IP地址/// </summary>/// <returns>IP地址</returns>public static string GetIpAddress(){Guid? networkAdapterId = NetworkInformation.GetInternetConnectionProfile()?.NetworkAdapter?.NetworkAdapterId;return (networkAdapterId.HasValue ? NetworkInformation.GetHostNames().FirstOrDefault(hn => hn?.IPInformation?.NetworkAdapter.NetworkAdapterId == networkAdapterId)?.CanonicalName : null);}/// <summary>/// 获取网络运营商信息/// </summary>/// <returns></returns>public static string GetNetworkName(){try{ConnectionProfile profile = NetworkInformation.GetInternetConnectionProfile();if (profile != null){if (profile.IsWwanConnectionProfile){var homeProviderId = profile.WwanConnectionProfileDetails.HomeProviderId;//4600是我手机测试出来的。if (homeProviderId == "46000" || homeProviderId == "46002" || homeProviderId == "4600"){return "中国移动";}//已验证else if (homeProviderId == "46001"){return "中国联通";}//貌似还没win10 电信手机。。待验证else if (homeProviderId == "46003"){return "中国电信";}}else{return "其他";}//也可以用下面的方法,已验证移动和联通//var name = profile.GetNetworkNames().FirstOrDefault();//if (name != null)//{//    name = name.ToUpper();//    if (name == "CMCC")//    {//        return "中国移动";//    }//    else if (name == "UNICOM")//    {//        return "中国联通";//    }//    else if (name == "TELECOM")//    {//        return "中国电信";//    }//}//return "其他";
                }return "其他";}catch (Exception){return "其他";}}/// <summary>/// 获取网络连接类型/// </summary>/// <returns></returns>public static string GetNetWorkType(){try{ConnectionProfile profile = NetworkInformation.GetInternetConnectionProfile();if (profile == null){return "未知";}if (profile.IsWwanConnectionProfile){WwanDataClass connectionClass = profile.WwanConnectionProfileDetails.GetCurrentDataClass();switch (connectionClass){//2G-equivalentcase WwanDataClass.Edge:case WwanDataClass.Gprs:return "2G";//3G-equivalentcase WwanDataClass.Cdma1xEvdo:case WwanDataClass.Cdma1xEvdoRevA:case WwanDataClass.Cdma1xEvdoRevB:case WwanDataClass.Cdma1xEvdv:case WwanDataClass.Cdma1xRtt:case WwanDataClass.Cdma3xRtt:case WwanDataClass.CdmaUmb:case WwanDataClass.Umts:case WwanDataClass.Hsdpa:case WwanDataClass.Hsupa:return "3G";//4G-equivalentcase WwanDataClass.LteAdvanced:return "4G";//not connectedcase WwanDataClass.None:return "未连接";//unknowncase WwanDataClass.Custom:default:return "未知";}}else if (profile.IsWlanConnectionProfile){return "WIFI";}return "未知";}catch (Exception){return "未知"; //as default
            }}}

View Code

设备信息(分辨率,设备类型(PC,平板,手机,Xbox))

/// <summary>/// 设备信息/// </summary>public static class DeviceInfo{/// <summary>/// 设备ID/// </summary>public static readonly string DeviceId;/// <summary>/// 用户代理/// </summary>public static readonly string UserAgent;/// <summary>/// 操作系统版本/// </summary>public static readonly string OsVersion;/// <summary>/// 设备分辨率/// </summary>public static readonly Size DeviceResolution;/// <summary>/// 设备时区名字/// </summary>public static readonly string Timezone;/// <summary>/// 设备语言/// </summary>public static readonly string Language;/// <summary>/// 设备类型/// </summary>public static readonly string DeviceType;static DeviceInfo(){DeviceId = GetDeviceId();UserAgent = GetUserAgent();OsVersion = GetOsVersion();DeviceResolution = GetDeviceResolution();Timezone = GetTimezone();Language = GetLanguage();DeviceType = GetDeviceType();}private static string GetDeviceType(){var deviceFamily = AnalyticsInfo.VersionInfo.DeviceFamily;if (deviceFamily == "Windows.Desktop"){if (UIViewSettings.GetForCurrentView().UserInteractionMode == UserInteractionMode.Mouse){return "WINDESKTOP";}else{return "WINPAD";}}else if (deviceFamily == "Windows.Mobile"){return "WINPHONE";}else if (deviceFamily == "Windows.Xbox"){return "XBOX";}else if (deviceFamily == "Windows.IoT"){return "IOT";}else{return deviceFamily.ToUpper();}}/// <summary>/// 获取设备语言/// </summary>/// <returns>设备语言</returns>private static string GetLanguage(){var Languages = Windows.System.UserProfile.GlobalizationPreferences.Languages;if (Languages.Count > 0){return Languages[0];}return Windows.Globalization.Language.CurrentInputMethodLanguageTag;}/// <summary>/// 获取设备时区名字/// </summary>/// <returns>设备时区名字</returns>private static string GetTimezone(){return TimeZoneInfo.Local.DisplayName;}/// <summary>/// 获取设备分辨率/// </summary>/// <returns>设备分辨率</returns>private static Size GetDeviceResolution(){Size resolution = Size.Empty;var rawPixelsPerViewPixel = DisplayInformation.GetForCurrentView().RawPixelsPerViewPixel;foreach (var item in PointerDevice.GetPointerDevices()){resolution.Width = item.ScreenRect.Width * rawPixelsPerViewPixel;resolution.Height = item.ScreenRect.Height * rawPixelsPerViewPixel;break;}return resolution;}/// <summary>/// 获取设备ID/// </summary>/// <returns>设备ID</returns>private static string GetDeviceId(){HardwareToken token = HardwareIdentification.GetPackageSpecificToken(null);return CryptographyHelper.Md5Encrypt(token.Id);}/// <summary>/// 获取用户代理/// </summary>/// <returns>用户代理</returns>private static string GetUserAgent(){var Info = new EasClientDeviceInformation();return $"{Info.SystemManufacturer} {Info.SystemProductName}";}/// <summary>/// 获取操作系统版本/// </summary>/// <returns>操作系统版本</returns>private static string GetOsVersion(){ulong version = Convert.ToUInt64(AnalyticsInfo.VersionInfo.DeviceFamilyVersion);return $"{version >> 48 & 0xFFFF}.{version >> 32 & 0xFFFF}.{version >> 16 & 0xFFFF}.{version & 0xFFFF}";}}/// <summary>/// 加密帮助类/// </summary>public static class CryptographyHelper{public static string DesEncrypt(string key, string plaintext){SymmetricKeyAlgorithmProvider des = SymmetricKeyAlgorithmProvider.OpenAlgorithm(SymmetricAlgorithmNames.DesEcbPkcs7);IBuffer keyMaterial = CryptographicBuffer.ConvertStringToBinary(key, BinaryStringEncoding.Utf8);CryptographicKey symmetricKey = des.CreateSymmetricKey(keyMaterial);IBuffer plainBuffer = CryptographicBuffer.ConvertStringToBinary(plaintext, BinaryStringEncoding.Utf8);IBuffer cipherBuffer = CryptographicEngine.Encrypt(symmetricKey, plainBuffer, null);return CryptographicBuffer.EncodeToHexString(cipherBuffer);}public static string TripleDesDecrypt(string key, string ciphertext){SymmetricKeyAlgorithmProvider tripleDes = SymmetricKeyAlgorithmProvider.OpenAlgorithm(SymmetricAlgorithmNames.TripleDesEcb);IBuffer keyMaterial = CryptographicBuffer.ConvertStringToBinary(key, BinaryStringEncoding.Utf8);CryptographicKey symmetricKey = tripleDes.CreateSymmetricKey(keyMaterial);IBuffer cipherBuffer = CryptographicBuffer.DecodeFromHexString(ciphertext);IBuffer plainBuffer = CryptographicEngine.Decrypt(symmetricKey, cipherBuffer, null);return CryptographicBuffer.ConvertBinaryToString(BinaryStringEncoding.Utf8, plainBuffer);}public static string Md5Encrypt(string value){IBuffer data = CryptographicBuffer.ConvertStringToBinary(value, BinaryStringEncoding.Utf8);return Md5Encrypt(data);}public static string Md5Encrypt(IBuffer data){HashAlgorithmProvider md5 = HashAlgorithmProvider.OpenAlgorithm(HashAlgorithmNames.Md5);IBuffer hashedData = md5.HashData(data);return CryptographicBuffer.EncodeToHexString(hashedData);}public static string EncodeToBase64String(string value){IBuffer buffer = CryptographicBuffer.ConvertStringToBinary(value, BinaryStringEncoding.Utf8);return CryptographicBuffer.EncodeToBase64String(buffer);}public static string DecodeFromBase64String(string value){IBuffer buffer = CryptographicBuffer.DecodeFromBase64String(value);return CryptographicBuffer.ConvertBinaryToString(BinaryStringEncoding.Utf8, buffer);}}

View Code

整理UWP中网络和设备信息获取的帮助类,需要的拿走。相关推荐

  1. Android 手机设备信息获取使用详解

    Android 手机是我们常用的工具之一,买手机之前,手机厂商会提供一些手机参数给我们,那么问题来了,我们该如何获取手机上的参数信息呢? 通过本文你讲了解到获取手机常用信息的基本方法. 获取手机基本信 ...

  2. Windows设备信息获取:(摄像头,声卡为例)Qt,WindowsAPI对比说明(2)

    Windows设备信息获取:(摄像头,声卡为例)Qt,WindowsAPI对比说明 补充说明 问题 QT摄像头相关信息获取(分辨率,图像格式) WindowsAPI,win10,win7不兼容问题 兼 ...

  3. 史上最全的iOS各种设备信息获取总结(iPhone8/iPhone X 已更新)

    不管是在Android开发还是iOS开发过程中,有时候我们需要经常根据设备的一些状态或信息进行不同的设置和性能配置,例如横竖屏切换时,电池电量低时,内存不够时,网络切换时等等,我们在这时候需要进行一些 ...

  4. iOS: iOS各种设备信息获取

    Author:si1ence Link:http://www.jianshu.com/p/b23016bb97af 为了统计用户信息.下发广告,服务器端往往需要手机用户设备及app的各种信息,下面讲述 ...

  5. Android平台Chromium net中的代理配置信息获取

    在计算机网络中,代理服务器 扮演着发起请求的客户端与服务器之间的中间人的角色.客户端连接到代理服务器,请求一些服务,比如文件,网页,或其它可以从服务器获得的资源,代理服务器以简化和控制复杂度的形式获取 ...

  6. Android系统信息获取 之六:网络连接状态信息获取

    Android系统可以通过WIFI和移动网络来连接互联网,系统网络连接状态是通过ConnectivityManager 类来获取的.关键代码如下: [java] view plaincopy Conn ...

  7. 在计算机网络互联设备中,网络互联设备

    数据在网络中是以"包"的形式传递的,但不同网络的"包",其格式也是不一样的.如果在不同的网络间传送数据,由于包格式不同,导致数据无法传送,于是网络间连接设备就充 ...

  8. 史上最全的iOS各种设备信息获取总结(iPhone X 详细信息已更新)

    2016.07.01 更新至iPhone X 新增设备颜色的获取 为了统计用户信息.下发广告,服务器端往往需要手机用户设备及app的各种信息,下面讲述一下各种信息的获取方式: 点击下载以上展示效果的G ...

  9. 史上最全的iOS各种设备信息获取总结(iPhone 12已更新)

    更新至iPhone 11   [转] 添加了iphone12的设备 > 为了统计用户信息.下发广告,服务器端往往需要手机用户设备及app的各种信息,下面讲述一下各种信息的获取方式: ![imag ...

  10. 苹果设备信息获取(截止到2016-02-23)

    为什么80%的码农都做不了架构师?>>>    切记 导入头文件哦 .h #import "sys/utsname.h" + (NSString *)getCur ...

最新文章

  1. 2020年企业业务营收同比增长23.0%,华为的数字化转型实践之道
  2. 水木-搜索引擎技术版
  3. 近世代数--外直积--外直积是什么?关于阶的性质?
  4. Matlab对话框总结
  5. JZOJ 5344. 【NOIP2017模拟9.3A组】摘果子
  6. 浅谈python_浅谈python-Django
  7. 20.if条件语句.rs
  8. 后缀的形容词_高三语法总复习:名词形容词变名词的后缀
  9. 互联网优秀架构师必读书单V2.0
  10. 高颜值免费在线SCI绘图工具支持导出PPT格式图片和图片分享功能
  11. socket和http间的区别
  12. 女生做程序员压力大吗?
  13. Spring Data JPA 条件查询 分页查询
  14. 再看2019大前端技术趋势,Web OS概念正落地
  15. 吾爱破解热榜:45k 的小工具让 Windows 升级成「全面屏」!
  16. 谷歌:科技让世界更美好
  17. 三国演义难念的人名扫盲
  18. 站长付个人微信支付宝收款系统如何对接?
  19. 运算放大器中的正负反馈判断和电压电流反馈判断
  20. 90后霸面男,成功入职华为后的一些小感悟...

热门文章

  1. Android开发框架整理
  2. flush table mysql_MySQL flush table 导致的锁问题
  3. 判断手机上是否安装某个APP(iOS)
  4. 关于laravel报错Class 'Barryvdh\Debugbar\ServiceProvider' not found
  5. Tp5接口请求数据返回正常,状态为500
  6. 网站五万ip需要服务器,30万IP网站要用什么样的服务器?
  7. 全网首发:制作LINUX安装软件包,要处理哪些系统目录和文件(1)
  8. 管理新语:不愿意做的事情,与其应付,不如直接明说
  9. 编程基本功:学会抄,自然就会创新
  10. maven teavm-idea-artifacts: Command execution failed.: Process exited with an error: 1 Exit value: 1