我需要检查Android应用上的互联网连接。
我正在使用此代码:
ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo ni = cm.getActiveNetworkInfo();
if (ni!=null && ni.isAvailable() && ni.isConnected()) {
return true;
} else {
return false;
}
无法传递下一个错误:
对于ConxsMTD
类型,方法getSystemService(String)未定义
我尝试使用getContext().getSystemService
,但也失败了下一个错误:
对于ConxsMTD
类型,方法getContext()未定义
知道我做错了吗?
答案 0 :(得分:1)
这不会修复您给出的示例,但我的示例确实有效并且更简单(在我看来)。
您要做的是发送“ping”(如果您想将其称为)以检查连接。如果连接完成,您知道您仍然连接。如果您获得IOException
或NullPointerException
,那么您可能会超时并且不再连接。
try {
URL url = new URL("http://www.google.com");
HttpURLConnection urlConnect = (HttpURLConnection) url.openConnection();
urlConnect.setConnectTimeout(1000);
urlConnect.getContent();
System.out.println("Connection established.");
} catch (NullPointerException np) {
np.printStackTrace();
} catch (IOException io) {
io.printStackTrace();
}
答案 1 :(得分:0)
使用此代码段,我在每个项目中都使用它:
public static boolean checkNetworkState(Context context) {
ConnectivityManager conMgr = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo infos[] = conMgr.getAllNetworkInfo();
for (NetworkInfo info : infos) {
if (info.getState() == State.CONNECTED)
return true;
}
return false;
}
因此,您只需将getApplicationContext()
传递给此方法,例如boolean hasConnection = checkNetworkState(getApplicationContext());