关于android广播包监听网络状态变化收到java.lang.NullPointerException: Error receiving broadcast Intent
来源:互联网 发布:头戴耳机推荐 知乎 编辑:程序博客网 时间:2024/06/10 11:54
在写一个广播包来监听网络状态改变时,在解锁手机时出现java.lang.NullPointerException的错误,错误显示为net_status这个TextView控件变成了空指针,但是不知道为什么变成了空指针,自己在onCreate函数里有通过net_status = (TextView) findViewById(R.id.connect);获得该控件了。
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
ConnectivityManager connectMgr = (ConnectivityManager) context.getSystemService(CONNECTIVITY_SERVICE);
if (connectMgr != null) {
NetworkInfo mobNetInfo = connectMgr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
NetworkInfo wifiNetInfo = connectMgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
if (mobNetInfo != null && wifiNetInfo != null) {
if (!mobNetInfo.isConnected() && !wifiNetInfo.isConnected()) {
net_status.setText("NetWork Disabled");
} else {
net_status.setText("NetWork Enabled");
}
}
}
}
08-26 10:23:40.035: E/AndroidRuntime(10502): FATAL EXCEPTION: main
08-26 10:23:40.035: E/AndroidRuntime(10502): java.lang.RuntimeException: Unable to start receiver com.proxysystem.MainActivity$mNetworkStateReceiver: java.lang.NullPointerException
08-26 10:23:40.035: E/AndroidRuntime(10502): at android.app.ActivityThread.handleReceiver(ActivityThread.java:2307)
08-26 10:23:40.035: E/AndroidRuntime(10502): at android.app.ActivityThread.access$1600(ActivityThread.java:131)
08-26 10:23:40.035: E/AndroidRuntime(10502): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1304)
08-26 10:23:40.035: E/AndroidRuntime(10502): at android.os.Handler.dispatchMessage(Handler.java:99)
08-26 10:23:40.035: E/AndroidRuntime(10502): at android.os.Looper.loop(Looper.java:137)
08-26 10:23:40.035: E/AndroidRuntime(10502): at android.app.ActivityThread.main(ActivityThread.java:4866)
08-26 10:23:40.035: E/AndroidRuntime(10502): at java.lang.reflect.Method.invokeNative(Native Method)
08-26 10:23:40.035: E/AndroidRuntime(10502): at java.lang.reflect.Method.invoke(Method.java:511)
08-26 10:23:40.035: E/AndroidRuntime(10502): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
08-26 10:23:40.035: E/AndroidRuntime(10502): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
08-26 10:23:40.035: E/AndroidRuntime(10502): at dalvik.system.NativeStart.main(Native Method)
08-26 10:23:40.035: E/AndroidRuntime(10502): Caused by: java.lang.NullPointerException
08-26 10:23:40.035: E/AndroidRuntime(10502): at com.proxysystem.MainActivity$mNetworkStateReceiver.onReceive(MainActivity.java:134)
08-26 10:23:40.035: E/AndroidRuntime(10502): at android.app.ActivityThread.handleReceiver(ActivityThread.java:2300)
08-26 10:23:40.035: E/AndroidRuntime(10502): ... 10 more
经过调试,发现原来是在手机屏幕关掉时,手机会断掉网络(wifi), 当手机解锁之后,重新enable WIFI,此时app跑在背景里,没有调用OnCreate函数,此时net_status这个变量就变成了空指针,而此时调用net_status就会出现错误。所以应该在调用之前,判断net_status的值,确保它是非空指针。
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
ConnectivityManager connectMgr = (ConnectivityManager) context.getSystemService(CONNECTIVITY_SERVICE);
if (connectMgr != null) {
NetworkInfo mobNetInfo = connectMgr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
NetworkInfo wifiNetInfo = connectMgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
if (mobNetInfo != null && wifiNetInfo != null && net_status != null) {
if (!mobNetInfo.isConnected() && !wifiNetInfo.isConnected()) {
net_status.setText("NetWork Disabled");
} else {
net_status.setText("NetWork Enabled");
}
}
}
}
- 关于android广播包监听网络状态变化收到java.lang.NullPointerException: Error receiving broadcast Intent
- android 接收广播意图错误:java.lang.RuntimeException: Error receiving broadcast Intent { act=android.bluetoot
- java.lang.RuntimeException: Error receiving broadcast Intent { act=android.net.wifi.SCAN_RESULTS flg
- Android使用广播监听网络状态变化 一直收到系统广播 广播过滤
- Android使用广播监听网络状态变化 一直收到系统广播
- android接收广播监听网络状态变化
- 简单 android 广播监听网络状态变化
- 笔记 android 监听网络状态变化-------广播
- android 使用广播监听网络状态变化
- java.lang.RuntimeException: Error receiving broadcast Intent { act=PhotoUploadSuccess_Receiver flg=0
- 【Android】利用广播BroadCast监听网络的变化
- android Error receiving broadcast
- android网络监听状态改变收到2个广播处理
- Android 广播监听wifi和流量网络状态变化
- 4.1.3.3 Android 网络状态监听的静态广播接受者和动态广播接受者Broadcast-Receiver
- Android - Intent广播(broadcast)
- Android 广播监听网络状态
- Android网络状态广播监听
- php中字符串的递增问题
- python multiprocessing
- javascrip:void(0)详解
- 第九章三续:SIFT算法的应用--目标识别之Bag-of-words模型
- JS遍历数组
- 关于android广播包监听网络状态变化收到java.lang.NullPointerException: Error receiving broadcast Intent
- OC面向对象三大特征---继承
- webapp调试技巧,页面自刷新,远程调试
- 迎接挑战
- 在需求分析中就可以避免的那些错误8
- git cherry-pick 时遇到 cannot merge binary files问题解决办法
- 机器学习算法面试—口述(5):回归
- UI18_单例
- HashMap 和ConcurrentHashMap