2015-11-16 10 views
9

एंड्रॉइड 6.0 के लिए पहले से ही एक और वाईफाई कॉन्फ़िगरेशन है, तो एंड्रॉइड 6.0 ने वाईफाई व्यवहार में कुछ बदलाव किए हैं और यह मेरे ऐप व्यवहार को तोड़ता है और इसके लिए कोई समाधान नहीं मिल रहा है।एंड्रॉइड 6.0 वाईफाई कॉन्फ़िगरेशन नहीं जोड़ सकता है अगर एसएसआईडी

असल में, एंड्रॉइड 6.0 के लिए आपको वाईफाई कॉन्फ़िगरेशन ऑब्जेक्ट्स को संशोधित या हटाने की अनुमति नहीं है जो आपके ऐप द्वारा नहीं बनाई गई हैं। इसका मतलब है कि मुझे हमेशा अपनी खुद की वाईफाई कॉन्फ़िगरेशन ऑब्जेक्ट्स बनाना होगा। हालांकि, अगर उपयोगकर्ता या अन्य ऐप द्वारा बनाए गए किसी विशेष एपी के लिए पहले से ही वाईफाई कॉन्फ़िगरेशन है, तो मैं उस एपी के लिए कोई और नहीं बना सकता।

wifiManager.addNetwork (wifi कॉन्फ़िगरेशन) रिटर्न -1। यह पिछले सभी एंड्रॉइड संस्करणों पर काम करता है लेकिन एंड्रॉइड 6.0

पर नहीं तो मैं अटक गया हूं। क्या यह एक एंड्रॉइड बग है? मुझे कल्पना है कि बहुत से डेवलपर्स इससे ग्रस्त होना चाहिए यदि वे कस्टम हार्डवेयर के लिए ऐप्स विकसित करते हैं जिनके पास वाईफाई एक्सेस पॉइंट होता है।

+0

लगता है कि यह इस बग से संबंधित है https://code.google.com/p/android/issues/detail?id=199315 + विलय एक – Matthias

+0

@ कैटलिन, आपने इस मुद्दे को कैसे हल किया? हम बिल्कुल एक ही समस्या का सामना कर रहे हैं। एंड्रॉइड के डिफ़ॉल्ट वाईफाई स्कैनर ने अपने वाईफाई नेटवर्क के लिए स्वयं को वाईफाई कॉन्फ़िगरेशन बनाया है, ताकि अब हमारी ऐप इससे कनेक्ट न हो। मैं अपने नेटवर्क के नियंत्रण को कैसे प्राप्त कर सकता हूं? – Denis

उत्तर

1

हां। यह एक एंड्रॉइड 6.0 है। बग और ऐसा लगता है कि यह एक नए संस्करण में तय किया जाएगा।

https://code.google.com/p/android/issues/detail?id=192622

+0

क्या आप इस मुद्दे को हल करने में सक्षम थे? –

+0

नहीं। ऐसा लगता है कि एंड्रॉइड टीम इस व्यवहार को सही मानती है। –

1

मैं इसे मदद करता है .... कुछ परिवर्तन की आवश्यकता ... WifiConfiguration वस्तुओं है कि हर बार के लिए अपने ऐप्लिकेशन द्वारा बनाया गया नहीं कर रहे हैं लगता है। ऐप को अन्य ऑब्जेक्ट बनाने की अनुमति नहीं है ... इसलिए हमें पिछले मौजूदा नेटआईडी से कनेक्ट करने की आवश्यकता है।

public void connectToWifi(){ 
    try{ 
     WifiManager wifiManager = (WifiManager) super.getSystemService(android.content.Context.WIFI_SERVICE); 
     WifiConfiguration wc = new WifiConfiguration(); 
     WifiInfo wifiInfo = wifiManager.getConnectionInfo(); 
     wc.SSID = "\"NETWORK_NAME\""; 
     wc.preSharedKey = "\"PASSWORD\""; 
     wc.status = WifiConfiguration.Status.ENABLED; 
     wc.allowedProtocols.set(WifiConfiguration.Protocol.RSN); 
     wc.allowedProtocols.set(WifiConfiguration.Protocol.WPA); 
     wc.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK); 
     wc.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP); 
     wc.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP); 
     wc.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP40); 
     wc.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP104); 
     wc.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP); 
     wc.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP); 
     wifiManager.setWifiEnabled(true); 
     int netId = wifiManager.addNetwork(wc); 
     if (netId == -1) { 
      netId = getExistingNetworkId(SSID); 
     } 
     wifiManager.disconnect(); 
     wifiManager.enableNetwork(netId, true); 
     wifiManager.reconnect(); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 
private int getExistingNetworkId(String SSID) { 
    WifiManager wifiManager = (WifiManager) super.getSystemService(Context.WIFI_SERVICE); 
    List<WifiConfiguration> configuredNetworks = wifiManager.getConfiguredNetworks(); 
    if (configuredNetworks != null) { 
     for (WifiConfiguration existingConfig : configuredNetworks) { 
      if (existingConfig.SSID.equals(SSID)) { 
       return existingConfig.networkId; 
      } 
     } 
    } 
    return -1; 
} 

और मैनिफ़ेस्ट फ़ाइल भी अनुमतियां जोड़ने ...

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