判断是否连接网络以及是否是局域网

 
 
    
    
  1. 判断是否能上外网
       
       
  1. 有时候我们连接上一个没有外网连接的WiFi或者需要输入账号和密码才能链接外网的网络,就会出现虽然网络可用,但是外网却不可以访问。针对这种情况,一般的解决办法就是ping一个外网,如果能ping通就说明可以真正上网,代码如下
  2. * @author sichard
  3. * @category 判断是否有外网连接(普通方法不能判断外网的网络是否连接,比如连接上局域网)
  4. * @return
  5. */
  6. public static final boolean ping() {
  7. String result = null;
  8. try {
  9. String ip = "www.baidu.com";// ping 的地址,可以换成任何一种可靠的外网
  10. Process p = Runtime.getRuntime().exec("ping -c 3 -w 100 " + ip);// ping网址3次
  11. // 读取ping的内容,可以不加
  12. InputStream input = p.getInputStream();
  13. BufferedReader in = new BufferedReader(new InputStreamReader(input));
  14. StringBuffer stringBuffer = new StringBuffer();
  15. String content = "";
  16. while ((content = in.readLine()) != null) {
  17. stringBuffer.append(content);
  18. }
  19. Log.d("------ping-----", "result content : " + stringBuffer.toString());
  20. // ping的状态
  21. int status = p.waitFor();
  22. if (status == 0) {
  23. result = "success";
  24. return true;
  25. } else {
  26. result = "failed";
  27. }
  28. } catch (IOException e) {
  29. result = "IOException";
  30. } catch (InterruptedException e) {
  31. result = "InterruptedException";
  32. } finally {
  33. Log.d("----result---", "result = " + result);
  34. }
  35. return false;
  1. 判断能否联网以及判断联网的类型
         
         
         
  1. public static String GetNetworkType()
  2. {
  3. String strNetworkType = "";
  4. NetworkInfo networkInfo = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE).getActiveNetworkInfo();
  5. if (networkInfo != null && networkInfo.isConnected())
  6. {
  7. if (networkInfo.getType() == ConnectivityManager.TYPE_WIFI)
  8. {
  9. strNetworkType = "WIFI";
  10. }
  11. else if (networkInfo.getType() == ConnectivityManager.TYPE_MOBILE)
  12. {
  13. String _strSubTypeName = networkInfo.getSubtypeName();
  14. Log.e("cocos2d-x", "Network getSubtypeName : " + _strSubTypeName);
  15. // TD-SCDMA networkType is 17
  16. int networkType = networkInfo.getSubtype();
  17. switch (networkType) {
  18. case TelephonyManager.NETWORK_TYPE_GPRS:
  19. case TelephonyManager.NETWORK_TYPE_EDGE:
  20. case TelephonyManager.NETWORK_TYPE_CDMA:
  21. case TelephonyManager.NETWORK_TYPE_1xRTT:
  22. case TelephonyManager.NETWORK_TYPE_IDEN: //api<8 : replace by 11
  23. strNetworkType = "2G";
  24. break;
  25. case TelephonyManager.NETWORK_TYPE_UMTS:
  26. case TelephonyManager.NETWORK_TYPE_EVDO_0:
  27. case TelephonyManager.NETWORK_TYPE_EVDO_A:
  28. case TelephonyManager.NETWORK_TYPE_HSDPA:
  29. case TelephonyManager.NETWORK_TYPE_HSUPA:
  30. case TelephonyManager.NETWORK_TYPE_HSPA:
  31. case TelephonyManager.NETWORK_TYPE_EVDO_B: //api<9 : replace by 14
  32. case TelephonyManager.NETWORK_TYPE_EHRPD: //api<11 : replace by 12
  33. case TelephonyManager.NETWORK_TYPE_HSPAP: //api<13 : replace by 15
  34. strNetworkType = "3G";
  35. break;
  36. case TelephonyManager.NETWORK_TYPE_LTE: //api<11 : replace by 13
  37. strNetworkType = "4G";
  38. break;
  39. default:
  40. // http://baike.baidu.com/item/TD-SCDMA 中国移动 联通 电信 三种3G制式
  41. if (_strSubTypeName.equalsIgnoreCase("TD-SCDMA") || _strSubTypeName.equalsIgnoreCase("WCDMA") || _strSubTypeName.equalsIgnoreCase("CDMA2000"))
  42. {
  43. strNetworkType = "3G";
  44. }
  45. else
  46. {
  47. strNetworkType = _strSubTypeName;
  48. }
  49. break;
  50. }
  51. Log.e("cocos2d-x", "Network getSubtype : " + Integer.valueOf(networkType).toString());
  52. }
  53. }
  54. Log.e("cocos2d-x", "Network Type : " + strNetworkType);
  55. return strNetworkType;
  56. }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值