當前位置:首頁 » 安卓系統 » android網路連接判斷

android網路連接判斷

發布時間: 2022-05-20 10:15:15

『壹』 Android判斷網路是否連接,跳轉到設置頁面以及判斷連接的是什麼網路

/**
* 檢測網路是否連接
* @return
*/
private boolean checkNetworkState() {
boolean flag = false;
//得到網路連接信息
manager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
//去進行判斷網路是否連接
if (manager.getActiveNetworkInfo() != null) {
flag = manager.getActiveNetworkInfo().isAvailable();
}
if (!flag) {
setNetwork();
} else {
isNetworkAvailable();
}
return flag;
}

/**
* 網路未連接時,調用設置方法
*/
private void setNetwork(){
Toast.makeText(this, "wifi is closed!", Toast.LENGTH_SHORT).show();

AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setIcon(R.drawable.ic_launcher);
builder.setTitle("網路提示信息");
builder.setMessage("網路不可用,如果繼續,請先設置網路!");
builder.setPositiveButton("設置", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Intent intent = null;
/**
* 判斷手機系統的版本!如果API大於10 就是3.0+
* 因為3.0以上的版本的設置和3.0以下的設置不一樣,調用的方法不同
*/
if (android.os.Build.VERSION.SDK_INT > 10) {
intent = new Intent(android.provider.Settings.ACTION_WIFI_SETTINGS);
} else {
intent = new Intent();
ComponentName component = new ComponentName(
"com.android.settings",
"com.android.settings.WirelessSettings");
intent.setComponent(component);
intent.setAction("android.intent.action.VIEW");
}
startActivity(intent);
}
});
builder.setNegativeButton("取消", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
});
builder.create();
builder.show();
}

/**
* 網路已經連接,然後去判斷是wifi連接還是GPRS連接
* 設置一些自己的邏輯調用
*/
private void isNetworkAvailable(){

State gprs = manager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState();
State wifi = manager.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState();
if(gprs == State.CONNECTED || gprs == State.CONNECTING){
Toast.makeText(this, "wifi is open! gprs", Toast.LENGTH_SHORT).show();
}
//判斷為wifi狀態下才載入廣告,如果是GPRS手機網路則不載入!
if(wifi == State.CONNECTED || wifi == State.CONNECTING){
Toast.makeText(this, "wifi is open! wifi", Toast.LENGTH_SHORT).show();
loadAdmob();
}

}

『貳』 android 怎麼判斷當前網路連接是否可以連接到外網

Android里判斷是否可以上網,常用的是如下方法:

/**
* 檢測網路是否連接
*
* @return
*/
private boolean isNetworkAvailable() {
// 得到網路連接信息
ConnectivityManager manager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
// 去進行判斷網路是否連接
if (manager.getActiveNetworkInfo() != null) {
return manager.getActiveNetworkInfo().isAvailable();
}
return false;
}

有時候我們連接上一個沒有外網連接的WiFi或者有線就會出現這種極端的情況,目前Android SDK還不能識別這種情況,一般的解決辦法就是ping一個外網。

/* @author suncat
* @category 判斷是否有外網連接(普通方法不能判斷外網的網路是否連接,比如連接上區域網)
* @return
*/
public static final boolean ping() {

String result = null;
try {
String ip = "www..com";// ping 的地址,可以換成任何一種可靠的外網
Process p = Runtime.getRuntime().exec("ping -c 3 -w 100 " + ip);// ping網址3次
// 讀取ping的內容,可以不加
InputStream input = p.getInputStream();
BufferedReader in = new BufferedReader(new InputStreamReader(input));
StringBuffer stringBuffer = new StringBuffer();
String content = "";
while ((content = in.readLine()) != null) {
stringBuffer.append(content);
}
Log.d("------ping-----", "result content : " + stringBuffer.toString());
// ping的狀態
int status = p.waitFor();
if (status == 0) {
result = "success";
return true;
} else {
result = "failed";
}
} catch (IOException e) {
result = "IOException";
} catch (InterruptedException e) {
result = "InterruptedException";
} finally {
Log.d("----result---", "result = " + result);
}
return false;
}

『叄』 android 怎麼判斷網路狀態

獲取android系統的連接服務可判斷網路連接狀態,代碼如下
public class NetUtils{
public static boolean isNetworkConnected(Context context){
ConnectivityManager mConnectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo[] infos = cm.getAllNetworkInfo();
for(NetworkInfo info:infos){
if(info.isAvailable()&&info.isConnected()){
return true;
}
}
return false;
}
}

NetworkInfo的isAvailable()和isConnected()有以下5種狀態:
在WLAN設置界面
1,顯示連接已保存,但標題欄沒有,即沒有實質連接上:isConnected()==false,isAvailable()=true
2,顯示連接已保存,標題欄也有已連接上的圖標:isConnected()==true,isAvailable()=true
3,選擇不保存後:isConnected()==false,isAvailable()=true
4,選擇連接,在正在獲取IP地址時:isConnected()==false,isAvailable()=false
5,連接上後:isConnected()==true,isAvailable()=true

『肆』 Android關於判斷應用是否有網路

