相应差点儿没有不跟网络打交道的android应用,那么在实际中就需求检測手机是否有网络连接。甚至须要推断是何种方式连接,这样能给用户带来更好的体验和一些使用指导,以下给出一些经常使用的推断。假设要知道是否有网络、以及是採用wifi连接的还是3G连接的。调用以下相应方法模型就OK了。代码例如以下:
TestNetworkActivity:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
|
package com.home.testnetwork;
import java.util.List;
import android.app.Activity;
import android.content.Context;
import android.location.LocationManager;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
public class TestNetworkActivity extends Activity implements OnClickListener {
private Button checkBtn;
private EditText netText;
private EditText wifiText;
private EditText net3gText;
private EditText gpsText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
checkBtn = (Button) findViewById(R.id.main_btn_check);
checkBtn.setOnClickListener(this);
wifiText = (EditText) findViewById(R.id.main_et_wifi);
net3gText = (EditText) findViewById(R.id.main_et_3g);
gpsText = (EditText) findViewById(R.id.main_et_GPS);
netText = (EditText) findViewById(R.id.main_et_net);
}
/**
* 检測网络是否连接
*
* @return
*/
private boolean isNetConnected() {
ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
if (cm != null) {
NetworkInfo[] infos = cm.getAllNetworkInfo();
if (infos != null) {
for (NetworkInfo ni : infos) {
if (ni.isConnected()) {
return true;
}
}
}
}
return false;
}
/**
* 检測wifi是否连接
*
* @return
*/
private boolean isWifiConnected() {
ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
if (cm != null) {
NetworkInfo networkInfo = cm.getActiveNetworkInfo();
if (networkInfo != null
&& networkInfo.getType() == ConnectivityManager.TYPE_WIFI) {
return true;
}
}
return false;
}
/**
* 检測3G是否连接
*
* @return
*/
private boolean is3gConnected() {
ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
if (cm != null) {
NetworkInfo networkInfo = cm.getActiveNetworkInfo();
if (networkInfo != null
&& networkInfo.getType() == ConnectivityManager.TYPE_MOBILE) {
return true;
}
}
return false;
}
/**
* 检測GPS是否打开
*
* @return
*/
private boolean isGpsEnabled() {
LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
List<String> accessibleProviders = lm.getProviders(true);
for (String name : accessibleProviders) {
if ("gps".equals(name)) {
return true;
}
}
return false;
}
@Override
public void onClick(View v) {
if (v == checkBtn) {
netText.setText(isNetConnected() + "");
wifiText.setText(isWifiConnected() + "");
net3gText.setText(is3gConnected() + "");
gpsText.setText(isGpsEnabled() + "");
}
}
}
|
布局xml:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
|
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<Button
android:id="@+id/main_btn_check"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="检測网络" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="网络是否连接:" />
<EditText
android:id="@+id/main_et_net"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:enabled="false" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="wifi是否连接:" />
<EditText
android:id="@+id/main_et_wifi"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:enabled="false" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="3G是否连接:" />
<EditText
android:id="@+id/main_et_3g"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:enabled="false" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="GPS是否打开:" />
<EditText
android:id="@+id/main_et_GPS"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:enabled="false" />
</LinearLayout>
</LinearLayout>
|