App stürtz immer ab, beim Überprüfen der Wlan-Verbindung

  • 24 Antworten
  • Letztes Antwortdatum
J

Jones97

Neues Mitglied
0
Mein App hängt sich immer wieder bei dieser Zeile auf und stürzt ab:
if (!w.isConnected()==true || !w.isAvailable()==true)

kann mir jemand sagen was mein Fehler ist ?

Vielen Dank schonmal im Vorraus
 
Welche App?
 
Tut mir Leid aber ist das wichtig :unsure: Es handelt sich um einen etwas längeren Programmcode. (Selber geschrieben)
Ich habe übrigens herrausgefunden, das es sich ebenfalls bei Zeilen wie
System.out.print(w.isConnected());
System.out.print(w.isAvailable());
aufhängt.
 
Oh ok tut mi Leid... :( bin noch neu hier.
Wäre Spitze wenn das jemand machen könnte. Denn da gehört ja auch die Frage hin...
 
Hast du diese Permission in der Manifest Datei stehen:
Code:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
?

Falls es daran nicht liegt müsstest du mal Code posten sonst kann man dir da schlecht helfen.
 
btnLogin.setOnClickListener(new View.OnClickListener() {
@override
public void onClick(View v) {
String networkSSID = "XXX";
long networkPass = XXXXXXXXXL;
ConnectivityManager conMgr =(ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo w = conMgr.getActiveNetworkInfo();
if (w.isConnected()!=true || w.isAvailable()!=true) {
WifiConfiguration conf = new WifiConfiguration();
conf.SSID = "\"" + networkSSID + "\""; // Please note the quotes. String should contain ssid in quotes
conf.preSharedKey = "\"" + networkPass + "\"";
WifiManager wifiManager = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE);
wifiManager.addNetwork(conf);
List<WifiConfiguration> list = wifiManager.getConfiguredNetworks();
for (WifiConfiguration i : list) {
if (i.SSID != null && i.SSID.equals("\"" + networkSSID + "\"")) {
wifiManager.disconnect();
wifiManager.enableNetwork(i.networkId, true);
wifiManager.reconnect();
break;
}
}
}
}
}
});
}}
Das ist der Code aus der MainActivity
und die Permissions sind :
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
<uses-permission android:name="android.permission.INTERNET" />
 
Bitte den Code-Tag verwenden um Code darzustellen -> [code]Hier kommt der Code dazwischen[/code] oder mit der Schaltfläche wie im Bild einfügen.
 

Anhänge

  • Bildschirmfoto vom 2015-11-16 17:59:21.png
    Bildschirmfoto vom 2015-11-16 17:59:21.png
    5,9 KB · Aufrufe: 173
Zuletzt bearbeitet:
Außerdem könntest du noch die Logcat ausgaben posten, da finden sich oft hilfreiche fehlermeldungen
 
Das ist relativ viel aufwand... Ist das so ein großes Problem ? :O ich dachte ich hab nur etwas vergessen in der Zeile oder falsch geschrieben/definiert
 
Das ist der Listener Code aus der MainActivity:

