android - 检查网络连接时 getSystemService() 上出现 NullPointerException
问题描述
当我在一个片段中检查与 Internet 的连接时,我收到错误 NullPointerException,但在其他片段中它工作得非常好。
public static boolean isOnline() {
ConnectivityManager connectivityManager = (ConnectivityManager)
Injection.provideZiauddinAppInstance()
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
if (networkInfo != null && networkInfo.isAvailable() && networkInfo.isConnected()) {
return true;
}
return false;
}
解决方案
创建一个类 ConnectivityReceiver :
public class ConnectivityReceiver {
public static boolean isNetworkConnected(Activity activity) {
ConnectivityManager cm = (ConnectivityManager) activity.getSystemService(Context.CONNECTIVITY_SERVICE);
return cm.getActiveNetworkInfo() != null;
}
}
然后在任何你想要的地方使用这样的:
if (ConnectivityReceiver.isNetworkConnected(this)) {
//do your things
}
推荐阅读
- html - Django REST 可浏览 API 模板更改
- sql - 更改某些列的默认权限
- android - 如何禁用 RecyclerView 单击侦听器但滚动工作
- vba - 我需要帮助循环使用 Excel VBA 的 if 语句中的索引/匹配
- swift - 如何在swift中集成TPKeyboardavoiding?
- visual-studio-2017 - 如何配置 Visual Studio 2017 在发布时不生成 nuget 包作为输出
- ios - 在项目结构中找不到来自故事板的自定义视图控制器
- javascript - 如何使用 Google Calendar API v3 (JavaScript) 移除事件通知
- python - 为 2D numpy 数组形成协方差矩阵
- android - Kivy App 立即在 android 上崩溃,陷入循环