[英]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;
}
}
}
在谷歌游戲控制台我看到,在調用的時候三星設備崩潰checkInternetConnection
與方法Nullpointerexception
。 問題是什么? 在我的設備和其他設備上,它都可以正常工作。
堆棧跟蹤:
java.lang.NullPointerException:
at de.name.app.TestInternetConnection.checkInternetConnection (TestInternetConnection.java)
at de.name.app.SubstitutionInfoFragment$2.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
。 這就是該錯誤的真正來源。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.