Java:
btnLogin.setOnClickListener(new View.OnClickListener() 
{
   @override
   public void onClick(View v)
   {
       String networkSSID = "XXX";
       long networkPass = XXXXXXXXXL;
       ConnectivityManager conMgr =(ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
       NetworkInfo w = conMgr.getActiveNetworkInfo();

       if (w.isConnected()!=true || w.isAvailable()!=true)
       {
           WifiConfiguration conf = new WifiConfiguration();
           conf.SSID = "\"" + networkSSID + "\""; // Please note the quotes. String should contain ssid in quotes
           conf.preSharedKey = "\"" + networkPass + "\"";
           WifiManager wifiManager = (WifiManager)getApplicationContext().getSystemService(Context.WIFI_SERVICE);
           wifiManager.addNetwork(conf);
           List<WifiConfiguration> list = wifiManager.getConfiguredNetworks();

           for (WifiConfiguration i : list)
           {
               if (i.SSID != null && i.SSID.equals("\"" + networkSSID + "\""))
               {
                  wifiManager.disconnect();
                  wifiManager.enableNetwork(i.networkId, true);
                  wifiManager.reconnect();
                  break;
               }
           }
       }
   }
});


und die Permissions sind :
XML:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
<uses-permission android:name="android.permission.INTERNET" />
 
Jaile hat den Code ja bereits reingestellt
Was genau ist jetzt auch nochmal Logcat ? Ist das der Andoid Monitor ?
 

Anhänge

  • Screenshot (10).png
    Screenshot (10).png
    19,2 KB · Aufrufe: 197
Ja ist es.

Du machst Networking auf dem UIThread außerdem.

Aber kümmer dich erstmal um den Nullpointer diese sind leicht ausfindig zu machen.

Es scheint hier zu sein:
Java:
NetworkInfo w = conMgr.getActiveNetworkInfo();

       if(w.isConnected()!=true|| w.isAvailable()!=true)
 
Ich glaube das Network on UI Thread ist noch nicht das Problem, solange man nur prüft, ob es verfügbar ist.
Die Variable w ist wahrscheinlich null.
BTW: Wieso prüfst du auf ungleich true, und nicht auf gleich false oder besser noch
Code:
if(!w.isConnected || !w.isAvailable)
 
Tut mir Leid und die Frage ist vllt auch richtig dumm aber was ist nochmal ein Nullpointer ?
kosmus: hatte ich zuerst war der gleiche Fehler das es nicht funktioniert hat und die App abgestürzt ist. Daher dachteich das es falsch ist nur if(!w.isConnected || !w.isAvailable) zu nehmen...
 
Jones97 schrieb:
Tut mir Leid und die Frage ist vllt auch richtig dumm aber was ist nochmal ein Nullpointer ?
kosmus: hatte ich zuerst war der gleiche Fehler das es nicht funktioniert hat und die App abgestürzt ist. Daher dachteich das es falsch ist nur if(!w.isConnected || !w.isAvailable) zu nehmen...

Ein Nullpointer ist ein Fehler der auftritt wenn du auf ein Objekt zugreifst das null ist. Null bedeutet es wurde kein Wert zugewiesen bzw. nicht initialisiert. In deinem Fall wäre w das Objekt, das wahrscheinlich null ist.
 
Ich weiß nicht ob ihr das Bild von mir oben angeschaut habt aber darin steht ja auch schon das NetworkInfo.isAvailable() (w.isAvailable()) ein null object ist.
denke wird bei w.isConnected nicht anderst sein, wird halt nur nicht abgefragt da schon weiter oben bei w.isAvailable() ein Fehler sit.
 
Eine nullpointer exception bekommst du wenn du auf eine Referenz zugreifst, hinter der sich kein Objekt sondern nur null befindet.
Vermutlich hat
NetworkInfo w =conMgr.getActiveNetworkInfo();
nicht richtig funktioniert
 
kosmus schrieb:
Eine nullpointer exception bekommst du wenn du auf eine Referenz zugreifst, hinter der sich kein Objekt sondern nur null befindet.
Vermutlich hat
NetworkInfo w =conMgr.getActiveNetworkInfo();
nicht richtig funktioniert

Dass kann gut sein was ist wenn getActiveNetworkInfo() kein Aktives Netzwerk findet, der Fehler tritt nämlich (gerade geschaut) nur dann auf.
 

Ähnliche Themen

G
Antworten
0
Aufrufe
132
Gerdchen07
G
G
Antworten
1
Aufrufe
384
Gerdchen07
G
G
Antworten
13
Aufrufe
595
Gerdchen07
G
L
Antworten
2
Aufrufe
551
Lexub
L
migi01
Antworten
26
Aufrufe
1.985
migi01
migi01
Zurück
Oben Unten