2017-12-07 30 views
13

मेरी Android एप्लिकेशन में मैं निम्नलिखित कोड का टुकड़ा का उपयोग कर रहा:वाईफाई हॉटस्पॉट बदलें के SSID और पासवर्ड में एंड्रॉयड Oreo 8.x

@RequiresApi(api = Build.VERSION_CODES.O) 
private void turnOnHotspot(){ 
    WifiManager manager = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE); 

    manager.startLocalOnlyHotspot(new WifiManager.LocalOnlyHotspotCallback(){ 

     @Override 
     public void onStarted(WifiManager.LocalOnlyHotspotReservation reservation) { 
      super.onStarted(reservation); 
      Log.d(TAG, "Wifi Hotspot is on now"); 
     } 

     @Override 
     public void onStopped() { 
      super.onStopped(); 
      Log.d(TAG, "onStopped: "); 
     } 

     @Override 
     public void onFailed(int reason) { 
      super.onFailed(reason); 
      Log.d(TAG, "onFailed: "); 
     } 
    },new Handler()); 
} 

कोड का यह टुकड़ा "AndroidShare_1234" जैसे कुछ नाम के एक गर्म स्थान बनाता है। मेरी एक परियोजना के लिए मुझे इस हॉटस्पॉट पर पासवर्ड और एसएसआईडी सेट करने में सक्षम होना चाहिए, हालांकि मुझे ऐसा करने का कोई तरीका नहीं मिल रहा है। मैं MyHotspot और एक कस्टम पासवर्ड जैसे एसएसआईडी के साथ एक हॉटस्पॉट बनाना चाहता हूं।

ध्यान दें कि एंड्रॉइड ओ में setWifiApEnabled अब समर्थित नहीं है, इस तरह यह एंड्रॉइड के पुराने संस्करणों में किया गया है। हालांकि, मुझे अभी भी एक एसएसआईडी और पासवर्ड के साथ प्रोग्रामिंग रूप से वाईफाई हॉटस्पॉट बनाने की आवश्यकता है। मैं यह नहीं समझ सकता कि यह कैसे करें। अग्रिम में धन्यवाद!

कौन परवाह करता है के लिए ...:

एक स्कूल परियोजना के लिए मैं एक लॉकर बातें बताता है कि जब भी यह निश्चित cridentials के साथ एक वायरलेस नेटवर्क से कनेक्ट कर सकते हैं, इसलिए एक हॉटस्पॉट प्रोग्राम के रूप में स्थापित करने की जरूरत बना दिया।

+0

मेरे पास आपके लिए कोई जवाब नहीं है, लेकिन क्या आपने प्रमाणीकरण करने या नेटवर्क एसएसआईडी प्रकाशित करने के लिए ब्लूटूथ का उपयोग करने पर विचार किया है? – nitzanms

+0

ध्यान दें कि 'startLocalOnlyHotspot'' के प्रलेखन के अनुसार, हॉटस्पॉट कई ऐप्स के बीच साझा किया जा सकता है। यह इंगित करता है कि एसएसआईडी को संशोधित करने की आधिकारिक रूप से समर्थित होने की संभावना नहीं है। – nitzanms

उत्तर

2

मेरे पास समस्या का केवल आंशिक समाधान है। उम्मीद है कि यह आपके द्वारा डिजाइन किए जा रहे एप्लिकेशन के लिए पर्याप्त होगा।

जब आप हॉटस्पॉट शुरू करते हैं तो एसएसआईडी और पासवर्ड एंड्रॉइड सिस्टम द्वारा हार्ड-कोड किए जाते हैं। एओएसपी कोड पर देखकर, मैं देखता हूं कि एक ही हॉटस्पॉट एकाधिक अनुप्रयोगों द्वारा साझा किया जा सकता है। इस हॉटस्पॉट के लिए यह कॉन्फ़िगरेशन (कक्षा का नाम WifiConfiguration) सभी अनुरोध अनुप्रयोगों के साथ भी साझा किया जाता है। यह कॉन्फ़िगरेशन कॉलबैक onStarted(LocalOnlyHotspotReservation reservation) में एप्लिकेशन पर वापस भेज दिया गया है। reservation.getWifiConfiguration() पर कॉल करके आप WifiConfiguration प्राप्त कर सकते हैं। WifiConfiguration ऑब्जेक्ट से आपको आवश्यक सारी जानकारी मिल जाएगी। तो आप पढ़ सकते हैं प्री-शेयर्ड कुंजी और एक्सेस पॉइंट नाम। लेकिन मुझे नहीं लगता कि आप उन्हें


FYI बदल सकते हैं, प्रासंगिक कोड है कि वाईफ़ाई विन्यास (हार्ड-कोडेड SSID और WPA2-PSK कुंजी सहित) सेट कोड

का निम्न भाग द्वारा किया जाता है है
/** 
    * Generate a temporary WPA2 based configuration for use by the local only hotspot. 
    * This config is not persisted and will not be stored by the WifiApConfigStore. 
    */ 
    public static WifiConfiguration generateLocalOnlyHotspotConfig(Context context) { 
     WifiConfiguration config = new WifiConfiguration(); 
     config.SSID = context.getResources().getString(
       R.string.wifi_localhotspot_configure_ssid_default) + "_" 
         + getRandomIntForDefaultSsid(); 
     config.allowedKeyManagement.set(KeyMgmt.WPA2_PSK); 
     config.networkId = WifiConfiguration.LOCAL_ONLY_NETWORK_ID; 
     String randomUUID = UUID.randomUUID().toString(); 
     // first 12 chars from xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx 
     config.preSharedKey = randomUUID.substring(0, 8) + randomUUID.substring(9, 13); 
     return config; 
    } 
संबंधित मुद्दे