2010-05-21 4 views
5

ligne suivante ne sera pas aboutir à une exception nullpointer si je suis connecté à un réseau local sans fil:NullPointerException getSystemService

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

Sinon je reçois un nullpointer-exception tout droit? Comment puis-je réparer cela? Je veux que mon service d'arrière-plan ne fonctionne que lorsqu'il est connecté à wlan. Mais ce NullPointerException tue juste l'application ... tout

+0

Etes-vous sûr que c'est cette ligne qui lance l'exception? Il semble plus probable que 'getSystemService()' retournerait 'null' et qu'une exception' NullPointerException' serait alors lancée lorsque vous utiliseriez 'cm'. – Syntactic

+0

Yup Je suis exactement sûr. J'ai eu la même idée que toi. Mais j'ai vérifié la ligne. Et c'est exactement celui-là. – user283494

+0

Pourriez-vous poster la trace de la pile, peut-être? Je ne suis pas familier avec le fonctionnement d'Android, mais dans une JVM normale, cette ligne ne peut pas lancer une exception 'NullPointerException', si' Context.CONNECTIVITY_SERVICE' est ce à quoi elle ressemble. La méthode 'getSystemService()' pourrait lancer une telle exception, mais cela apparaîtrait dans la trace de la pile. – Syntactic

Répondre

2

Ajouter au manifeste la ligne suivante:

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

Je l'ai déjà fait. Toujours ne changera pas. – user283494

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

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

Oui, je suis en retard, mais au cas où quelqu'un est toujours à la recherche,

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

pas besoin de Context dans l'argument getSystemService().

+0

[La documentation] (http://developer.android.com/reference/android/content/Context.html#CONNECTIVITY_SERVICE) indique que 'CONNECTIVITY_SERVICE' est un membre statique de' Context'. Puisque vous l'avez omis, je suppose que vous avez une importation statique pour cela? – Sam