2012-07-25 88 views
0

我尝试阻止自动连接到WiFi并在通知栏打开WiFi适配器后显示对话框。如何防止自动连接到WiFi

我以编程方式注册接收WIFI_STATE_CHANGED_ACTION的BroadcastReceiver。在WIFI_STATE_ENABLED中,我从配置的网络列表中删除网络。但它不起作用。

我注册的BroadcastReceiver在:

@Override 
protected void onStart() { 
    super.onStart(); 

    registerReceiver(wifiStatusReceiver, new IntentFilter(WifiManager.WIFI_STATE_CHANGED_ACTION)); 
} 

而且在方法的onStop注销。

广播接收器代码:

public class WiFiStatusReceiver extends BroadcastReceiver { 

private WifiManager wifiManager; 

@Override 
public void onReceive(Context context, Intent intent) { 

    wifiManager = (WifiManager)context.getSystemService(Context.WIFI_SERVICE); 

    if(!isInitialStickyBroadcast()) { //it is not a sticky intent 

     switch(wifiManager.getWifiState()) { 

      case WifiManager.WIFI_STATE_ENABLING: 
        Toast.makeText(context, R.string.enabling_wifi, Toast.LENGTH_SHORT).show(); 
       break; 

      case WifiManager.WIFI_STATE_ENABLED: 
        Toast.makeText(context, R.string.enabled_wifi, Toast.LENGTH_SHORT).show(); 

        wifiManager.disconnect(); 

        if(!wifiManager.getConfiguredNetworks().isEmpty()) { //there are some networks 

         for(WifiConfiguration wifiConfig :wifiManager.getConfiguredNetworks()) { 
          wifiManager.removeNetwork(wifiConfig.networkId); 
         } 
        } 

       break; 

      case WifiManager.WIFI_STATE_DISABLING: 
        Toast.makeText(context, R.string.disabling_wifi, Toast.LENGTH_SHORT).show(); 


       break; 

      case WifiManager.WIFI_STATE_DISABLED: 
        Toast.makeText(context, R.string.disabled_wifi, Toast.LENGTH_SHORT).show(); 


       break; 
     } 
    } else { //is a sticky intent 

     wifiManager.disconnect(); 

     if(!wifiManager.getConfiguredNetworks().isEmpty()) { //there are some networks 

      for(WifiConfiguration wifiConfig :wifiManager.getConfiguredNetworks()) { 
       wifiManager.removeNetwork(wifiConfig.networkId); 
      } 
     } 
    } 
} 

}

有什么建议?

回答

0

尝试使用此方法需要启用它时禁用无线上网 .............和.........

boolean isOn = false; 
WifiManager wifiManager = (WifiManager)this.context.getSystemService(Context.WIFI_SERVICE); 
wifiManager.setWifiEnabled(isOn); 
+0

而如果我们想使用WiFi,而无需连接任何设备? – 2012-07-25 07:01:06

+0

好吧,但是当我以编程的方式在WiFi上使用可用网络显示对话框。 – ghost 2012-07-25 07:17:48

+0

@Vash ...你的意思是没有连接任何设备.... ??那么什么是无线网络....... ??通常WIFI用于临时或基础设施模式,我还没有能够与我的宏达浏览器创建一个ad-hoc网络,但是是基础设施模式正在工作... – 2012-07-25 07:23:58