應用場景:實現判斷當前網路是否可用

當前有可用網路,如下圖:

『伍』 Android系列之如何判斷網路鏈接狀態

獲取android系統的連接服務可判斷網路連接狀態,代碼如下

java">publicclassNetUtils{
(Contextcontext){
=(ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo[]infos=cm.getAllNetworkInfo();
for(NetworkInfoinfo:infos){
if(info.isAvailable()&&info.isConnected()){
returntrue;
}
}
returnfalse;
}
}

NetworkInfo的isAvailable()和isConnected()有以下5種狀態:

在WLAN設置界面

1,顯示連接已保存,但標題欄沒有,即沒有實質連接上:isConnected()==false,isAvailable()=true


2,顯示連接已保存,標題欄也有已連接上的圖標:isConnected()==true,isAvailable()=true


3,選擇不保存後:isConnected()==false,isAvailable()=true


4,選擇連接,在正在獲取IP地址時:isConnected()==false,isAvailable()=false


5,連接上後:isConnected()==true,isAvailable()=true

『陸』 Android之判斷手機連接的網路類型是WIFI還是2G/3G/4G

wifi上網
不需要用到手機號碼的流量啊,有
wifi網路
資源肯定是用wifi好,但是沒有資源的情況只能用2G/3G的了,建議要用wifi的時候把手機網路關閉,避免wifi網路不穩定扣取了手機的流量。

『柒』 Android中如何簡單檢測網路是否連接

許可權:

<uses-permissionandroid:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permissionandroid:name="android.permission.INTERNET"/>
<uses-permissionandroid:name="android.permission.ACCESS_WIFI_STATE"/>

代碼:

/*
*判斷網路連接是否已開
*true已打開false未打開
**/
publicstaticbooleanisConn(Contextcontext){
booleanbisConnFlag=false;
ConnectivityManagerconManager=(ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfonetwork=conManager.getActiveNetworkInfo();
if(network!=null){
bisConnFlag=conManager.getActiveNetworkInfo().isAvailable();
}
returnbisConnFlag;
}


/*沒有網路跳轉到網路設置頁面
*打開設置網路界面
**/
(finalContextcontext){
//提示對話框
AlertDialog.Builderbuilder=newAlertDialog.Builder(context);
builder.setTitle("網路設置提示").setMessage("網路連接不可用,是否進行設置?").setPositiveButton("設置",newDialogInterface.OnClickListener(){

@Override
publicvoidonClick(DialogInterfacedialog,intwhich){
//TODOAuto-generatedmethodstub
Intentintent=null;
//判斷手機系統的版本即API大於10就是3.0或以上版本
if(Build.VERSION.SDK_INT>10){
intent=newIntent(Settings.ACTION_WIRELESS_SETTINGS);
}else{
intent=newIntent();
ComponentNamecomponent=newComponentName("com.android.settings","com.android.settings.WirelessSettings");
intent.setComponent(component);
intent.setAction("android.intent.action.VIEW");
}
context.startActivity(intent);
}
}).setNegativeButton("取消",newDialogInterface.OnClickListener(){

@Override
publicvoidonClick(DialogInterfacedialog,intwhich){
//TODOAuto-generatedmethodstub
dialog.dismiss();
}
}).show();
}

『捌』 android 網路判斷的幾種方法

//判斷是否有網路連接
(Contextcontext){
if(context!=null){
=(ConnectivityManager)context
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfomNetworkInfo=mConnectivityManager.getActiveNetworkInfo();
if(mNetworkInfo!=null){
returnmNetworkInfo.isAvailable();
}
}
returnfalse;
}

//判斷WIFI網路是否可用
(Contextcontext){
if(context!=null){
=(ConnectivityManager)context
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfomWiFiNetworkInfo=mConnectivityManager
.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
if(mWiFiNetworkInfo!=null){
returnmWiFiNetworkInfo.isAvailable();
}
}
returnfalse;
}

//判斷MOBILE網路是否可用
(Contextcontext){
if(context!=null){
=(ConnectivityManager)context
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfomMobileNetworkInfo=mConnectivityManager
.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
if(mMobileNetworkInfo!=null){
returnmMobileNetworkInfo.isAvailable();
}
}
returnfalse;
}

//獲取當前網路連接的類型信息
(Contextcontext){
if(context!=null){
=(ConnectivityManager)context
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfomNetworkInfo=mConnectivityManager.getActiveNetworkInfo();
if(mNetworkInfo!=null&&mNetworkInfo.isAvailable()){
returnmNetworkInfo.getType();
}
}
return-1;
}

『玖』 android 能判斷當前網路是否連接,連接的是 wifi 還是 3g/4g

// 獲取代表聯網狀態的NetWorkInfo對象 NetworkInfo networkInfo = connManager.getActiveNetworkInfo();
// 獲取當前的網路連接是否可用 if (null == networkInfo){Toast.makeText(this, "當前的網路連接不可用", Toast.LENGTH_SHORT).show();
//當網路不可用時,跳轉到網路設置頁面 startActivityForResult(new Intent(
android.provider.Settings.ACTION_WIRELESS_SETTINGS), 1);} else {boolean available = networkInfo.isAvailable();
if (available){Log.i("通知", "當前的網路連接可用");
Toast.makeText(this, "當前的網路連接可用", Toast.LENGTH_SHORT).show();} else {Log.i("通知", "當前的網路連接不可用");
Toast.makeText(this, "當前的網路連接不可用", Toast.LENGTH_SHORT).show();}}State state = connManager.getNetworkInfo(
ConnectivityManager.TYPE_MOBILE).getState();
if (State.CONNECTED == state){Log.i("通知", "GPRS網路已連接");
Toast.makeText(this, "GPRS網路已連接", Toast.LENGTH_SHORT).show();}state = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI)
.getState();
if (State.CONNECTED == state){Log.i("通知", "WIFI網路已連接");
Toast.makeText(this, "WIFI網路已連接", Toast.LENGTH_SHORT).show();}//// 跳轉到無線網路設置界面
// startActivity(new
// Intent(android.provider.Settings.ACTION_WIRELESS_SETTINGS));
//// 跳轉到無限wifi網路設置界面
// startActivity(new
// Intent(android.provider.Settings.ACTION_WIFI_SETTINGS)); }也可以:
privatevoid testConnectivityManager(){ConnectivityManager conMan = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
//mobile 3G Network State mobile = conMan.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState();
Log.d(mobile.toString());
//wifi Network State wifi = conMan.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState();
Log.d(wifi.toString());
//如果3G網路和wifi網路都未連接,且不是處於正在連接狀態 則進入Network Setting界面 由用戶配置網路連接if(mobile==State.CONNECTED||mobile==State.CONNECTING)return;if(wifi==State.CONNECTED||wifi==State.CONNECTING)return;startActivity(new Intent(Settings.ACTION_WIRELESS_SETTINGS));//進入無線網路配置界面
//startActivity(new Intent(Settings.ACTION_WIFI_SETTINGS)); //進入手機中的wifi網路設置界面 }

『拾』 android 如何判斷網路是否能夠上網

實現步驟:
下面解決辦法來自於android學習手冊,android學習手冊包含9個章節,108個例子,源碼文檔隨便看,例子都是可交互,可運行,源碼採用android studio目錄結構,高亮顯示代碼,文檔都採用文檔結構圖顯示,可以快速定位。360手機助手中下載。排到第三個。
1、獲取ConnectivityManager對象
Context context = activity.getApplicationContext();
// 獲取手機所有連接管理對象(包括對wi-fi,net等連接的管理)
ConnectivityManager connectivityManager = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);

