如果擬開發一個網絡應用的程序,首先考慮是否接入網絡,在Android手機中判斷是否聯網可以通過ConnectivityManager 類的isAvailable()方法判斷,首先獲取網絡通訊類的實例 ConnectivityManager cwjManager=(ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE); ,使用cwjManager.getActiveNetworkInfo().isAvailable(); 來返回是否有效,如果爲True則表示當前Android手機已經聯網,可能是WiFi或GPRS、HSDPA等等,具體的可以通過ConnectivityManager 類的getActiveNetworkInfo() 方法判斷詳細的接入方式,需要注意的是有關調用需要加入<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission> 這個權限,android開發網提醒大家在真機上Market和Browser程序都使用了這個方法,來判斷是否繼續,同時在一些網絡超時的時候也可以檢查下網絡連接是否存在,以免浪費手機上的電力資源
判斷網絡是否連接資源地址:http://download.csdn.net/detail/u014649598/7966901
一、判斷網絡連接是否可用,不可用跳轉到設置界面
@Override
protected void onStart() {
AlertDialog.Builder builder=new Builder(this);
//檢查用戶的網絡情況
ConnectivityManager cm=(ConnectivityManager) MainActivity.this.getSystemService(Context.CONNECTIVITY_SERVICE);
//返回當前可用網絡信息
NetworkInfo info=cm.getActiveNetworkInfo();
if(info!=null&&info.isConnected()){
Toast.makeText(MainActivity.this, "網絡可用", 0).show();
}else{
Toast.makeText(MainActivity.this, "網絡不可用", 0).show();
builder.setTitle("提醒");
builder.setMessage("當前網絡不可用,點擊確定設置網絡");
builder.setPositiveButton("確定", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Intent intent=new Intent();
intent.setClassName("com.android.settings", "com.android.settings.Settings");
startActivity(intent);
}
}
);
builder.create().show();
}
super.onStart();
}
二、使用ConnectionChangeReceiver判斷網絡是否可用
public class MainActivity extends Activity {
private ConnectionChangeReceiver myReceiver;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//用廣播判斷
myReceiver=new ConnectionChangeReceiver();
this.registerReceiver(myReceiver, new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION));
}
public class ConnectionChangeReceiver extends BroadcastReceiver
{
@Override
public void onReceive(Context context, Intent intent) {
ConnectivityManager connectivityManager = (ConnectivityManager)
context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo mobworkInfo = connectivityManager
.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
NetworkInfo wifiworkInfo = connectivityManager
.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
boolean IsNetConnected = mobworkInfo.isConnected();
boolean IsWifiConnected = wifiworkInfo.isConnected();
if(IsNetConnected || IsWifiConnected){
System.out.println("網絡打開");
Log.e("wankai", "wankai");
boolean isConnected = true;
}else{
boolean isConnected = false;
System.out.println("網絡關閉");
Log.e("wankai2", "wangguan");
}
}
}
}
三、判斷GPS是否打開
public static boolean isGpsEnabled(Context context) {
LocationManager lm = ((LocationManager) context
.getSystemService(Context.LOCATION_SERVICE));
List<String> accessibleProviders = lm.getProviders(true);
return accessibleProviders != null && accessibleProviders.size() > 0;
}
四、判斷WIFI是否打開
public static boolean isWifiEnabled(Context context) {
ConnectivityManager mgrConn = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
TelephonyManager mgrTel = (TelephonyManager) context
.getSystemService(Context.TELEPHONY_SERVICE);
return ((mgrConn.getActiveNetworkInfo() != null && mgrConn
.getActiveNetworkInfo().getState() == NetworkInfo.State.CONNECTED) || mgrTel
.getNetworkType() == TelephonyManager.NETWORK_TYPE_UMTS);
}
五、判斷是否是3G網絡
public static boolean is3rd(Context context) {
ConnectivityManager cm = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkINfo = cm.getActiveNetworkInfo();
if (networkINfo != null
&& networkINfo.getType() == ConnectivityManager.TYPE_MOBILE) {
return true;
}
return false;
}
六、判斷是wifi還是3g網絡,用戶的體現性在這裏了,wifi就可以建議下載或者在線播放。
public static boolean isWifi(Context context) {
ConnectivityManager cm = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkINfo = cm.getActiveNetworkInfo();
if (networkINfo != null
&& networkINfo.getType() == ConnectivityManager.TYPE_WIFI) {
return true;
}
return false;
}