判断是否连接网络以及是否是局域网
来源:互联网 发布:淘宝优惠券返利能赚钱 编辑:程序博客网 时间:2024/05/31 19:18
判断是否能上外网有时候我们连接上一个没有外网连接的WiFi或者需要输入账号和密码才能链接外网的网络,就会出现虽然网络可用,但是外网却不可以访问。针对这种情况,一般的解决办法就是ping一个外网,如果能ping通就说明可以真正上网,代码如下
* @author sichard
* @category 判断是否有外网连接(普通方法不能判断外网的网络是否连接,比如连接上局域网)
* @return
*/
public static final boolean ping() {
String result = null;
try {
String ip = "www.baidu.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;
判断能否联网以及判断联网的类型 public static String GetNetworkType()
{
String strNetworkType = "";
NetworkInfo networkInfo = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE).getActiveNetworkInfo();
if (networkInfo != null && networkInfo.isConnected())
{
if (networkInfo.getType() == ConnectivityManager.TYPE_WIFI)
{
strNetworkType = "WIFI";
}
else if (networkInfo.getType() == ConnectivityManager.TYPE_MOBILE)
{
String _strSubTypeName = networkInfo.getSubtypeName();
Log.e("cocos2d-x", "Network getSubtypeName : " + _strSubTypeName);
// TD-SCDMA networkType is 17
int networkType = networkInfo.getSubtype();
switch (networkType) {
case TelephonyManager.NETWORK_TYPE_GPRS:
case TelephonyManager.NETWORK_TYPE_EDGE:
case TelephonyManager.NETWORK_TYPE_CDMA:
case TelephonyManager.NETWORK_TYPE_1xRTT:
case TelephonyManager.NETWORK_TYPE_IDEN: //api<8 : replace by 11
strNetworkType = "2G";
break;
case TelephonyManager.NETWORK_TYPE_UMTS:
case TelephonyManager.NETWORK_TYPE_EVDO_0:
case TelephonyManager.NETWORK_TYPE_EVDO_A:
case TelephonyManager.NETWORK_TYPE_HSDPA:
case TelephonyManager.NETWORK_TYPE_HSUPA:
case TelephonyManager.NETWORK_TYPE_HSPA:
case TelephonyManager.NETWORK_TYPE_EVDO_B: //api<9 : replace by 14
case TelephonyManager.NETWORK_TYPE_EHRPD: //api<11 : replace by 12
case TelephonyManager.NETWORK_TYPE_HSPAP: //api<13 : replace by 15
strNetworkType = "3G";
break;
case TelephonyManager.NETWORK_TYPE_LTE: //api<11 : replace by 13
strNetworkType = "4G";
break;
default:
// http://baike.baidu.com/item/TD-SCDMA 中国移动 联通 电信 三种3G制式
if (_strSubTypeName.equalsIgnoreCase("TD-SCDMA") || _strSubTypeName.equalsIgnoreCase("WCDMA") || _strSubTypeName.equalsIgnoreCase("CDMA2000"))
{
strNetworkType = "3G";
}
else
{
strNetworkType = _strSubTypeName;
}
break;
}
Log.e("cocos2d-x", "Network getSubtype : " + Integer.valueOf(networkType).toString());
}
}
Log.e("cocos2d-x", "Network Type : " + strNetworkType);
return strNetworkType;
}
0 0
- 判断是否连接网络以及是否是局域网
- 判断是否连接网络以及是否是局域网
- 判断是否连接网络以及是否是局域网
- Unity判断网络是否连接 以及 判断是否连接WiFi
- Unity判断网络是否连接 以及 判断是否连接WiFi
- 判断是否连接网络
- 判断网络是否连接
- 判断网络是否连接
- 判断网络是否连接
- 判断网络是否连接
- 判断网络是否连接,
- 判断网络是否连接
- 判断网络是否连接
- 判断网络是否连接
- 判断网络是否连接
- 判断网络是否连接
- 判断网络是否连接
- 判断网络是否连接
- --initialize specified but the data directory has files in it. Aborting
- 我们在网页上轻轻点击一下,发生了些什么(上)
- Activiti进阶(五)——流程执行历史记录
- 【数据挖掘】:FP增长算法详解
- 二维码
- 判断是否连接网络以及是否是局域网
- aaaa
- 基于libsvm的中文文本分类原型
- 表连接-右连接
- 第三方登录(传递QQ头像)
- leetcode-java-98. Validate Binary Search Tree
- 深入浅出 - Android系统移植与平台开发(十)- Android编译系统与定制Android平台系统
- PullToRefreshListView 应用讲解
- system_server native库的启动过程