Я написал службу, которая должна быть проинформирована об изменениях в подключении. Я написал 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