版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
【移動(dòng)應(yīng)用開發(fā)技術(shù)】Android中如何使用NetworkUtils網(wǎng)絡(luò)工具類
Android中如何使用NetworkUtils網(wǎng)絡(luò)工具類,相信很多沒有經(jīng)驗(yàn)的人對(duì)此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個(gè)問題。提供的方法:打開網(wǎng)絡(luò)設(shè)置界面openWirelessSettings判斷網(wǎng)絡(luò)是否可用isAvailable判斷網(wǎng)絡(luò)是否連接isConnected判斷網(wǎng)絡(luò)是否是4Gis4G判斷wifi是否連接狀態(tài)isWifiConnected獲取移動(dòng)網(wǎng)絡(luò)運(yùn)營(yíng)商名稱getNetworkOperatorName獲取移動(dòng)終端類型getPhoneType獲取當(dāng)前的網(wǎng)絡(luò)類型(WIFI,2G,3G,4G)getNetWorkType、getNetWorkTypeName代碼:import
android.content.Context;
import
android.content.Intent;
import
.ConnectivityManager;
import
.NetworkInfo;
import
android.telephony.TelephonyManager;
/**
*
網(wǎng)絡(luò)工具類
*/
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;
/**
*
打開網(wǎng)絡(luò)設(shè)置界面
*
<p>3.0以下打開設(shè)置界面</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));
}
}
/**
*
獲取活動(dòng)網(wǎng)絡(luò)信息
*
*
@param
context
上下文
*
@return
NetworkInfo
*/
private
static
NetworkInfo
getActiveNetworkInfo(Context
context)
{
ConnectivityManager
cm
=
(ConnectivityManager)
context
.getSystemService(Context.CONNECTIVITY_SERVICE);
return
cm.getActiveNetworkInfo();
}
/**
*
判斷網(wǎng)絡(luò)是否可用
*
<p>需添加權(quán)限
{@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();
}
/**
*
判斷網(wǎng)絡(luò)是否連接
*
<p>需添加權(quán)限
{@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();
}
/**
*
判斷網(wǎng)絡(luò)是否是4G
*
<p>需添加權(quán)限
{@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是否連接狀態(tài)
*
<p>需添加權(quán)限
{@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;
}
/**
*
獲取移動(dòng)網(wǎng)絡(luò)運(yùn)營(yíng)商名稱
*
<p>如中國(guó)聯(lián)通、中國(guó)移動(dòng)、中國(guó)電信</p>
*
*
@param
context
上下文
*
@return
移動(dòng)網(wǎng)絡(luò)運(yùn)營(yíng)商名稱
*/
public
static
String
getNetworkOperatorName(Context
context)
{
TelephonyManager
tm
=
(TelephonyManager)
context
.getSystemService(Context.TELEPHONY_SERVICE);
return
tm
!=
null
?
tm.getNetworkOperatorName()
:
null;
}
/**
*
獲取移動(dòng)終端類型
*
*
@param
context
上下文
*
@return
手機(jī)制式
*
<ul>
*
<li>{@link
TelephonyManager#PHONE_TYPE_NONE
}
:
0
手機(jī)制式未知</li>
*
<li>{@link
TelephonyManager#PHONE_TYPE_GSM
}
:
1
手機(jī)制式為GSM,移動(dòng)和聯(lián)通</li>
*
<li>{@link
TelephonyManager#PHONE_TYPE_CDMA
}
:
2
手機(jī)制式為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;
}
/**
*
獲取當(dāng)前的網(wǎng)絡(luò)類型(WIFI,2G,3G,4G)
*
<p>需添加權(quán)限
{@code
<uses-permission
android:name="android.permission.ACCESS_NETWORK_STATE"/>}</p>
*
*
@param
context
上下文
*
@return
網(wǎng)絡(luò)類型
*
<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等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 項(xiàng)目驗(yàn)收申請(qǐng)報(bào)告(31篇)
- 2021年網(wǎng)生代線上社交行為洞察報(bào)告
- 詩(shī)詞起源與發(fā)展模板
- 小型冷庫(kù)門采購(gòu)合同模板
- 幼教數(shù)學(xué)應(yīng)用模板
- 幼兒閱讀教學(xué)策略模板
- 平價(jià)裝潢合同范例
- 《俄羅斯經(jīng)貿(mào)地理》課件
- 應(yīng)對(duì)高三生活報(bào)告模板
- 合伙出資買房合同范例
- 郵儲(chǔ)高級(jí)練習(xí)卷三(第12章-第17章)附有答案
- 重慶市江北區(qū)2023-2024學(xué)年六年級(jí)下學(xué)期期末考試數(shù)學(xué)試題
- 軍隊(duì)文職聘用合同管理規(guī)定
- 2024年貴州省安順市西秀區(qū)小升初語(yǔ)文試卷
- 2024-2029年中國(guó)兒童牙冠行業(yè)市場(chǎng)現(xiàn)狀分析及競(jìng)爭(zhēng)格局與投資發(fā)展研究報(bào)告
- 新時(shí)代鐵路發(fā)展面對(duì)面全文內(nèi)容
- 人工智能與語(yǔ)文閱讀理解教學(xué)
- 科學(xué)素養(yǎng)培育及提升-知到答案、智慧樹答案
- 快遞主管崗位職責(zé)
- 醫(yī)療差錯(cuò)、糾紛、事故登記表
- 七年級(jí)第一次期中家長(zhǎng)會(huì)課件
評(píng)論
0/150
提交評(píng)論