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
-~----------~----~----~----~------~----~------~--~---

Reply via email to