Autore Topic: Richiesta http subito dopo acquisizione dell'indirizzo ip da una rete WI-FI  (Letto 886 volte)

Offline ntakka

  • Nuovo arrivato
  • *
  • Post: 8
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Nexus S
Sto sviluppando un'applicazione in cui il mio dispositivo si deve collegare ad una rete wifi senza che l'utente passi dalle impostazioni  per accendere il wifi, selezionare la rete e inserire la password; per questa prima funzionalità ho seguito questo discussione su stackoverflow:

Android connect to WiFi without human interaction - Stack Overflow

Una volta che il cellulare si è connesso deve effettuare una richiesta http.

Il mio problema è il seguente:
finchè il mio dispositivo non acquisisce l'indirizzo IP dalla rete la mia richiesta http lancia l'eccezione, 
come posso far partire la richiesta http dopo che è veramente connesso??

Premetto che ho già utilizzato questo controllo:


   if(connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState() == NetworkInfo.State.CONNECTED ){
             //effettua la richiesta
         }


ma giustamente il controllo viene bypassato poichè il mio dispositivo sta acquisendo l'IP e non mi effettua la richesta


Offline denper

  • Utente normale
  • ***
  • Post: 290
  • Respect: +60
    • Mostra profilo
    • Anddenper
  • Dispositivo Android:
    Moto G
  • Play Store ID:
    denper
  • Sistema operativo:
    Window 7, Windows XP
Re:Richiesta http subito dopo acquisizione dell'indirizzo ip da una rete WI-FI
« Risposta #1 il: 10 Maggio 2012, 11:51:59 CEST »
0
Ciao,
potresti provare a ricavare prima l'ip address, in questo modo:

Codice (Java): [Seleziona]
WifiInfo myWifiInfo = myWifiManager.getConnectionInfo();
int ipAddress = myWifiInfo.getIpAddress();

attenzione che l'ip address arriva come numero intero per cui se ti interessa ottenere l'ip devi convertirlo in questo modo:

Codice (Java): [Seleziona]
String ipString = String.format(%d.%d.%d.%d”, (ip & 0xff), (ip >> 8 & 0xff), (ip >> 16 & 0xff), (ip >> 24 & 0xff));
Non ho provato personalmente, ma immagino che se il dispositivo non ha ancora acquisito l'ip, il metodo myWifiInfo.getIpAddress() ritornerà qualche valore particolare, tipo null, 0, -1 o qualcos'altro. A questo punto una volta verifcato che la rete è connessa, potresti fare un loop finche l'ip non è valorizzato correttamente, quindi potrai eseguire la chiamata http.

Attenzione che il codice indicato necessità delle seguenti permissions:

Codice (XML): [Seleziona]
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
Tutti sanno che una cosa è impossibile da realizzare, finché arriva uno sprovveduto che non lo sa e la inventa. [A.Einstein]

Proteggi la tua privacy! Utilizza GhostPhone! https://play.google.com/store/apps/details?id=com.denper.gp
Giochi a Winforlife e Superenalotto e sei stanco di controllare le tue schedine manualmente? Prova Checkwin: https://play.google.com/store/apps/details?id=com.denper.checkwintrial

Offline ntakka

  • Nuovo arrivato
  • *
  • Post: 8
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Nexus S
Re:Richiesta http subito dopo acquisizione dell'indirizzo ip da una rete WI-FI
« Risposta #2 il: 10 Maggio 2012, 12:36:11 CEST »
0
Sono riuscito a risolvere il tutto integrando il tuo consiglio con un Handler !!!

Grazie Mille!! :-)