如何确定Android设备可用的当前互联网连接类型?例如有它返回WiFi,3G,没有。如何确定Android互联网连接?
回答
您还可以使用TelephonyManager找出移动网络类型是什么:
TelephonyManager telephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
int networkType = telephonyManager.getNetworkType();
可能的网络类型为http://developer.android.com/reference/android/telephony/TelephonyManager.html#getNetworkType%28%29
看到这个帖子列出的,我回答同样的问题 how to save request and resend in android app
您可以使用它来确定您是否连接:
final ConnectivityManager connectManager = (ConnectivityManager)ctx.getSystemService(Context.CONNECTIVITY_SERVICE); // ctx stands for the Context
final NetworkInfo mobile = connectManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
final NetworkInfo wifi = connectManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI );
// Return true if connected, either in 3G or wi-fi
return ((mobile != null && mobile.getState() == NetworkInfo.State.CONNECTED) ||
(wifi != null && wifi.getState() == NetworkInfo.State.CONNECTED) );
}
此代码需要权限ACCESS_NETWORK_STATE
和ACCESS_WIFI_STATE
。
编辑:public NetworkInfo getNetworkInfo (int networkType)
has been deprecated in API 21。对于高于20,你可以做API级别如下:
final Network[] networks = connectManager.getAllNetworks();
boolean connected = false;
for (int ctr = 0; !connected && ctr < networks.length; ++ctr) {
final NetworkInfo network = connectManager.getNetworkInfo(networks[ctr]);
final int netType = network.getType();
connected = (network.getState() == NetworkInfo.State.CONNECTED) &&
(
netType == ConnectivityManager.TYPE_MOBILE ||
netType == ConnectivityManager.TYPE_WIFI /*||
netType == ConnectivityManager.TYPE_WIMAX ||
netType == ConnectivityManager.TYPE_ETHERNET */ );
}
return connected;
我限制了该代码到Wi-Fi和3G按照任择议定书的问题,但它很容易把它扩大到新增加的连接类型,如以太网或Wi - 最大。
感谢您的关心。我试图用这种方式来使用这个代码,但是如果(连接的)startActivity(intent7); \t} – user667340 2011-08-23 15:20:11
这意味着在连接时执行的代码中存在错误。但不是在未连接时执行的代码中。 – Shlublu 2011-08-23 15:21:45
请指导我如何才能在案件陈述,如果其连接到互联网它应该打开另一个意图,否则它只是显示在吐司。 – user667340 2011-08-23 15:27:14
不知道为什么你的应用程序崩溃,也许这有助于。也许试试这个方法:(需要应用程序上下文)
public static boolean isInternetConnectionActive(Context context) {
NetworkInfo networkInfo = ((ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE))
.getActiveNetworkInfo();
if(networkInfo == null || !networkInfo.isConnected()) {
return false;
}
return true;
}
然后尝试拨打
if(isInternetConnectionActive(getApplicationContext)) {
/* start Intent */
}
else {
/* show Toast */
}
希望这有助于
- 1. Android如何确定其互联网连接状态?
- 2. Android定期检查互联网连接
- 3. 确定互联网连接是否可以通过WiFi在android
- 4. Android连续检查互联网连接
- 5. 互联网连接
- 6. 如何确定互联网连接是否可用?
- 7. Android互联网连接检查
- 8. Android互联网连接问题
- 9. 在Android中检查互联网连接
- 10. Android的互联网连接超时
- 11. Android互联网连接检查问题
- 12. 在Android上检查互联网连接
- 13. Android重新连接互联网问题
- 14. android不连接到互联网
- 15. Android - 监控互联网连接状态
- 16. 互联网没有连接在android
- 17. Android检查互联网连接
- 18. Android&T-Mobile互联网连接问题
- 19. 在Android中测试互联网连接
- 20. 超时检查互联网连接Android
- 21. Android应用程序互联网连接
- 22. Android,检查互联网连接
- 23. Android的互联网连接问题
- 24. 在android中检查互联网连接
- 25. Android:建立互联网连接
- 26. 启用互联网连接 - Android Wear
- 27. 在android中检测互联网连接
- 28. 在Android上检查互联网连接
- 29. Android:检查互联网连接
- 30. Android InputStream互联网断开连接
不支持WiFi的工作,不是吗? – shkschneider 2012-08-23 17:43:45
不,这就是为什么我说“你也可以......”以防万一有人需要知道正在使用的移动网络的类型。其他答案中至少有一些只说明连接是WiFi还是移动。 – Intrications 2012-08-23 19:32:32