2、獲取NetworkInfo對象
// 獲取NetworkInfo對象
NetworkInfo[] networkInfo = connectivityManager.getAllNetworkInfo();

3、判斷當前網路狀態是否為連接狀態
if (networkInfo[i].getState() == NetworkInfo.State.CONNECTED)
{
return true;
}

4、在AndroidManifest.xml中添加訪問當前網路狀態許可權
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>

代碼如下:

public class ClassTestDemoActivity extends Activity
{
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
if (isNetworkAvailable(ClassTestDemoActivity.this))
{
Toast.makeText(getApplicationContext(), "當前有可用網路!", Toast.LENGTH_LONG).show();
}
else
{
Toast.makeText(getApplicationContext(), "當前沒有可用網路!", Toast.LENGTH_LONG).show();
}
}

/**
* 檢查當前網路是否可用
*
* @param context
* @return
*/

public boolean isNetworkAvailable(Activity activity)
{
Context context = activity.getApplicationContext();
// 獲取手機所有連接管理對象(包括對wi-fi,net等連接的管理)
ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);

if (connectivityManager == null)
{
return false;
}
else
{
// 獲取NetworkInfo對象
NetworkInfo[] networkInfo = connectivityManager.getAllNetworkInfo();

if (networkInfo != null && networkInfo.length > 0)
{
for (int i = 0; i < networkInfo.length; i++)
{
System.out.println(i + "===狀態===" + networkInfo[i].getState());
System.out.println(i + "===類型===" + networkInfo[i].getTypeName());
// 判斷當前網路狀態是否為連接狀態
if (networkInfo[i].getState() == NetworkInfo.State.CONNECTED)
{
return true;
}
}
}
}
return false;
}
}

熱點內容
linux查看掛載的存儲 發布:2025-08-21 03:41:34 瀏覽:843
cryptopythonrsa 發布:2025-08-21 03:36:29 瀏覽:674
androidmandroidn 發布:2025-08-21 03:31:50 瀏覽:211
為什麼不能把安卓桌面app設為默認 發布:2025-08-21 03:22:31 瀏覽:442
愛奇藝會員密碼哪裡設置 發布:2025-08-21 03:11:57 瀏覽:262
電信電話密碼是什麼 發布:2025-08-21 03:08:14 瀏覽:446
sqlserver自動收縮 發布:2025-08-21 03:07:28 瀏覽:685
微信伺服器開哪個地址 發布:2025-08-21 03:06:12 瀏覽:652
diy源碼 發布:2025-08-21 02:42:36 瀏覽:480
信息存儲與信息檢索 發布:2025-08-21 02:22:32 瀏覽:122