Connectivity Manager एक Android सिस्टम सेवा है जो ऐप्लिकेशन को डिवाइस के नेटवर्क कनेक्शन की स्थिति के बारे में जानकारी प्रदान करती है। यह इंटरनेट की उपलब्धता की जाँच करने, नेटवर्क प्रकार (Wi-Fi, मोबाइल डेटा, Ethernet) निर्धारित करने, कनेक्शन में बदलावों को ट्रैक करने और कनेक्शन गुणवत्ता के आधार पर नेटवर्क अनुरोधों को प्रबंधित करने की अनुमति देता है। Android Developers, 2025 के अनुसार, ConnectivityManager नेटवर्क मॉनिटरिंग के लिए मुख्य API है और API Level 1 से Android Framework का हिस्सा है।
मुख्य बिंदु
ConnectivityManager Android ऑपरेटिंग सिस्टम की एक सिस्टम सेवा है, जो Context.getSystemService(Context.CONNECTIVITY_SERVICE) के माध्यम से सुलभ है। यह डिवाइस के नेटवर्क कनेक्शन के बारे में जानकारी प्राप्त करने, नेटवर्क परिवर्तनों की निगरानी करने और ऐप्लिकेशन के नेटवर्क अनुरोधों को प्रबंधित करने के लिए API प्रदान करता है। Connectivity Manager प्लेटफ़ॉर्म के पहले संस्करण (API Level 1) से Android Framework का हिस्सा रहा है और दशकों में महत्वपूर्ण परिवर्तनों से गुज़रा है: सरल getActiveNetworkInfo() से लेकर NetworkCallback और NetworkRequest के साथ आधुनिक रिएक्टिव मॉडल तक।
Connectivity Manager की मुख्य क्षमताओं में शामिल हैं: सक्रिय नेटवर्क कनेक्शन की उपस्थिति की जाँच करना, नेटवर्क प्रकार (Wi-Fi, मोबाइल डेटा, Ethernet, Bluetooth, VPN) निर्धारित करना, वास्तविक समय में नेटवर्क स्थिति परिवर्तनों की निगरानी करना, बैंडविड्थ और विलंबता के बारे में जानकारी प्राप्त करना, और ऐप्लिकेशन के नेटवर्क अनुरोधों को प्रबंधित करना। ConnectivityManager का उपयोग WorkManager और Repository के साथ Offline-First आर्किटेक्चर, अनुकूली सामग्री लोडिंग और कनेक्शन गुणवत्ता के आधार पर ऐप्लिकेशन ऑप्टिमाइज़ेशन को लागू करने के लिए किया जाता है।
Android 10 (API 29) से शुरू करके, Google ने ConnectivityManager के साथ काम करने के दृष्टिकोण को बदल दिया। getActiveNetworkInfo() विधि को पदावनत घोषित किया गया है, और इसके बजाय NetworkRequest के साथ registerDefaultNetworkCallback() या registerNetworkCallback() का उपयोग करने की अनुशंसा की जाती है। नया API अधिक विस्तृत नेटवर्क जानकारी प्रदान करता है, जिसमें कैप्टिव पोर्टल (प्रमाणीकरण के साथ Wi-Fi) का पता लगाने और कनेक्शन गुणवत्ता का आकलन करने की क्षमता शामिल है। ConnectivityManager Jetpack परिवार के साथ भी एकीकृत है: ConnectivityManager लाइब्रेरी 2024 में Compose ऐप्लिकेशन में नेटवर्क मॉनिटरिंग को सरल बनाने के लिए Jetpack के हिस्से के रूप में जारी की गई थी।
आधुनिक Android आर्किटेक्चर में, Connectivity Manager का उपयोग रिपॉजिटरी या UseCase स्तर पर नेटवर्क अनुरोधों के बारे में निर्णय लेने के लिए किया जाता है। रिपॉजिटरी लेयर API को कॉल करने से पहले नेटवर्क स्थिति की जाँच करती है: यदि नेटवर्क अनुपलब्ध है, तो स्थानीय स्टोरेज (Room) से डेटा लौटाया जाता है। यदि नेटवर्क उपलब्ध है, तो सर्वर को अनुरोध किया जाता है और परिणाम Room में सहेजा जाता है। ViewModel Room से Flow की सदस्यता लेता है और नेटवर्क इंटरैक्शन के विवरणों के बारे में नहीं जानता — यह प्रत्येक लेयर को स्वतंत्र रूप से परीक्षण करने की अनुमति देता है।
Connectivity Manager नेटवर्क स्थिति की जानकारी connectivity सिस्टम सेवा से प्राप्त करता है, जो Linux कर्नेल के नेटवर्क इंटरफ़ेस के साथ इंटरैक्ट करती है। जब डिवाइस Wi-Fi से कनेक्ट होता है या मोबाइल डेटा चालू करता है, तो कर्नेल सिस्टम सेवा को सूचित करता है, जो अपनी आंतरिक स्थिति को अपडेट करती है और सभी पंजीकृत कॉलबैक को सूचित करती है। ConnectivityManager की आर्किटेक्चर Observer पैटर्न पर बनी है: ऐप्लिकेशन एक NetworkCallback पंजीकृत करता है और नेटवर्क में किसी भी बदलाव — कनेक्शन स्थापित होना, कनेक्शन खोना, नेटवर्क प्रकार बदलना या गुणवत्ता में गिरावट — के बारे में सूचनाएँ प्राप्त करता है।
आधुनिक ConnectivityManager API नेटवर्क ईवेंट को फ़िल्टर करने के लिए NetworkRequest का उपयोग करता है। NetworkRequest नेटवर्क के लिए आवश्यकताओं को निर्दिष्ट करने की अनुमति देता है: ट्रांसपोर्ट (Transport.WIFI, Transport.CELLULAR, Transport.ETHERNET), इंटरनेट क्षमता (NetworkCapabilities.NET_CAPABILITY_INTERNET) और अन्य मानदंड। यदि किसी ऐप्लिकेशन को बड़ी फ़ाइलें डाउनलोड करने के लिए केवल Wi-Fi की आवश्यकता है, तो वह Transport.WIFI के साथ NetworkRequest बनाता है और एक कॉलबैक पंजीकृत करता है। सिस्टम ऐप्लिकेशन को केवल तब सूचित करेगा जब Wi-Fi कनेक्शन बदलता है, मोबाइल नेटवर्क ईवेंट को अनदेखा करते हुए।
Android 12+ पर Connectivity Manager की एक महत्वपूर्ण विशेषता क्षमता-आधारित नेटवर्किंग है। ऐप्लिकेशन केवल “क्या इंटरनेट है” की जाँच नहीं करता, बल्कि यह आकलन कर सकता है कि किस प्रकार का ट्रैफ़िक उपलब्ध है। उदाहरण के लिए, NET_CAPABILITY_NOT_METERED एक असीमित कनेक्शन (Wi-Fi) को इंगित करता है, NET_CAPABILITY_NOT_ROAMING इंगित करता है कि डिवाइस रोमिंग में नहीं है। यह निर्णय लेने की अनुमति देता है: केवल Wi-Fi पर वीडियो डाउनलोड करें, रोमिंग में सिंक्रनाइज़ेशन स्थगित करें, या केवल महत्वपूर्ण अनुरोधों के लिए मोबाइल डेटा का उपयोग करें।
| API Level | अनुशंसित विधि | स्थिति |
|---|---|---|
| 1-22 | getActiveNetworkInfo() | पदावनत |
| 21+ | NetworkCallback + registerNetworkCallback() | अनुशंसित |
| 24+ | registerDefaultNetworkCallback() | अनुशंसित |
| 28+ | getActiveNetwork() + NetworkCapabilities | वैकल्पिक |
| 31+ | registerBestMatchingNetworkCallback() | नया API |
Android ऐप्लिकेशन में Connectivity Manager का उपयोग करने के लिए अनुमतियाँ आवश्यक हैं। ACCESS_NETWORK_STATE नेटवर्क जानकारी पढ़ने के लिए अनिवार्य अनुमति है, जो AndroidManifest.xml में घोषित की जाती है। इस अनुमति के बिना, ConnectivityManager getActiveNetwork() के लिए null लौटाएगा और कॉलबैक को आमंत्रित नहीं करेगा। नेटवर्क संचालन करने के लिए INTERNET अनुमति भी आवश्यक है। Android 10 (API 29) से शुरू करके, ऐप्लिकेशन बिना अतिरिक्त रनटाइम अनुमतियों के नेटवर्क स्थिति की जाँच कर सकता है — ACCESS_NETWORK_STATE एक सामान्य अनुमति है और इंस्टॉलेशन पर स्वचालित रूप से प्रदान की जाती है।
आधुनिक Connectivity Manager नेटवर्क के साथ काम करने के लिए कई प्रमुख विधियाँ प्रदान करता है। getActiveNetwork() (API 23+) वर्तमान सक्रिय नेटवर्क का Network ऑब्जेक्ट लौटाता है या यदि डिवाइस कनेक्टेड नहीं है तो null लौटाता है। इस विधि को कॉलबैक की आवश्यकता नहीं है और यह एक बार की जाँच के लिए उपयुक्त है। Network ऑब्जेक्ट को विस्तृत जानकारी — ट्रांसपोर्ट प्रकार, मीटर्ड स्थिति, रोमिंग, इंटरनेट क्षमता और अन्य विशेषताएँ — प्राप्त करने के लिए NetworkCapabilities को पास किया जा सकता है।
registerDefaultNetworkCallback() (API 24+) नेटवर्क की निगरानी का पसंदीदा तरीका है। ऐप्लिकेशन एक कॉलबैक पंजीकृत करता है जो डिफ़ॉल्ट नेटवर्क (वह नेटवर्क जिसके माध्यम से ऐप्लिकेशन ट्रैफ़िक भेजता है) में किसी भी बदलाव पर आमंत्रित किया जाता है। कॉलबैक एक Network ऑब्जेक्ट प्राप्त करता है जिसे सॉकेट और HTTP क्लाइंट को बाइंड करने के लिए उपयोग किया जा सकता है। यह विधि पदावनत getActiveNetworkInfo() को प्रतिस्थापित करती है और पोलिंग के बिना रिएक्टिव नेटवर्क मॉनिटरिंग प्रदान करती है।
registerNetworkCallback() (API 21+) NetworkRequest के माध्यम से एक विशिष्ट नेटवर्क प्रकार के परिवर्तनों की सदस्यता लेने की अनुमति देता है। उदाहरण के लिए, एक ऐप्लिकेशन new NetworkRequest.Builder().addTransportType(NetworkCapabilities.TRANSPORT_WIFI).build() का उपयोग करके केवल Wi-Fi नेटवर्क को ट्रैक कर सकता है। सिस्टम मोबाइल नेटवर्क ईवेंट को प्रभावित किए बिना Wi-Fi कनेक्शन/डिस्कनेक्शन के बारे में ऐप्लिकेशन को सूचित करेगा। NetworkCapabilities.getLinkDownstreamBandwidthKbps() कनेक्शन गति के अनुसार सामग्री गुणवत्ता को अनुकूलित करने की अनुमति देते हुए, kbit/s में डाउनस्ट्रीम बैंडविड्थ का अनुमान लौटाता है।
| विधि | न्यूनतम API | उद्देश्य |
|---|---|---|
| getActiveNetwork() | 23 | वर्तमान सक्रिय नेटवर्क प्राप्त करें |
| getNetworkCapabilities() | 21 | नेटवर्क क्षमताएँ प्राप्त करें (प्रकार, मीटर्ड, रोमिंग) |
| registerDefaultNetworkCallback() | 24 | डिफ़ॉल्ट नेटवर्क की निगरानी करें |
| registerNetworkCallback() | 21 | NetworkRequest फ़िल्टर द्वारा नेटवर्क की निगरानी करें |
| unregisterNetworkCallback() | 21 | कॉलबैक का पंजीकरण रद्द करें |
| getActiveNetworkInfo() | 1 | पदावनत, उपयोग न करें |
Jetpack Connectivity लाइब्रेरी (androidx.core:core-ktx) Compose में ConnectivityManager के साथ काम करने के लिए सुविधाजनक एक्सटेंशन प्रदान करती है। ConnectivityManager.observeAsState() फ़ंक्शन एक State
ConnectivityManager.NetworkCallback एक अमूर्त वर्ग है जिसमें विधियाँ हैं जो नेटवर्क स्थिति बदलने पर सिस्टम द्वारा बुलाई जाती हैं। onAvailable(Network) — तब बुलाया जाता है जब नेटवर्क उपलब्ध हो जाता है। ऐप्लिकेशन को एक Network ऑब्जेक्ट प्राप्त होता है जिसका उपयोग Network.bindSocket() के माध्यम से सॉकेट बाइंड करने के लिए किया जा सकता है। onLost(Network) — तब बुलाया जाता है जब नेटवर्क अनुपलब्ध हो जाता है। ऐप्लिकेशन को स्थानीय डेटा पर स्विच करना चाहिए या कनेक्शन न होने का संदेश दिखाना चाहिए। onCapabilitiesChanged(Network, NetworkCapabilities) — तब बुलाया जाता है जब नेटवर्क विशेषताएँ बदलती हैं (उदाहरण के लिए, Wi-Fi से मोबाइल डेटा पर स्विच करते समय)।
नेटवर्क परिवर्तनों के उचित प्रबंधन के लिए घटक जीवनचक्र पर विचार करना आवश्यक है। कॉलबैक पंजीकृत किया जाना चाहिए onStart()/onResume() में और onStop()/onPause() में रद्द किया जाना चाहिए। यदि कॉलबैक रद्द नहीं किया जाता है, तो यह Activity के नष्ट होने के बाद भी चलता रह सकता है, जिससे मेमोरी लीक और संभावित NullPointerException हो सकता है जब कॉलबैक नष्ट किए गए घटक के UI को अपडेट करने का प्रयास करता है। स्वचालित पंजीकरण प्रबंधन के लिए lifecycleScope या repeatOnLifecycle का उपयोग करें। Jetpack Compose में, कॉलबैक पंजीकरण और रद्दीकरण के लिए DisposableEffect का उपयोग करें।
कैप्टिव पोर्टल प्रबंधन Android 10 से शुरू होने वाली ConnectivityManager की एक महत्वपूर्ण विशेषता है। CAPTIVE_PORTAL एक ऐसा परिदृश्य है जहाँ Wi-Fi नेटवर्क उपलब्ध है लेकिन वेब पेज के माध्यम से प्रमाणीकरण की आवश्यकता है (हवाई अड्डे, होटल, कैफ़े)। NetworkCapabilities.NET_CAPABILITY_VALIDATED इंगित करता है कि नेटवर्क के पास पूर्ण इंटरनेट पहुँच है। यदि NET_CAPABILITY_VALIDATED अनुपस्थित है, तो ऐप्लिकेशन कैप्टिव पोर्टल प्रमाणीकरण के लिए ब्राउज़र खोल सकता है। Android 11 (API 30) में जोड़ी गई isCaptivePortal() विधि का उपयोग कैप्टिव पोर्टल का पता लगाने के लिए किया जाता है।
ConnectivityManager requestNetwork() और bindProcessToNetwork() के माध्यम से विशिष्ट उद्देश्यों के लिए नेटवर्क का अनुरोध करने की अनुमति देता है। उदाहरण के लिए, बड़ी फ़ाइलें डाउनलोड करने वाला ऐप्लिकेशन मोबाइल डेटा सक्रिय होने पर भी Wi-Fi नेटवर्क का अनुरोध कर सकता है। ऐसा करने के लिए, addTransportType(TRANSPORT_WIFI) के साथ NetworkRequest बनाया जाता है, और जब Wi-Fi उपलब्ध होता है, तो सिस्टम onAvailable() को कॉल करता है। ऐप्लिकेशन network.bindSocket() या कॉन्फ़िगर किए गए Network ऑब्जेक्ट के साथ OkHttp के माध्यम से इस नेटवर्क से सॉकेट बाइंड करता है। यह नेटवर्क इंटरफ़ेस के उपयोग पर लचीला नियंत्रण प्रदान करता है।
आइए Clean Architecture में आधुनिक API (NetworkCallback) के साथ ConnectivityManager का उपयोग करने का एक पूर्ण उदाहरण देखें। NetworkMonitor ConnectivityManager के चारों ओर एक रैपर वर्ग है जो StateFlow के माध्यम से रिएक्टिव नेटवर्क स्थिति प्रदान करता है। ViewModel इस Flow की सदस्यता लेता है और स्थिति को UI को पास करता है। Repository नेटवर्क अनुरोधों के बारे में निर्णय लेने के लिए NetworkMonitor का उपयोग करता है। यह दृष्टिकोण परीक्षण क्षमता और प्लेटफ़ॉर्म निर्भरताओं के अलगाव को सुनिश्चित करता है।
नीचे दिया गया उदाहरण दिखाता है कि registerDefaultNetworkCallback के साथ ConnectivityManager का सही तरीके से उपयोग कैसे करें। NetworkMonitor वर्ग सिस्टम सेवा के साथ काम को एनकैप्सुलेट करता है और एक साफ Kotlin Flow
class NetworkMonitor(
private val connectivityManager: ConnectivityManager
) {
val isOnline: StateFlow<Boolean> = callbackFlow {
val callback = object : ConnectivityManager.NetworkCallback() {
override fun onAvailable(network: Network) {
trySend(true)
}
override fun onLost(network: Network) {
trySend(false)
}
override fun onCapabilitiesChanged(
network: Network,
caps: NetworkCapabilities
) {
val connected = caps.hasCapability(
NetworkCapabilities.NET_CAPABILITY_INTERNET
)
trySend(connected)
}
}
connectivityManager.registerDefaultNetworkCallback(callback)
awaitClose {
connectivityManager.unregisterNetworkCallback(callback)
}
}.stateIn(
CoroutineScope(Dispatchers.Default),
SharingStarted.WhileSubscribed(5000),
initialValue = checkInitialState()
)
private fun checkInitialState(): Boolean {
val network = connectivityManager.getActiveNetwork() ?: return false
val caps = connectivityManager.getNetworkCapabilities(network) ?: return false
return caps.hasCapability(
NetworkCapabilities.NET_CAPABILITY_INTERNET
)
}
}
ViewModel NetworkMonitor.isOnline की stateIn() के माध्यम से सदस्यता लेता है और स्थिति को Compose को पास करता है। Repository API को कॉल करने से पहले वर्तमान isOnline.value की जाँच करता है: यदि false — Room से Flow लौटाता है। यदि true — API को कॉल करता है, परिणाम Room में सहेजता है और Room से Flow लौटाता है। WorkManager पृष्ठभूमि कार्यों को प्रतिबंधित करने के लिए NetworkType.CONNECTED का उपयोग करता है। NetworkMonitor का परीक्षण mock ConnectivityManager ऑब्जेक्ट और fake NetworkCallback के साथ किया जाता है, जो यूनिट परीक्षणों में किसी भी नेटवर्क परिदृश्य का अनुकरण करने की अनुमति देता है।
ConnectivityManager के साथ काम करने का पहला नियम पदावनत API का उपयोग नहीं करना है। getActiveNetworkInfo() API 29 से पदावनत है और नए Android संस्करणों पर गलत डेटा लौटा सकता है। इसके बजाय, एक बार की जाँच के लिए getActiveNetwork() + getNetworkCapabilities() और निरंतर निगरानी के लिए registerDefaultNetworkCallback() का उपयोग करें। पुरानी विधि कैप्टिव पोर्टल और पूर्ण इंटरनेट वाले नेटवर्क के बीच अंतर नहीं करती है, जिससे गलत सकारात्मक परिणाम होते हैं।
दूसरा नियम है हमेशा कॉलबैक का पंजीकरण रद्द करें। यदि कोई Activity onStart() में NetworkCallback पंजीकृत करती है लेकिन onStop() में इसे रद्द नहीं करती है, तो कॉलबैक Activity के नष्ट होने के बाद भी चलता रहता है। इससे मेमोरी लीक और संभावित NullPointerException होता है जब कॉलबैक नष्ट किए गए घटक के UI को अपडेट करने का प्रयास करता है। स्वचालित पंजीकरण प्रबंधन के लिए lifecycleScope या repeatOnLifecycle का उपयोग करें। Jetpack Compose में, कॉलबैक पंजीकरण और रद्दीकरण के लिए DisposableEffect का उपयोग करें।
तीसरी सामान्य गलती गुणवत्ता पर विचार किए बिना केवल नेटवर्क उपलब्धता की जाँच करना है। एक सरल “क्या इंटरनेट है” निर्णय लेने के लिए पर्याप्त नहीं है। ऐप्लिकेशन को बड़ी फ़ाइलें डाउनलोड करने के लिए NET_CAPABILITY_NOT_METERED, पृष्ठभूमि सिंक्रनाइज़ेशन के लिए NET_CAPABILITY_NOT_ROAMING, और इंटरनेट पहुँच की पुष्टि करने के लिए NET_CAPABILITY_VALIDATED की जाँच करनी चाहिए। इन फ़्लैग को अनदेखा करने से ऐप्लिकेशन रोमिंग में वीडियो डाउनलोड करने या होटल के कैप्टिव पोर्टल के माध्यम से डेटा सिंक्रोनाइज़ करने का प्रयास करता है।
चौथा नियम किसी विशिष्ट सर्वर की उपलब्धता की जाँच करने के लिए ConnectivityManager का उपयोग नहीं करना है। ConnectivityManager डिवाइस पर नेटवर्क स्थिति की रिपोर्ट करता है, लेकिन गारंटी नहीं देता कि सर्वर पहुँच योग्य है। API उपलब्धता की जाँच करने के लिए, छोटे टाइमआउट के साथ HTTP अनुरोध या Health Check का उपयोग करें। ConnectivityManager + HTTP ping एक विश्वसनीय संयोजन है: पहले नेटवर्क उपलब्धता की जाँच करें, फिर वास्तविक पहुँच की पुष्टि करने के लिए सर्वर पर हल्का अनुरोध करें।
यूनिट परीक्षणों के लिए, Robolectric का उपयोग ShadowConnectivityManager के साथ करें, जो नेटवर्क स्थितियों का अनुकरण करने की अनुमति देता है। एकीकरण परीक्षणों के लिए — एयरप्लेन मोड टॉगल करने के साथ Android Test Orchestrator। परीक्षणों में, परिदृश्यों की जाँच करें: ऑनलाइन से ऑफ़लाइन में संक्रमण, मोबाइल डेटा सक्रिय होने पर Wi-Fi का दिखना, अनुरोध के दौरान नेटवर्क का खो जाना, कैप्टिव पोर्टल, रोमिंग। यूनिट परीक्षणों में मॉकिंग के लिए, एक रैपर इंटरफ़ेस (जैसे NetworkMonitorInterface) का उपयोग करें जिसे प्लेटफ़ॉर्म निर्भरताओं के बिना mock ऑब्जेक्ट से बदला जा सके।
अक्सर पूछे जाने वाले प्रश्न
आधुनिक तरीका onCapabilitiesChanged() में NET_CAPABILITY_INTERNET जाँच के साथ registerDefaultNetworkCallback() का उपयोग करना है। एक बार की जाँच के लिए: connectivityManager.getActiveNetwork()?.let { caps -> caps.hasCapability(NET_CAPABILITY_INTERNET) } ?: false. पदावनत getActiveNetworkInfo() विधि API 29+ से अनुशंसित नहीं है।
नेटवर्क जानकारी पढ़ने के लिए android.permission.ACCESS_NETWORK_STATE अनुमति आवश्यक है। यह एक सामान्य अनुमति है — यह ऐप्लिकेशन इंस्टॉल करने पर स्वचालित रूप से प्रदान की जाती है और रनटाइम अनुरोध की आवश्यकता नहीं है। नेटवर्क संचालन (HTTP अनुरोध) करने के लिए INTERNET अनुमति भी आवश्यक है।
registerDefaultNetworkCallback() डिफ़ॉल्ट नेटवर्क की निगरानी करता है — वह नेटवर्क जिसके माध्यम से ऐप्लिकेशन अपना मुख्य ट्रैफ़िक भेजता है। registerNetworkCallback(NetworkRequest) दिए गए फ़िल्टर (जैसे केवल Wi-Fi) से मेल खाने वाले नेटवर्क की निगरानी करता है। डिफ़ॉल्ट कॉलबैक सरल है और 90% परिदृश्यों को कवर करता है, जबकि कस्टम अनुरोध विशिष्ट नेटवर्क प्रकार आवश्यकताओं के लिए है।
NetworkCapabilities का उपयोग करें: Wi-Fi के लिए caps.hasTransport(NetworkCapabilities.TRANSPORT_WIFI), मोबाइल डेटा के लिए hasTransport(TRANSPORT_CELLULAR)। ConnectivityManager.getActiveNetworkInfo().getType() का उपयोग न करें — यह विधि पदावनत है। NetworkCapabilities connectivityManager.getNetworkCapabilities(network) के माध्यम से उपलब्ध है।
getActiveNetworkInfo() अशुद्धि के कारण पदावनत है: यह कैप्टिव पोर्टल और पूर्ण इंटरनेट वाले नेटवर्क के बीच अंतर नहीं करता है, और बैंडविड्थ या रोमिंग जानकारी प्रदान नहीं करता है। Android 10 से शुरू करके, यह विधि मल्टी-नेटवर्क कनेक्शन के लिए null या गलत डेटा लौटा सकती है। प्रतिस्थापन getActiveNetwork() + NetworkCapabilities है।
सारांश
हम एक मोबाइल एप्लिकेशन टर्नकी विकसित करेंगे
IT Sectr 2017 से स्टार्टअप और व्यवसायों के लिए iOS और Android एप्लिकेशन बनाता है। हम आपको सलाह देंगे और सर्वोत्तम समाधान प्रस्तावित करेंगे।
यह भी पढ़ें