整理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 = ...
随机推荐
- eclipse安装和配置
一.下载eclipse eclipse下载页 (选择"Eclipse IDE for Java EE Developers",适用于web和android开发) 我用的是luna的 ...
- shell判断条件整理
1.字符串判断 str1 = str2 当两个字符串串有相同内容.长度时为真 str1 != str2 当字符串str1和str2不等时为真 -n str1 当字符串的长度大于0时为真(串非空) -z ...
- CSS3实现加载中效果
代码: <!doctype html> <html> <head> <meta charset="utf-8" /> <tit ...
- 1JavaEE应用简介----青软S2SH(笔记)
这本书主要是讲解Struts2,spring,Hibernate框架的, 因为工作中用的较多的是SpringMVC,Struts2用的较少,所以想系统学习一下,就买了这本书. 这本书是青软的,虽然是培 ...
- java8入门 错误:找不到或者无法加载主类
如果你也遇上的这个问题,但是如果你的Java版本不是6以上,这个解决方案可能就不适合你... 最近在跟着李兴华老湿的视频<<编程开发入门Java 8>>的学习Java... 但 ...
- 搭建 Windows Server 2003 + IIS6.0 + FastCGI + PHP5.3.29 + MySQL5.5.38 + Memcached1.2.6
一.下载相关软件: 1.VC9运行库 即VISUAL C++ 2008 自PHP5.3.0开始,PHP提供VC2008编译版,需要安装VC++ 2008的运行库. [微软官方下载] http://ww ...
- sql中case when语句的使用-来自网摘文章
Case具有两种格式.简单Case函数和Case搜索函数. --简单Case函数 CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE '其他' END ...
- BZOJ4551——[Tjoi2016&Heoi2016]树
1.题意: 给定一颗有根树(根为1),有以下 两种操作:1. 标记操作:对某个结点打上标记(在最开始,只有结点1有标记,其他结点均无标记,而且对于某个 结点,可以打多次标记.)2. 询问操作:询问某个 ...
- Add Two Numbers LeetCode Java
You are given two linked lists representing two non-negative numbers. The digits are stored in rever ...
- C#高级编程笔记 Day 4, 2016年9月 12日(接口)
1.定义和实现接口:接口名称通常上以字母 I 开头 例子:定义IBankAccount接口 namespace Test.YinXi{ public interface IBankAccount{ v ...