2012-05-31 8 views
5

क्या कुछ शरीर मुझे इस मुद्दे को हल करने में मदद कर सकता है?निर्दिष्ट एसएसआईडी के साथ वाईफाई को स्वचालित रूप से कैसे कनेक्ट करें?

यहां मेरा कोड है, और mWifi.enableNetwork(netID, true) पर यह नेटवर्क सक्षम नहीं कर सकता है और निर्दिष्ट नेटवर्क से स्वतः कनेक्ट नहीं हो सकता है। तो मैं जानना चाहता हूं कि मैंने गलती कहाँ की थी?

public class WifiConnActivity extends Activity { 
    /** Called when the activity is first created. */ 
    final String tag = "WifiConn:..."; 
    EditText txt; 
    WifiManager mWifi; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     mWifi = (WifiManager)getSystemService(Context.WIFI_SERVICE); 

     txt = (EditText)findViewById(R.id.editText1); 

     Button b1 = (Button)findViewById(R.id.B1);   
     b1.setOnClickListener(new OnClickListener(){ 
      @Override 
      public void onClick(View v) 
      { 

       if (mWifi.startScan()) //scan now 
       { 
        Log.d(tag, "startScan()"); 

        List<ScanResult> sRet = mWifi.getScanResults(); //scan results. 

        for (int i=0; i<sRet.size(); i++) 
        { 
         ScanResult retS = sRet.get(i); 
         txt.append("resT: " + retS.SSID +" " + retS.BSSID + "\n"); 
         Log.d(tag, "resT: " + retS.SSID +" " + retS.BSSID); 

         if (retS.SSID.equalsIgnoreCase("TEST")) 
         { 
          txt.append("Found: " + retS.SSID +" " + retS.BSSID + "\n"); 

          WifiConfiguration wc = new WifiConfiguration(); 

          wc.SSID = "\""+retS.SSID+"\""; 
          wc.BSSID = retS.BSSID; 
          wc.status = WifiConfiguration.Status.ENABLED; 
          wc.hiddenSSID = true; 

          int netID = mWifi.addNetwork(wc); // add network 
          txt.append("addNetwork: "+ Integer.toString(netID) +"\n"); 

          if(mWifi.enableNetwork(netID, true)) // enable network, but cannot work??????????? 
          { 
           txt.append("enableNetwork: true\n"); 
          } 
         } 
        } 

       } 
      } 

     });  
    } 
} 
+0

कृपया अपने विभिन्न Log.i() एस से आउटपुट पोस्ट करें। – QED

+0

मेरे अंत – theLazyFinder

उत्तर

2

मुझे लगता है कि आपको अपनी वाईफाई कॉन्फ़िगरेशन ऑब्जेक्ट में WifiConfiguration.KeyMgmt जोड़ने की आवश्यकता है। मान लिया जाये कि यह एक खुला नेटवर्क है:

wc.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE); 

इसके अलावा, यह सोचते हैं कि स्कैन परिणाम startScan() करने के लिए अपने कॉल के निकास पर तुरंत उपलब्ध हैं में सावधान रहना। इस मामले में सबसे अच्छी शर्त WifiManager.SCAN_RESULTS_AVAILABLE_ACTION पर ब्रॉडकास्ट रिसीवर जोड़ने और mWifi.getScanResults() से अपने सभी कोड को इसमें जोड़ना है। एक बार आपको enableNetwork() सफल होने के बाद mWifi.reconnect() पर कॉल जोड़ने की आवश्यकता होगी।

अपने WifiConfiguration wc को आरंभ करने के लिए, यदि आप मेरी पोस्ट here पर विचार करेंगे तो मुझे यह अच्छा लगेगा। अंत में, एक और अच्छा जवाब here है।

+0

पर काम नहीं कर रहा है। यह जवाब है। धन्यवाद। –

0

कोशिश पहले सुनिश्चित करें कि बनाने के लिए इस तरह के अनुमति सिफर, कुंजी मैनेजमैट योजना और पीएसके के रूप में नेटवर्क के बारे में शेष जानकारी जोड़ने दूसरे कॉन्फ़िगर किया गया नेटवर्क सूची में जाँच

(यदि आप एक का उपयोग कर रहे हैं) आप डॉन एक ही कॉन्फ़िगरेशन के साथ एक और नेटवर्क जोड़ने की कोशिश नहीं करते क्योंकि ऐसा करने में कोई बात नहीं है।

एक सिफारिश के रूप में शुरू नहीं करें स्कैन() और इसके समाप्त होने की प्रतीक्षा करें। SCAN_RESULTS_AVAILABLE_ACTION के लिए पंजीकरण करें और उन परिणामों को संसाधित करने के लिए प्रसारण रिसीवर से अपनी गतिविधि में कॉलबैक का उपयोग करें।

संबंधित मुद्दे