在三星设备上检查网络状态时出现 NullPointerException
NullPointerException when checking Network-State on Samsung devices
我已经在 Play 商店发布了我的应用程序,我正在使用以下方法检查网络状态:
public class TestInternetConnection {
public boolean checkInternetConnection(Context context) {
ConnectivityManager con_manager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
if (con_manager.getActiveNetworkInfo() != null && con_manager.getActiveNetworkInfo().isAvailable() && con_manager.getActiveNetworkInfo().isConnected()) {
return true;
} else {
return false;
}
}
}
在 Google Play Console 中,我看到三星设备在使用 Nullpointerexception
调用 checkInternetConnection
方法时崩溃。问题是什么?在我的设备和其他设备上它工作得很好。
堆栈跟踪:
java.lang.NullPointerException:
at de.name.app.TestInternetConnection.checkInternetConnection (TestInternetConnection.java)
at de.name.app.SubstitutionInfoFragment.run (SubstitutionInfoFragment.java)
at java.lang.Thread.run (Thread.java:762)
您需要像这样修改您的功能,以便在所有设备上都能正常工作。只是在继续之前添加对上下文的空检查。
public static boolean checkInternetConnection(Context context) {
// Add a null check before you proceed
if (context == null) return false;
ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo info = cm.getActiveNetworkInfo();
return info != null && info.isConnected();
}
Reaz Murshed 的回答应该可以解决您眼前的问题,但在此之前,我认为您应该查看堆栈跟踪并找出您的应用程序将 null
上下文传递给 checkInternetConnection
的确切位置.这就是错误的真正来源。
我已经在 Play 商店发布了我的应用程序,我正在使用以下方法检查网络状态:
public class TestInternetConnection {
public boolean checkInternetConnection(Context context) {
ConnectivityManager con_manager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
if (con_manager.getActiveNetworkInfo() != null && con_manager.getActiveNetworkInfo().isAvailable() && con_manager.getActiveNetworkInfo().isConnected()) {
return true;
} else {
return false;
}
}
}
在 Google Play Console 中,我看到三星设备在使用 Nullpointerexception
调用 checkInternetConnection
方法时崩溃。问题是什么?在我的设备和其他设备上它工作得很好。
堆栈跟踪:
java.lang.NullPointerException:
at de.name.app.TestInternetConnection.checkInternetConnection (TestInternetConnection.java)
at de.name.app.SubstitutionInfoFragment.run (SubstitutionInfoFragment.java)
at java.lang.Thread.run (Thread.java:762)
您需要像这样修改您的功能,以便在所有设备上都能正常工作。只是在继续之前添加对上下文的空检查。
public static boolean checkInternetConnection(Context context) {
// Add a null check before you proceed
if (context == null) return false;
ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo info = cm.getActiveNetworkInfo();
return info != null && info.isConnected();
}
Reaz Murshed 的回答应该可以解决您眼前的问题,但在此之前,我认为您应该查看堆栈跟踪并找出您的应用程序将 null
上下文传递给 checkInternetConnection
的确切位置.这就是错误的真正来源。