0
我的应用程序在启动时检查网络连接。在Android 2.3到4.4版本中,下面的方法很好(无论是仿真器还是实际设备)。在Android L预览模拟器上,该方法返回false。Android L中的ConnectivityManager预览
这里是我的代码:
// ===============================================================
public static boolean haveNetworkConnection(Context ctx) {
boolean haveConnectedWifi = false;
boolean haveConnectedMobile = false;
boolean haveConnectedEthernet = false;
ConnectivityManager cm = (ConnectivityManager) ctx
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo[] netInfo = cm.getAllNetworkInfo();
for (NetworkInfo ni : netInfo) {
// String con = ni.isConnected() ? "Connected" : "Not Connected";
if (!haveConnectedWifi) {
if (ni.getTypeName().equalsIgnoreCase("WIFI"))
if (ni.isConnected())
haveConnectedWifi = true;
}
if (!haveConnectedMobile) {
if (ni.getTypeName().equalsIgnoreCase("MOBILE"))
if (ni.isConnected())
haveConnectedMobile = true;
}
if (!haveConnectedEthernet) {
if (ni.getTypeName().equalsIgnoreCase("ETHERNET"))
if (ni.isConnected())
haveConnectedEthernet = true;
}
StringBuilder sb = new StringBuilder();
sb.append(ni.getTypeName()).append(" ").append(ni);
}
return haveConnectedWifi || haveConnectedMobile
|| haveConnectedEthernet;
}
有一些奇怪的东西StringBuilder
,我没有创建此代码 - 这是我继承了一个项目。自从它工作以来,我不需要改变任何东西。有谁知道ConnectivityManager
的工作方式是否有API更改?我检查了dev site上的API overview更改,但未看到任何相关信息。
这里sb有什么用? –
@niteshgoel这是用于已编辑的日志记录。 – KickingLettuce
类型名称没有稳定的API。首先将其更改为使用NetworkInfo.getType()并根据ConnectivityManager.TYPE_ *常量进行验证。 – alanv