Ravi, I think your current code looks pretty good. Please be aware that the constant NETWORK_STATE_CHANGED_ACTION maps to android.net.wifi.STATE_CHANGE.
I am running nearly the same code and I receive the NETWORK_STATE_CHANGED_ACTION event. Please, make sure that the addNetwork(configuration) is successful. But based on your post it is. Could you post the catlog of the entents which you are receiving? -- Roman Baumgaertner Sr. SW Engineer-OSDC ·T· · ·Mobile· stick together The views, opinions and statements in this email are those of the author solely in their individual capacity, and do not necessarily represent those of T-Mobile USA, Inc. On Aug 21, 12:34 pm, R Ravichandran <ravirajami...@gmail.com> wrote: > I am receiving some events and not all I am looking for. Here is the simple > code that I wrote to experiment with my requirement. > > All I wanted to accomplish with my code was: > > 1. get a list of WiFi hot spots. I have a BoadcastReceiver that gets the > WifiManager.SCAN_RESULTS_AVAILABLE_ACTION intent. I can iterate through the > list and find my hotspot. > > 2. Pick one, I am interested in. Once I find the hotspot I am interested in, > I create a WifiConfiguration using the results from scan, and add that with > wifiManager.addNetwork. > 3. connect it. Then I call wifiManager.enableNetwork. HERE is WHRE I HAVE > PROBLEM. I am expecting this will create a connection, and trigger a > NETWORK_STATE_CHANGED_INTENT. But it doesn't. > > Here is the code I am playing with: > > package com.example.helloandroid; > > import android.app.Activity; > import android.os.Bundle; > import android.widget.Toast; > import android.content.BroadcastReceiver; > import android.content.Context; > import android.content.Intent; > import android.content.IntentFilter; > import android.net.wifi.ScanResult; > import android.net.wifi.WifiManager; > import android.net.wifi.WifiConfiguration; > import android.net.wifi.WifiInfo; > import java.util.List; > import android.view.View; > import android.view.View.OnClickListener; > import android.widget.Button; > > public class HelloAndroid extends Activity implements OnClickListener { > /** Called when the activity is first created. */ > private WifiManager wifiManager; > private int globalCounter=0; > private static final String CHOSEN_HOTSPOT = "myhotspot"; > > @Override > public void onCreate(Bundle savedInstanceState) { > super.onCreate(savedInstanceState); > setContentView(R.layout.main); > > Button button = (Button)findViewById(R.id.ok); > button.setOnClickListener(this); > > wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE); > // register the broadcast receiver for wifi state events > IntentFilter filter = new IntentFilter(); > filter.addAction(WifiManager.NETWORK_IDS_CHANGED_ACTION); > filter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION); > filter.addAction(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION); > filter.addAction(WifiManager.SUPPLICANT_CONNECTION_CHANGE_ACTION); > filter.addAction(WifiManager.SUPPLICANT_STATE_CHANGED_ACTION); > filter.addAction(WifiManager.EXTRA_SUPPLICANT_ERROR); > filter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION); > filter.addAction(WifiManager.RSSI_CHANGED_ACTION); > registerReceiver(wifiEventReceiver, filter); > } > > public void onClick(View v) { > wifiManager.startScan(); > Toast.makeText(this.getApplicationContext(),"Scan Started: "+"Msg > Count: "+(++globalCounter),Toast.LENGTH_LONG).show(); > } > > private BroadcastReceiver wifiEventReceiver = new BroadcastReceiver() { > > private boolean enabled = false; > > @Override > public void onReceive(Context context, Intent intent) { > System.out.println ("WiFi Event BroadReceiver: > onReceive()======================================="); > > if(intent.getAction().equals(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION)) { > if(enabled) return; > List<ScanResult> hotSpots = wifiManager.getScanResults(); > StringBuffer ssids = new StringBuffer(); > > for(ScanResult hotSpot: hotSpots) { > String hotSpotSsid = hotSpot.SSID; > String hotSpotBssid = hotSpot.BSSID; > System.out.println("SSID: "+hotSpotSsid+" BSSID: > "+hotSpotBssid); > StringBuffer sBuf = new StringBuffer("\""); > sBuf.append(hotSpotSsid+"\""); > hotSpotSsid = sBuf.toString(); > ssids.append(hotSpotSsid+".."); > if(hotSpotSsid.indexOf(CHOSEN_HOTSPOT) > 0) { > > List<WifiConfiguration> networks = > wifiManager.getConfiguredNetworks(); > System.out.println("=====> Number of configured > networks: "+networks.size()); > Toast.makeText(context,"NUmber of confiured > Networks: "+networks.size(),Toast.LENGTH_LONG).show(); > WifiConfiguration wifiConfiguration = new > WifiConfiguration(); > wifiConfiguration.SSID = hotSpotSsid; > wifiConfiguration.BSSID = hotSpotBssid; > wifiConfiguration.hiddenSSID = false; > wifiConfiguration.priority = 100000; > > // add this to the configured networks > int inetId = > wifiManager.addNetwork(wifiConfiguration); > if(inetId < 0) { > System.out.println("Unable to add network > configuration for SSID: "+hotSpotSsid); > Toast.makeText(context,"Unable to add SSID: > "+hotSpotSsid,Toast.LENGTH_LONG).show(); > return; > } > else { > Toast.makeText(context,"Successfully added SSID: > "+hotSpotSsid+" Inet Id: "+inetId,Toast.LENGTH_LONG).show(); > > } > boolean successConnected = > wifiManager.enableNetwork(inetId, true); > if(successConnected) { > Toast.makeText(context,"Connected to SSID: > "+hotSpotSsid+" Inet Id: "+inetId,Toast.LENGTH_LONG).show(); > > enabled = true; > break; > } > else { > System.out.println("====> Connection attempt > failed "+hotSpotSsid+" ...Returning"); > return; > } > } > } > Toast.makeText(context,ssids+"Msg Count: > "+(++globalCounter),Toast.LENGTH_LONG).show(); > } > else > if(intent.getAction().equals(WifiManager.NETWORK_STATE_CHANGED_ACTION)) { > System.out.println("===== NETWORK_STATE_CHANGE_ACTION event > happened...."); > WifiInfo wifiInfo = wifiManager.getConnectionInfo(); > System.out.println("Check for current connection: SSID: > "+wifiInfo.getSSID()); > int ipAddr = wifiInfo.getIpAddress(); > > System.out.println("IP Address for connection: "+ipAddr); > Intent wifiEstablishedIntent = new Intent("WiFi"); > wifiEstablishedIntent.putExtra("Connection", "Connection > established: "+wifiInfo.getSSID()); > sendBroadcast(wifiEstablishedIntent); > Toast.makeText(context,"Connected: > "+(++globalCounter),Toast.LENGTH_LONG).show(); > } > else > if(intent.getAction().equals(WifiManager.SUPPLICANT_STATE_CHANGED_ACTION)) { > System.out.println("===== SUPPLICANT_STATE_CHANGE_ACTION > event happened...."); > > intent.getBooleanExtra(WifiManager.EXTRA_SUPPLICANT_CONNECTED, false); > > } > else > if(intent.getAction().equals(WifiManager.SUPPLICANT_CONNECTION_CHANGE_ACTION)) > { > System.out.println("===== > SUPPLICANT_CONNECTION_CHANGE_ACTION event happened...."); > > intent.getBooleanExtra(WifiManager.EXTRA_SUPPLICANT_CONNECTED, false); > } > } > }; > > } > > These are the permissions I am using: > > <uses-permission > android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission> > <uses-permission > android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission> > <uses-permission > android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission> > <uses-permission > android:name="android.permission.CHANGE_NETWORK_STATE"></uses-permission> > > On Thu, Aug 20, 2009 at 4:10 PM, Roman ( T-Mobile USA) < > > roman.baumgaert...@t-mobile.com> wrote: > > > Ravi, > > > I would first try to check out whether in general your code is able to > > receive the intents you are looking for. > > You can verify this with configuring the Wifi settings on the phone > > first and then by turning on/off your AP. If you are bale to see the > > events, then the next step would be to connect with your own code. > > > -- > > Roman Baumgaertner > > Sr. SW Engineer-OSDC > > ·T· · ·Mobile· stick together > > The views, opinions and statements in this email are those of the > > author solely in their individual capacity, and do not necessarily > > represent those of T-Mobile USA, Inc. > > > On Aug 19, 10:15 pm, R Ravichandran <ravirajami...@gmail.com> wrote: > > > Roman, > > > > I have all the permissions you mentioned, plus the intent filters also in > > my > > > code. I am trying this code on G1 phone. Still the same problem. > > > > What is the right approach to make a wifi connection to a specific hot > > spot? > > > > Thanks > > > > Ravi > > > > On Wed, Aug 19, 2009 at 4:18 PM, Roman ( T-Mobile USA) < > > > > roman.baumgaert...@t-mobile.com> wrote: > > > > > Are you using the following permissions? > > > > > <uses-permission > > > > android:name="android.permission.ACCESS_NETWORK_STATE"/> > > > > <uses-permission > > > > android:name="android.permission.CHANGE_NETWORK_STATE"/> > > > > <uses-permission > > > > android:name="android.permission.ACCESS_WIFI_STATE"/> > > > > <uses-permission > > > > android:name="android.permission.CHANGE_CHANGE_STATE"/> > > > > > How do u setup your broadcast receiver? > > > > > Write a method: > > > > > private void registerForWifiBroadcasts() { > > > > IntentFilter intentFilter = new IntentFilter(); > > > > intentFilter.addAction > > > > (WifiManager.NETWORK_STATE_CHANGED_ACTION); > > > > intentFilter.addAction > > > > (WifiManager.SUPPLICANT_CONNECTION_CHANGE_ACTION); > > ... > > read more » --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to android-developers@googlegroups.com To unsubscribe from this group, send email to android-developers-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/android-developers?hl=en -~----------~----~----~----~------~----~------~--~---