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

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中网络和设备信息获取的帮助类,需要的拿走。的更多相关文章

  1. Centos7中网络及设备相关配置

    centos7中,不再赞成使用ifconfig工具,取而代之的是nmcli工具,服务管理也是以systemctl工具取代了service,这些之前版本的工具虽然在centos7中还可以继续使用,只是出 ...

  2. 获取设备信息——获取客户端ip地址和mac地址

    1.获取本地IP(有可能是 内网IP,192.168.xxx.xxx) /** * 获取本地IP * * @return */ public static String getLocalIpAddre ...

  3. 史上最全的iOS各种设备信息获取总结

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

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

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

  5. iOS 设备信息获取

    參考:http://blog.csdn.net/decajes/article/details/41807977參考:http://zengrong.net/post/2152.htm1. 获取设备的 ...

  6. Python 网络爬虫与信息获取(一)—— requests 库的网络爬虫

    1. 安装与测试 进入 cmd(以管理员权限),使用 pip 工具,pip install requests 进行安装: 基本用法: >> import requests >> ...

  7. 亚马逊商品页面的简单爬取 --Pyhon网络爬虫与信息获取

    1.亚马逊商品页面链接地址(本次要爬取的页面url) https://www.amazon.cn/dp/B07BSLQ65P/ 2.代码部分 import requestsurl = "ht ...

  8. 京东某商品页面的简单爬取 --Pyhon网络爬虫与信息获取

    1.京东商品页面链接地址(本次要爬取的页面url) https://item.jd.hk/1953999200.html 2.代码部分 import requestsurl = "https ...

  9. Python 网络爬虫与信息获取(二)—— 页面内容提取

    1. 获取超链接 python获取指定网页上所有超链接的方法 links = re.findall(b'"((http|ftp)s?://.*?)"', html) links = ...

随机推荐

  1. Webpack--自学笔记

    原文--http://webpack.github.io/docs/tutorials/getting-started/ 什么是webpack? webpack是一个模块打包器.webpack把模块( ...

  2. Alpha事后诸葛亮

    Aruba小组Cento项目Postmortem 队员: 408 409 410 428 429 431   设想和目标 1.我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰 ...

  3. 深夜重温JavaScript中的对象和数组

    这一块实际上已经学过了,因为没有学好,在工作过程中遇到一些对象或者数组的操作,会去百度查找,浪费了许多宝贵的时间,所以特地再拐过头来重新学习. 对象 基本概念: 对象这种基本的数据结构还有其他很多种叫 ...

  4. python学习笔记-(十三)线程&多线程

    为了方便大家理解下面的知识,可以先看一篇文章:http://www.ruanyifeng.com/blog/2013/04/processes_and_threads.html 线程 1.什么是线程? ...

  5. Java核心思想

    回忆面向对象思想        面向对象,主页君也不敢对其多说什么,毕竟这是一个看似简单,但是其实蕴含很深层次理   论的东西,并不是看书就可以理解的,其实也是要在很多实际操作中学习,积累.     ...

  6. Java都有什么进阶技术

    Java都有什么进阶技术?   看到有人给题主推荐<代码整洁之道>,评论有人说那不是JAVA进阶的书- 私以为,一些人对JAVA进阶的理解片面了,JAVA不过也是一门语言,提升和进阶还是内 ...

  7. Yii2.0 用户登录详解(上)

    一.准备 在开始编写代码之前,我们需要思考一下:用户登陆模块,实现的是什么功能?很明显,是登陆功能,那么,登陆需要用户名和密码,我们在数据库的一张表中就应该准备好用户名和密码的字段,再思考一下,如果要 ...

  8. Maven个人手册

    一.Maven基本使用与设置 1.安装maven插件 1).下载maven并解压到指定目录,到该目录下复制当前路径path 2).在eclipse的dropins目录下编辑maven.link,将ma ...

  9. github上readme.md 格式

    参考:https://github.com/guoyunsky/Markdown-Chinese-Demo/edit/master/README.md

  10. Hibernate参数一览表

    参考文章地址:http://www.blogjava.net/i369/articles/194855.html Hibernate 参数设置一览表 属性名 用途 hibernate.dialect ...