我正在尝试下面的代码
ConnectivityManager conMgr = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
if (conMgr.getActiveNetworkInfo() == null
&& !conMgr.getActiveNetworkInfo().isConnected()
&& !conMgr.getActiveNetworkInfo().isAvailable())
如何导致应用崩溃
当我使用
时if (conMgr.getActiveNetworkInfo() == null)
每件事情都很好
什么是正确的使用方式
conMgr.getActiveNetworkInfo().isConnected()
conMgr.getActiveNetworkInfo().isAvailable())
这个!造成问题???
答案 0 :(得分:1)
如果conMgr.getActiveNetworkInfo()==Null
您遇到问题!conMgr.getActiveNetworkInfo().isConnected()
,则无法在空值上检查isConnected()
之类的方法。
您应该更改以下代码:
private boolean checkInternetConnection()
{
ConnectivityManager conMgr = (ConnectivityManager) getSystemService (Context.CONNECTIVITY_SERVICE);
if (conMgr.getActiveNetworkInfo() != null
&& conMgr.getActiveNetworkInfo().isAvailable()
&& conMgr.getActiveNetworkInfo().isConnected())
{
return true;
}
else
{
return false;
}
}
答案 1 :(得分:0)
您的条件逻辑存在缺陷:
if (conMgr.getActiveNetworkInfo() == null
&& !conMgr.getActiveNetworkInfo().isConnected()
&& !conMgr.getActiveNetworkInfo().isAvailable())
仅当getActiveNetworkInfo()
返回null时,才会在返回值上调用方法(为null)。 &&
是短路的,这意味着A && B
B
仅在A
为真时进行评估。
您可能希望||
取代&&
。它同样也是短路的,这意味着A || B
B
仅在A
为假时进行评估。
答案 2 :(得分:0)
使用此方法 -
private boolean isNetworkAvailable() {
ConnectivityManager connectivityManager
= (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
return activeNetworkInfo != null && activeNetworkInfo.isConnected();
}
您还需要添加权限 -
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
希望这会有所帮助:)
答案 3 :(得分:0)
你可以这样使用
private boolean isConnected(Context context){
ConnectivityManager connectivityManager=(ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo=null;
if (connectivityManager != null) {
networkInfo=connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
if (!networkInfo.isAvailable()) {
networkInfo=connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
}
}
return networkInfo == null ? false : networkInfo.isConnected();
}
您必须获得 manifest.xml
的权限 <uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>