整理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 == "" || homeProviderId == "" || homeProviderId == "")
{
return "中国移动";
}
//已验证
else if (homeProviderId == "")
{
return "中国联通";
}
//貌似还没win10 电信手机。。待验证
else if (homeProviderId == "")
{
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-equivalent
case WwanDataClass.Edge:
case WwanDataClass.Gprs:
return "2G";
//3G-equivalent
case 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-equivalent
case WwanDataClass.LteAdvanced:
return "4G"; //not connected
case WwanDataClass.None:
return "未连接"; //unknown
case WwanDataClass.Custom:
default:
return "未知";
}
}
else if (profile.IsWlanConnectionProfile)
{
return "WIFI";
}
return "未知";
}
catch (Exception)
{
return "未知"; //as default
} }
}
设备信息(分辨率,设备类型(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 > )
{
return Languages[];
}
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);
}
}
整理UWP中网络和设备信息获取的帮助类,需要的拿走。的更多相关文章
- Centos7中网络及设备相关配置
centos7中,不再赞成使用ifconfig工具,取而代之的是nmcli工具,服务管理也是以systemctl工具取代了service,这些之前版本的工具虽然在centos7中还可以继续使用,只是出 ...
- 获取设备信息——获取客户端ip地址和mac地址
1.获取本地IP(有可能是 内网IP,192.168.xxx.xxx) /** * 获取本地IP * * @return */ public static String getLocalIpAddre ...
- 史上最全的iOS各种设备信息获取总结
来源:si1ence 链接:http://www.jianshu.com/p/b23016bb97af 为了统计用户信息.下发广告,服务器端往往需要手机用户设备及app的各种信息,下面讲述一下各种信息 ...
- iOS: iOS各种设备信息获取
Author:si1ence Link:http://www.jianshu.com/p/b23016bb97af 为了统计用户信息.下发广告,服务器端往往需要手机用户设备及app的各种信息,下面讲述 ...
- iOS 设备信息获取
參考:http://blog.csdn.net/decajes/article/details/41807977參考:http://zengrong.net/post/2152.htm1. 获取设备的 ...
- Python 网络爬虫与信息获取(一)—— requests 库的网络爬虫
1. 安装与测试 进入 cmd(以管理员权限),使用 pip 工具,pip install requests 进行安装: 基本用法: >> import requests >> ...
- 亚马逊商品页面的简单爬取 --Pyhon网络爬虫与信息获取
1.亚马逊商品页面链接地址(本次要爬取的页面url) https://www.amazon.cn/dp/B07BSLQ65P/ 2.代码部分 import requestsurl = "ht ...
- 京东某商品页面的简单爬取 --Pyhon网络爬虫与信息获取
1.京东商品页面链接地址(本次要爬取的页面url) https://item.jd.hk/1953999200.html 2.代码部分 import requestsurl = "https ...
- Python 网络爬虫与信息获取(二)—— 页面内容提取
1. 获取超链接 python获取指定网页上所有超链接的方法 links = re.findall(b'"((http|ftp)s?://.*?)"', html) links = ...
随机推荐
- Java的多线程机制系列:(二)缓存一致性和CAS
一.总线锁定和缓存一致性 这是两个操作系统层面的概念.随着多核时代的到来,并发操作已经成了很正常的现象,操作系统必须要有一些机制和原语,以保证某些基本操作的原子性.首先处理器需要保证读一个字节或写一个 ...
- Honeywords项目——检查密码是否被破解的一种简单方法
Honeywords项目使用一种简单的方法来改进hash后的密码的安全性——为每个账户维护一个额外的honeywords(假密码).如果有黑客拿到了密码的文件,然后试图用brute froce的方式破 ...
- /etc/fstab 文件配置项简单介绍
Untitled .note-content {font-family: 'Helvetica Neue', Arial, 'Hiragino Sans GB', STHeiti, 'Microsof ...
- JS中的decodeURIComponent和encodeURIComponent
两个函数可以对特定函数生成的密码字符串进行解密操作,就可以生成为未解密的字符串 使用方法: //加密 encodeURIComponent("http://www.cnblogs.com/7 ...
- <<< java异常The import java.util cannot be resolved
异常:The import java.util cannot be resolved 原因:这是由于你的项目buildpath不对 解决方案:右键项目-------buildpath--------最 ...
- CentOS6.5下Redis安装与配置
http://blog.csdn.net/ludonqin/article/details/47211109
- linux系统下修改文件夹目录权限
linux系统下修改文件夹目录权限 文件夹权限问题 Linux.Fedora.Ubuntu修改文件.文件夹权限的方法差不多.很多人开始接触Linux时都很头痛Linux的文件权限问题.这里告诉大家如何 ...
- WordPress数据库优化技巧
各位站长都知道wordpress用久了就会越来越慢.今天就给大家介绍如何给自己的wordpress提速,分两种方法:1.插件属性wordpress的都知道其插件是相当的多,只要你能想得到的基本都有,在 ...
- centos7安装activemq
activemq下载地址,http://activemq.apache.org/download.html,下载后解压,进入bin,直接运行 activemq start bin/activemq s ...
- [UML]UML系列——包图Package
系列文章 [UML]UML系列——用例图Use Case [UML]UML系列——用例图中的各种关系(include.extend) [UML]UML系列——类图Class ...