【移动应用开发技术】Android中如何使用NetworkUtils网络工具类_第1页
【移动应用开发技术】Android中如何使用NetworkUtils网络工具类_第2页
【移动应用开发技术】Android中如何使用NetworkUtils网络工具类_第3页
【移动应用开发技术】Android中如何使用NetworkUtils网络工具类_第4页
【移动应用开发技术】Android中如何使用NetworkUtils网络工具类_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

【移动应用开发技术】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

提交评论