注释:获取手机的网络状态信息需要添加权限
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
/**
* 检查网络是否连接
* @param context
* @return
*/
public static boolean checkNet(Context context) {
// 检查WIFI
boolean isWIFI = isWIFIConnection(context);
// 检查MOBILE
boolean isMOBILE = isMOBILEConnection(context);
// 检查APN信息
readAPN(context);
if(!isWIFI && !isMOBILE){
return true;
}
return false;
}
private String proxy;
/**
* 检查APN信息;如果用户所用的是wap方式连接的网络,
* 则在连接网络的时候需要设置代理的ip和端口号port 见方法setAPN()
*/
private static void readAPN(Context context) {
ContentResolver resolver = context.getContentResolver();
Uri uri = Uri.parse("content://telephony/carriers/preferapn");//4.0模拟器屏蔽掉了此权限
Cursor cursor = resolver.query(uri , null, null, null, null);
if(cursor != null && cursor.moveToFirst()){
//得到代理的ip
proxy = cursor.getString(cursor.getColumnIndex("proxy"));
//得到代理的端口
int prot = cursor.getInt(cursor.getColumnIndex("port"));
}
}
/**
*设置代理的ip和端口号port
*
*/
public static void setAPN(){
DefaultHttpClient client = new DefaultHttpClient();
// 判断是否需要设置代理信息
if (StringUtils.isNotBlank(proxy)) {
HttpHost host = new HttpHost(GlobalParams.PROXY, GlobalParams.PORT);
client.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY, host);
}
}
/**
* 检查MOBILE连接
*
* @return
*/
private static boolean isMOBILEConnection(Context context) {
ConnectivityManager manager = (ConnectivityManager) context
.getSystemService(context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = manager
.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
if (networkInfo != null) {
return networkInfo.isConnected();
}
return false;
}
/**
* 检查WIFI连接
*
* @return
*/
private static boolean isWIFIConnection(Context context) {
ConnectivityManager manager = (ConnectivityManager) context
.getSystemService(context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = manager
.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
if (networkInfo != null) {
return networkInfo.isConnected();
}
return false;
}
判断手机网络连接状态
最新推荐文章于 2024-09-18 16:58:53 发布