




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
【移动应用开发技术】Android中如何使用NetworkUtils网络工具类
Android中如何使用NetworkUtils网络工具类,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。提供的方法:打开网络设置界面openWirelessSettings判断网络是否可用isAvailable判断网络是否连接isConnected判断网络是否是4Gis4G判断wifi是否连接状态isWifiConnected获取移动网络运营商名称getNetworkOperatorName获取移动终端类型getPhoneType获取当前的网络类型(WIFI,2G,3G,4G)getNetWorkType、getNetWorkTypeName代码:import
android.content.Context;
import
android.content.Intent;
import
.ConnectivityManager;
import
.NetworkInfo;
import
android.telephony.TelephonyManager;
/**
*
网络工具类
*/
public
class
NetworkUtils
{
public
static
final
int
NETWORK_NO
=
-1;
//
no
network
public
static
final
int
NETWORK_WIFI
=
1;
//
wifi
network
public
static
final
int
NETWORK_2G
=
2;
//
"2G"
networks
public
static
final
int
NETWORK_3G
=
3;
//
"3G"
networks
public
static
final
int
NETWORK_4G
=
4;
//
"4G"
networks
public
static
final
int
NETWORK_UNKNOWN
=
5;
//
unknown
network
private
static
final
int
NETWORK_TYPE_GSM
=
16;
private
static
final
int
NETWORK_TYPE_TD_SCDMA
=
17;
private
static
final
int
NETWORK_TYPE_IWLAN
=
18;
/**
*
打开网络设置界面
*
<p>3.0以下打开设置界面</p>
*
*
@param
context
上下文
*/
public
static
void
openWirelessSettings(Context
context)
{
if
(android.os.Build.VERSION.SDK_INT
>
10)
{
context.startActivity(new
Intent(vider.Settings.ACTION_SETTINGS));
}
else
{
context.startActivity(new
Intent(vider.Settings.ACTION_WIRELESS_SETTINGS));
}
}
/**
*
获取活动网络信息
*
*
@param
context
上下文
*
@return
NetworkInfo
*/
private
static
NetworkInfo
getActiveNetworkInfo(Context
context)
{
ConnectivityManager
cm
=
(ConnectivityManager)
context
.getSystemService(Context.CONNECTIVITY_SERVICE);
return
cm.getActiveNetworkInfo();
}
/**
*
判断网络是否可用
*
<p>需添加权限
{@code
<uses-permission
android:name="android.permission.ACCESS_NETWORK_STATE"/>}</p>
*
*
@param
context
上下文
*
@return
{@code
true}:
可用<br>{@code
false}:
不可用
*/
public
static
boolean
isAvailable(Context
context)
{
NetworkInfo
info
=
getActiveNetworkInfo(context);
return
info
!=
null
&&
info.isAvailable();
}
/**
*
判断网络是否连接
*
<p>需添加权限
{@code
<uses-permission
android:name="android.permission.ACCESS_NETWORK_STATE"/>}</p>
*
*
@param
context
上下文
*
@return
{@code
true}:
是<br>{@code
false}:
否
*/
public
static
boolean
isConnected(Context
context)
{
NetworkInfo
info
=
getActiveNetworkInfo(context);
return
info
!=
null
&&
info.isConnected();
}
/**
*
判断网络是否是4G
*
<p>需添加权限
{@code
<uses-permission
android:name="android.permission.ACCESS_NETWORK_STATE"/>}</p>
*
*
@param
context
上下文
*
@return
{@code
true}:
是<br>{@code
false}:
不是
*/
public
static
boolean
is4G(Context
context)
{
NetworkInfo
info
=
getActiveNetworkInfo(context);
return
info
!=
null
&&
info.isAvailable()
&&
info.getSubtype()
==
TelephonyManager.NETWORK_TYPE_LTE;
}
/**
*
判断wifi是否连接状态
*
<p>需添加权限
{@code
<uses-permission
android:name="android.permission.ACCESS_NETWORK_STATE"/>}</p>
*
*
@param
context
上下文
*
@return
{@code
true}:
连接<br>{@code
false}:
未连接
*/
public
static
boolean
isWifiConnected(Context
context)
{
ConnectivityManager
cm
=
(ConnectivityManager)
context
.getSystemService(Context.CONNECTIVITY_SERVICE);
return
cm
!=
null
&&
cm.getActiveNetworkInfo()
!=
null
&&
cm.getActiveNetworkInfo().getType()
==
ConnectivityManager.TYPE_WIFI;
}
/**
*
获取移动网络运营商名称
*
<p>如中国联通、中国移动、中国电信</p>
*
*
@param
context
上下文
*
@return
移动网络运营商名称
*/
public
static
String
getNetworkOperatorName(Context
context)
{
TelephonyManager
tm
=
(TelephonyManager)
context
.getSystemService(Context.TELEPHONY_SERVICE);
return
tm
!=
null
?
tm.getNetworkOperatorName()
:
null;
}
/**
*
获取移动终端类型
*
*
@param
context
上下文
*
@return
手机制式
*
<ul>
*
<li>{@link
TelephonyManager#PHONE_TYPE_NONE
}
:
0
手机制式未知</li>
*
<li>{@link
TelephonyManager#PHONE_TYPE_GSM
}
:
1
手机制式为GSM,移动和联通</li>
*
<li>{@link
TelephonyManager#PHONE_TYPE_CDMA
}
:
2
手机制式为CDMA,电信</li>
*
<li>{@link
TelephonyManager#PHONE_TYPE_SIP
}
:
3</li>
*
</ul>
*/
public
static
int
getPhoneType(Context
context)
{
TelephonyManager
tm
=
(TelephonyManager)
context
.getSystemService(Context.TELEPHONY_SERVICE);
return
tm
!=
null
?
tm.getPhoneType()
:
-1;
}
/**
*
获取当前的网络类型(WIFI,2G,3G,4G)
*
<p>需添加权限
{@code
<uses-permission
android:name="android.permission.ACCESS_NETWORK_STATE"/>}</p>
*
*
@param
context
上下文
*
@return
网络类型
*
<ul>
*
<li>{@link
#NETWORK_WIFI
}
=
1;</li>
*
<li>{@link
#NETWORK_4G
}
=
4;</li>
*
<li>{@link
#NETWORK_3G
}
=
3;</li>
*
<li>{@link
#NETWORK_2G
}
=
2;</li>
*
<li>{@link
#NETWORK_UNKNOWN}
=
5;</li>
*
<li>{@link
#NETWORK_NO
}
=
-1;</li>
*
</ul>
*/
public
static
int
getNetWorkType(Context
context)
{
int
netType
=
NETWORK_NO;
NetworkInfo
info
=
getActiveNetworkInfo(context);
if
(info
!=
null
&&
info.isAvailable())
{
if
(info.getType()
==
ConnectivityManager.TYPE_WIFI)
{
netType
=
NETWORK_WIFI;
}
else
if
(info.getType()
==
ConnectivityManager.TYPE_MOBILE)
{
switch
(info.getSubtype())
{
case
NETWORK_TYPE_GSM:
case
TelephonyManager.NETWORK_TYPE_GPRS:
case
TelephonyManager.NETWORK_TYPE_CDMA:
case
TelephonyManager.NETWORK_TYPE_EDGE:
case
TelephonyManager.NETWORK_TYPE_1xRTT:
case
TelephonyManager.NETWORK_TYPE_IDEN:
netType
=
NETWORK_2G;
break;
case
NETWORK_TYPE_TD_SCDMA:
case
TelephonyManager.NETWORK_TYPE_EVDO_A:
case
TelephonyManager.NETWORK_TYPE_UMTS:
case
TelephonyManager.NETWORK_TYPE_EVDO_0:
case
TelephonyManager.NETWORK_TYPE_HSDPA:
case
TelephonyManager.NETWORK_TYPE_HSUPA:
case
TelephonyManager.NETWORK_TYPE_HSPA:
case
TelephonyManager.NETWORK_TYPE_EVDO_B:
case
TelephonyManager.NETWORK_TYPE_EHRPD:
case
TelephonyManager.NETWORK_TYPE_HSPAP:
netType
=
NETWORK_3G;
break;
case
NETWORK_TYPE_IWLAN:
case
TelephonyManager.NETWORK_TYPE_LTE:
netType
=
NETWORK_4G;
break;
default:
String
subtypeName
=
info.getSubtypeName();
if
(subtypeName.equalsIgnoreCase("TD-SCDMA")
||
subtypeName.equalsIgnoreCase("WCDMA")
||
subtypeName.equalsIgnoreCase("CDMA2000"))
{
netType
=
NETWORK_3G;
}
else
{
netType
=
NETWORK_UNKNOWN;
}
break;
}
}
else
{
netType
=
NETWORK_UNKNOWN;
}
}
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论