我写了一个服务,应该被告知连接的变化。我已经写了一个BroadcastReceiver为:NullPointerException当调用registerBroadcast
public class ConnectivityBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
ConnectivityManager con = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
// ...
}
}
,我已经把它添加到我的AndroidManifest.xml:
<application> <!-- ... -->
<receiver android:name="com.mycompany.mobile.android.services.impl.ConnectivityBroadcastReceiver"
android:label="NetworkConnection">
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>
</intent-filter>
</receiver>
</application>
但是,当我尝试注册我的接收器那样:
class MyService extends Service {
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
this.registerReceiver(new ConnectivityBroadcastReceiver(this), new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION));
return START_STICKY;
}
}
我得到一个NPE:
java.lang.NullPointerException
at android.content.ContextWrapper.registerReceiver(ContextWrapper.java:308)
at com.mycompany.mobile.android.services.impl.MyService.onStartCommand(...)
发生在我呼叫registerReceiver的行中。 ConnectivityBroadcastReceiver和IntentFilter都不能为空,或者我错了吗?我错过实施一种方法吗? onStarCommand中的调用是否非法?
http://stackoverflow.com/questions/5856861/why-android-service-crashes-with-nullpointerexception – Ishtar 2012-01-27 14:26:30