Android 10 (एपीआई लेवल 29) और इसके बाद के वर्शन वाले डिवाइस, आपके ऐप्लिकेशन को नेटवर्क जोड़ने की अनुमति देते हैं
वाई-फ़ाई ऐक्सेस पॉइंट से अपने-आप कनेक्ट होने वाले डिवाइस के क्रेडेंशियल. सप्लाई की जा सकती है
किस नेटवर्क से कनेक्ट करना है, इसके सुझाव
WifiNetworkSuggestion
.
प्लैटफ़ॉर्म, मुख्य रूप से यह तय करता है कि उसे कौनसा ऐक्सेस पॉइंट स्वीकार करना है.
आपके ऐप्लिकेशन और अन्य लोगों के इनपुट.
Android 11 (एपीआई लेवल 30) और उसके बाद के वर्शन पर:
- सुझाव देने वाले एपीआई की मदद से,
PasspointConfiguration
को प्रोवाइड किया जा सकता है. Android 11 से पहले के वर्शन में,PasspointConfiguration
का प्रावधान किया जा रहा हैaddOrUpdatePasspointConfiguration()
का इस्तेमाल करना ज़रूरी है एपीआई. - यह फ़्रेमवर्क, TLS पर आधारित एंटरप्राइज़ के लिए सुरक्षा से जुड़ी ज़रूरी शर्तों को लागू करता है
सुझाव (ईएपी-टीएलएस, ईएपी-टीटीएलएस, और ईएपी-पीईएपी); ऐसे नेटवर्क के लिए सुझाव
Root CA certificate
सेट करना ज़रूरी है और एकserver domain name
.
- यह फ़्रेमवर्क, ईएपी-सिम पर आधारित एंटरप्राइज़ के लिए, मालिकाना हक की ज़रूरी शर्तों को लागू करता है सुझाव (ईएपी-सिम, ईएपी-अके, ईएपी-अके-पीआरई); ऐसे सुझाव सिर्फ़ उन ऐप्लिकेशन को अनुमति है जिन पर मोबाइल और इंटरनेट सेवा देने वाली कंपनी के हस्ताक्षर होते हैं.
- मोबाइल और इंटरनेट सेवा देने वाली कंपनी के हस्ताक्षर किए गए ऐप्लिकेशन से मिले सुझावों के लिए, फ़्रेमवर्क अपने-आप उन्हें ऐप्लिकेशन की मोबाइल और इंटरनेट सेवा देने वाली कंपनी का आईडी असाइन करता है मोबाइल और इंटरनेट सेवा देने वाली कंपनी के साथ हस्ताक्षर करना शामिल है. अगर उस सिम को डिवाइस से हटा दिया जाता है, तो ऐसे सुझाव अपने-आप बंद हो जाते हैं.
Android 12 (एपीआई लेवल 31) और उसके बाद वाले वर्शन पर:
ज़्यादा निजता के लिए, MAC पते को बार-बार बदलने की सुविधा चालू की जा सकती है. इससे, समय-समय पर MAC पते को बदला जाता है.
setMacRandomizationSetting
का इस्तेमाल करें का इस्तेमाल करें.isPasspointTermsAndConditionsSupported()
: नियम और शर्तें एक पासपॉइंट है ऐसी सुविधा जो असुरक्षित कैप्टिव पोर्टल को बदलने के लिए नेटवर्क डिप्लॉयमेंट को अनुमति देती है, जो सुरक्षित पासपॉइंट नेटवर्क के साथ ओपन नेटवर्क का इस्तेमाल करते हैं. नियम और शर्तें स्वीकार करने के लिए, उपयोगकर्ता को एक सूचना दिखाई जाती है. ऐसे ऐप्लिकेशन जो नियमों और शर्तों के मुताबिक पासपॉइंट नेटवर्क के सुझाव देते हैं को पहले इस एपीआई को कॉल करना होगा. इससे यह पक्का किया जा सकेगा कि डिवाइस पर इस सुविधा के साथ काम किया जा सकता है या नहीं. अगर डिवाइस सुविधा के साथ काम नहीं करता है, तो यह कोई दूसरा या लेगसी नेटवर्क सुझाया जाना चाहिए.isDecoratedIdentitySupported()
: प्रीफ़िक्स डेकोरेशन वाले नेटवर्क की पुष्टि करते समय, डेकोरेट की गई पहचान के प्रीफ़िक्स की मदद से नेटवर्क ऑपरेटर, नेटवर्क ऐक्सेस आइडेंटिफ़ायर (एनएआई) को अपडेट कर सकते हैं. इससे, एएए नेटवर्क के अंदर मौजूद कई प्रॉक्सी के ज़रिए साफ़ तौर पर रूटिंग की जा सकती है. इस बारे में ज़्यादा जानने के लिए, आरएफ़सी 7542 देखें.Android 12, इस सुविधा को डब्ल्यूबीए स्पेसिफ़िकेशन के मुताबिक, पीपीएस-एमओ एक्सटेंशन भी होता है. ऐसे ऐप्लिकेशन जो पासपॉइंट नेटवर्क का सुझाव देते हैं उन्हें सजी हुई पहचान की ज़रूरत होती है इस एपीआई को पहले कॉल करें, ताकि यह पक्का किया जा सके कि डिवाइस पर इस सुविधा के साथ काम किया जा सकता है या नहीं. अगर आपने डिवाइस पर यह सुविधा काम नहीं करती और पहचान से जुड़ी जानकारी नहीं दिखेगी और नेटवर्क के लिए प्रमाणीकरण विफल हो सकता है.
पासपॉइंट का सुझाव देने के लिए, ऐप्लिकेशन को
PasspointConfiguration
,
Credential
, और
HomeSp
क्लास का इस्तेमाल करना होगा. ये
क्लास, पासपॉइंट प्रोफ़ाइल के बारे में बताती हैं, जिसकी जानकारी Wi-Fi Alliance में दी गई है
पासपॉइंट
खास जानकारी.
यहां दिए गए कोड सैंपल में, एक ओपन, एक WPA2, एक WPA3, और एक Passpoint नेटवर्क के लिए क्रेडेंशियल देने का तरीका बताया गया है:
val suggestion1 = WifiNetworkSuggestion.Builder() .setSsid("test111111") .setIsAppInteractionRequired(true) // Optional (Needs location permission) .build(); val suggestion2 = WifiNetworkSuggestion.Builder() .setSsid("test222222") .setWpa2Passphrase("test123456") .setIsAppInteractionRequired(true) // Optional (Needs location permission) .build(); val suggestion3 = WifiNetworkSuggestion.Builder() .setSsid("test333333") .setWpa3Passphrase("test6789") .setIsAppInteractionRequired(true) // Optional (Needs location permission) .build(); val passpointConfig = PasspointConfiguration(); // configure passpointConfig to include a valid Passpoint configuration val suggestion4 = WifiNetworkSuggestion.Builder() .setPasspointConfig(passpointConfig) .setIsAppInteractionRequired(true) // Optional (Needs location permission) .build(); val suggestionsList = listOf(suggestion1, suggestion2, suggestion3, suggestion4); val wifiManager = context.getSystemService(Context.WIFI_SERVICE) as WifiManager; val status = wifiManager.addNetworkSuggestions(suggestionsList); if (status != WifiManager.STATUS_NETWORK_SUGGESTIONS_SUCCESS) { // do error handling here } // Optional (Wait for post connection broadcast to one of your suggestions) val intentFilter = IntentFilter(WifiManager.ACTION_WIFI_NETWORK_SUGGESTION_POST_CONNECTION); val broadcastReceiver = object : BroadcastReceiver() { override fun onReceive(context: Context, intent: Intent) { if (!intent.action.equals(WifiManager.ACTION_WIFI_NETWORK_SUGGESTION_POST_CONNECTION)) { return; } // do post connect processing here } }; context.registerReceiver(broadcastReceiver, intentFilter);
final WifiNetworkSuggestion suggestion1 = new WifiNetworkSuggestion.Builder() .setSsid("test111111") .setIsAppInteractionRequired(true) // Optional (Needs location permission) .build(); final WifiNetworkSuggestion suggestion2 = new WifiNetworkSuggestion.Builder() .setSsid("test222222") .setWpa2Passphrase("test123456") .setIsAppInteractionRequired(true) // Optional (Needs location permission) .build(); final WifiNetworkSuggestion suggestion3 = new WifiNetworkSuggestion.Builder() .setSsid("test333333") .setWpa3Passphrase("test6789") .setIsAppInteractionRequired(true) // Optional (Needs location permission) .build(); final PasspointConfiguration passpointConfig = new PasspointConfiguration(); // configure passpointConfig to include a valid Passpoint configuration final WifiNetworkSuggestion suggestion4 = new WifiNetworkSuggestion.Builder() .setPasspointConfig(passpointConfig) .setIsAppInteractionRequired(true) // Optional (Needs location permission) .build(); final List<WifiNetworkSuggestion> suggestionsList = new ArrayList<WifiNetworkSuggestion> {{ add(suggestion1); add(suggestion2); add(suggestion3); add(suggestion4); }}; final WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); final int status = wifiManager.addNetworkSuggestions(suggestionsList); if (status != WifiManager.STATUS_NETWORK_SUGGESTIONS_SUCCESS) { // do error handling here… } // Optional (Wait for post connection broadcast to one of your suggestions) final IntentFilter intentFilter = new IntentFilter(WifiManager.ACTION_WIFI_NETWORK_SUGGESTION_POST_CONNECTION); final BroadcastReceiver broadcastReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { if (!intent.getAction().equals( WifiManager.ACTION_WIFI_NETWORK_SUGGESTION_POST_CONNECTION)) { return; } // do post connect processing here... } }; context.registerReceiver(broadcastReceiver, intentFilter);
ऐप्लिकेशन के पहली बार सुझाव देने के तुरंत बाद, उपयोगकर्ता सूचना दी गई. सूचना का टाइप, डिवाइस पर चल रहे Android वर्शन पर निर्भर करता है:
- Android 11 (एपीआई लेवल 30) और उसके बाद के वर्शन पर, उपयोगकर्ता को एक डायलॉग दिखता है. ऐसा तब होता है, जब ऐप्लिकेशन फ़ोरग्राउंड में चल रहा हो. साथ ही, अगर ऐप्लिकेशन फ़ोरग्राउंड में चल रहा हो, तो एक सूचना बैकग्राउंड शामिल करें.
- Android 10 (एपीआई लेवल 29) पर, उपयोगकर्ता को सूचना दिखती है. इससे कोई फ़र्क़ नहीं पड़ता कि ऐप्लिकेशन फ़ोरग्राउंड में चल रहा है या बैकग्राउंड में.
जब प्लैटफ़ॉर्म, नेटवर्क के सुझावों में से किसी एक से कनेक्ट होता है, तो सेटिंग में ऐसा टेक्स्ट दिखता है जो नेटवर्क कनेक्शन को सुझाव देने वाले ऐप्लिकेशन को एट्रिब्यूट करता है.
उपयोगकर्ता के डिसकनेक्ट होने की समस्या को हल करना
यदि उपयोगकर्ता किसी एक से स्पष्ट रूप से डिस्कनेक्ट करने के लिए वाई-फ़ाई पिकर का उपयोग करता है नेटवर्क से कनेक्ट होने पर सुझाव दिखाए जाते हैं, तो उस नेटवर्क को अनदेखा कर दिया जाता है अब भी सीमा में है. इस दौरान, उस नेटवर्क को अपने-आप कनेक्ट होने के लिए नहीं चुना जाएगा. भले ही, ऐप्लिकेशन उस नेटवर्क से जुड़े सुझाव को हटाकर फिर से जोड़ दे. अगर उपयोगकर्ता किसी ऐसे नेटवर्क से कनेक्ट करने के लिए वाई-फ़ाई पिकर का इस्तेमाल करता है जिससे डिवाइस पहले डिसकनेक्ट था, तो उस नेटवर्क को अपने-आप कनेक्ट होने के लिए तुरंत चुना जाएगा.
ऐप्लिकेशन की मंज़ूरी की स्थिति बदलना
नेटवर्क के सुझाव की सूचना अस्वीकार करने पर उपयोगकर्ता,
CHANGE_WIFI_STATE
को ऐप्लिकेशन से अनुमति मिली है. उपयोगकर्ता यह अनुमति दे सकता है
बाद में वाई-फ़ाई कंट्रोल मेन्यू में जाकर (सेटिंग >
ऐप्लिकेशन और सूचनाएं > विशेष एप्लिकेशन
ऐक्सेस > वाई-फ़ाई कंट्रोल > App name).