2010-05-21 3 views
5

Следующая строка только не приведет к исключению NullPointer, если я подключен к беспроводной локальной сети:NullPointerException getSystemService

ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); 

В противном случае я получаю NullPointer-исключение прямо? Как я могу это исправить? Я хочу, чтобы мой фоновый сервис работал только, когда он подключен к wlan. Но это NullPointerException просто убивает все приложения ...

+0

Вы уверены, что эта строка выдает исключение? Кажется более вероятным, что 'getSystemService()' будет возвращать 'null', а затем будет вызываться' NullPointerException', когда вы пытаетесь использовать 'cm'. – Syntactic

+0

Yup Я точно уверен. У меня была такая же идея, как и вы. Но я дважды проверил линию. И это именно этот. – user283494

+0

Не могли бы вы разместить трассировку стека, возможно? Я не знаком с тем, как работает Android, но в обычной JVM эта строка не может вызывать «NullPointerException», если «Context.CONNECTIVITY_SERVICE» - это то, как он выглядит. Метод 'getSystemService()' может вызывать такое исключение, но тогда это будет отображаться в трассировке стека. – Syntactic

ответ

2

Добавить в манифесте следующую строку:

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
+0

Я уже это сделал. Все равно не изменится. – user283494

-1
ConnectivityManager cm = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE); 
NetworkInfo netInfo = cm.getActiveNetworkInfo(); 

if (netInfo != null && netInfo.getType() == 1) { 
// CONNECTION_WIFI = true; 
} 
0

Да, я поздно, но в случае, если кто-то все еще ищет,

ConnectivityManager cm = (ConnectivityManager) this.getSystemService(CONNECTIVITY_SERVICE); 
NetworkInfo activeNetwork = cm.getActiveNetworkInfo(); 

не нужно Context в аргументе getSystemService().

+0

[Документация] (http://developer.android.com/reference/android/content/Context.html#CONNECTIVITY_SERVICE) говорит, что 'CONNECTIVITY_SERVICE' является статическим членом' Context'. Поскольку вы опустили его, я думаю, у вас есть статический импорт для него? – Sam