1
我想使用BroadcastReceiver獲取Internet連接狀態。BroadcastReceiver後運行時異常
接收器類是這樣的:
public class ConnectivityReceiver extends BroadcastReceiver {
WebView mWebView;
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
Log.d(MSResearch.LOG_TAG, "Connectivity action: " + intent.getAction());
if (action.equals(WifiManager.WIFI_STATE_CHANGED_ACTION)) {
WifiManager wm = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
Log.e(MSResearch.LOG_TAG, "Setting wifistate: " + wm.getWifiState());
} else if (action.equals(ConnectivityManager.CONNECTIVITY_ACTION)) {
NetworkInfo ni = intent.getParcelableExtra (ConnectivityManager.EXTRA_NETWORK_INFO);
Log.e(MSResearch.LOG_TAG, "Setting isConnected: " + ni.isConnected());
}
}
}
我實例化的onCreate接收()函數,並試圖在onPause中註冊的onResume接收機()我活動類和註銷它()。
public onCreate(){
...
conReceiver = new ConnectivityReceiver();
itFilter = new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION);
itFilter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION);
...
}
@Override
public void onResume(){
registerReceiver(conReceiver,itFilter);
}
@Override
public void onPause(){
unregisterReceiver(conReceiver);
}
我在onResume調用之後立即得到運行時異常。誰能告訴我我做錯了什麼?我甚至試圖簡單地將接收器標籤添加到清單xml文件中,而不是在我的活動中註冊,但是我仍然得到運行時異常。我已經在2.2和2.3模擬器上試過了,並且遇到了同樣的問題。
Thread [<1> main] (Suspended (exception RuntimeException))
ActivityThread.performResumeActivity(IBinder, boolean) line: 3128
ActivityThread.handleResumeActivity(IBinder, boolean, boolean) line: 3143
ActivityThread.handleLaunchActivity(ActivityThread$ActivityRecord, Intent) line: 2684
ActivityThread.access$2300(ActivityThread, ActivityThread$ActivityRecord, Intent) line: 125
ActivityThread$H.handleMessage(Message) line: 2033
ActivityThread$H(Handler).dispatchMessage(Message) line: 99
Looper.loop() line: 123
ActivityThread.main(String[]) line: 4627
Method.invokeNative(Object, Object[], Class, Class[], Class, int, boolean) line: not available [native method]
Method.invoke(Object, Object...) line: 521
ZygoteInit$MethodAndArgsCaller.run() line: 868
ZygoteInit.main(String[]) line: 626
NativeStart.main(String[]) line: not available [native method]