EGH*_*HDK 5 java authentication networking android android-networking
在我开始下载某些文件之前,我有这个代码块用于测试是否存在网络连接.我遇到的问题是我也在需要基于网络登录表格的网络上进行测试(类似于酒店,机场甚至飞机).我正在使用的这段代码对于这种情况完全没用.网络报告它isAvailable和isConnected在这些情况下.这当然是个问题,因为我启动了失败的异步网络连接.我想知道是否有人知道我能做些什么来确保我"真正"联系,或者如果有人对这个问题有任何建议.
这是我的代码块:
ConnectivityManager manager = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = manager.getActiveNetworkInfo();
Log.e("", "Network info: "+networkInfo+" toString?: "+networkInfo.toString());
Log.e("", "getTypeName: "+networkInfo.getTypeName());
Log.e("", "isAvailable: "+networkInfo.isAvailable());
Log.e("", "isConnected: "+networkInfo.isConnected());
Run Code Online (Sandbox Code Playgroud)
以下是我尝试过我的代码块和结果的用例.
Network info: NetworkInfo: type: mobile[CDMA - 1xRTT], state: CONNECTED/CONNECTED, reason: connected, extra: , roaming: false, failover: true, isAvailable: true, isConnectedToProvisioningNetwork: false
toString?: NetworkInfo: type: mobile[CDMA - 1xRTT], state: CONNECTED/CONNECTED, reason: connected, extra: , roaming: false, failover: true, isAvailable: true, isConnectedToProvisioningNetwork: false
getTypeName: mobile
isAvailable: true
isConnected: true
Run Code Online (Sandbox Code Playgroud)
Network info: NetworkInfo: type: mobile[CDMA - eHRPD], state: CONNECTED/CONNECTED, reason: linkPropertiesChanged, extra: VZWINTERNET, roaming: false, failover: false, isAvailable: true, isConnectedToProvisioningNetwork: false
toString?: NetworkInfo: type: mobile[CDMA - eHRPD], state: CONNECTED/CONNECTED, reason: linkPropertiesChanged, extra: VZWINTERNET, roaming: false, failover: false, isAvailable: true, isConnectedToProvisioningNetwork: false
getTypeName: mobile
isAvailable: true
isConnected: true
Run Code Online (Sandbox Code Playgroud)
Crash: networkInfo NullPointerException
Run Code Online (Sandbox Code Playgroud)
Crash: networkInfo NullPointerException
Run Code Online (Sandbox Code Playgroud)
Network info: NetworkInfo: type: WIFI[], state: CONNECTED/CONNECTED, reason: (unspecified), extra: (none), roaming: false, failover: false, isAvailable: true
toString: NetworkInfo: type: WIFI[], state: CONNECTED/CONNECTED, reason: (unspecified), extra: (none), roaming: false, failover: false, isAvailable: true
getTypeName: WIFI
isAvailable: true
isConnected: true
Run Code Online (Sandbox Code Playgroud)
Network info: NetworkInfo: type: WIFI[], state: CONNECTED/CONNECTED, reason: (unspecified), extra: "myWifi", roaming: false, failover: false, isAvailable: true, isConnectedToProvisioningNetwork: false
toString?: NetworkInfo: type: WIFI[], state: CONNECTED/CONNECTED, reason: (unspecified), extra: "myWifi", roaming: false, failover: false, isAvailable: true, isConnectedToProvisioningNetwork: false
getTypeName: WIFI
isAvailable: true
isConnected: true
Run Code Online (Sandbox Code Playgroud)
Network info: NetworkInfo: type: WIFI[], state: CONNECTED/CONNECTED, reason: (unspecified), extra: (none), roaming: false, failover: false, isAvailable: true
toString?: NetworkInfo: type: WIFI[], state: CONNECTED/CONNECTED, reason: (unspecified), extra: (none), roaming: false, failover: false, isAvailable: true
getTypeName: WIFI
isAvailable: true
isConnected: true
Run Code Online (Sandbox Code Playgroud)
Network info: NetworkInfo: type: WIFI[], state: CONNECTED/CONNECTED, reason: (unspecified), extra: "myWifi", roaming: false, failover: false, isAvailable: true, isConnectedToProvisioningNetwork: false
toString?: NetworkInfo: type: WIFI[], state: CONNECTED/CONNECTED, reason: (unspecified), extra: "myWifi", roaming: false, failover: false, isAvailable: true, isConnectedToProvisioningNetwork: false
getTypeName: WIFI
isAvailable: true
isConnected: true
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,我得到真正的isAvailable和isConnected在那里我有没有认证的无线网络连接和认证无线上网的情况.
sac*_*n10 -1
尝试这个:-
private boolean hasInternetAccess() {
boolean hasInternetAccess = false;
try {
//I set google but you can try anything "reliable"...
//isReachable(1) the timeout in seconds
hasInternetAccess = InetAddress.getByName("www.google.com").isReachable(1);
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return hasInternetAccess;
}
Run Code Online (Sandbox Code Playgroud)
并使用这个
If(WifiConnected() && hasInternetAccess()){
//Do background Work...
}
Run Code Online (Sandbox Code Playgroud)