ConnectivityManager
एक ऐसा एपीआई उपलब्ध कराता है जिसकी मदद से, डिवाइस को अलग-अलग शर्तों के आधार पर किसी नेटवर्क से कनेक्ट करने का अनुरोध किया जा सकता है. इन शर्तों में, डिवाइस की क्षमताएं और डेटा ट्रांसपोर्ट के विकल्प शामिल हैं.
कॉलबैक लागू करने से, आपके ऐप्लिकेशन को डिवाइस के कनेक्शन स्टेटस के साथ-साथ, फ़िलहाल कनेक्ट किए गए नेटवर्क की क्षमताओं के बारे में जानकारी मिलती है. इस एपीआई की मदद से, यह पता लगाया जा सकता है कि डिवाइस फ़िलहाल ऐसे नेटवर्क से कनेक्ट है या नहीं जो आपके ऐप्लिकेशन की ज़रूरी शर्तों को पूरा करता है.
नेटवर्क अनुरोध कॉन्फ़िगर करना
वाई-फ़ाई या सेल्युलर कनेक्शन जैसे नेटवर्क के परिवहन प्रकार और वर्तमान में कनेक्ट किए गए इंटरनेट कनेक्शन जैसे इंटरनेट कनेक्शन की क्षमताओं के बारे में बताने के लिए आपको नेटवर्क अनुरोध कॉन्फ़िगर करना होगा.
NetworkRequest
एलान करें, जिसमें आपके ऐप्लिकेशन के नेटवर्क कनेक्शन की ज़रूरतों के बारे में बताया गया हो. नीचे दिया गया कोड, इंटरनेट से कनेक्ट किए गए नेटवर्क के लिए अनुरोध करता है. साथ ही, ट्रांसपोर्ट टाइप के लिए वाई-फ़ाई या सेल्युलर कनेक्शन का इस्तेमाल करता है.
Kotlin
val networkRequest = NetworkRequest.Builder() .addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) .addTransportType(NetworkCapabilities.TRANSPORT_WIFI) .addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR) .build()
Java
NetworkRequest networkRequest = new NetworkRequest.Builder() .addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) .addTransportType(NetworkCapabilities.TRANSPORT_WIFI) .addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR) .build();
ध्यान दें कि कुछ कनेक्शन, अन्य कनेक्शन की तुलना में काफ़ी ज़्यादा महंगे हो सकते हैं. उदाहरण के लिए, मोबाइल कनेक्शन आम तौर पर महंगा होता है. कनेक्शन महंगा है या नहीं, यह पता लगाने के लिए NetworkCapabilities#NET_CAPABILITY_NOT_METERED
का इस्तेमाल करें. मेज़र किए गए डेटा वाले कनेक्शन का इस्तेमाल करते समय, अपने ऐप्लिकेशन के डेटा खर्च को कम करने की कोशिश करें या तब तक इंतज़ार करें, जब तक डिवाइस पर मेज़र किए गए डेटा वाले कनेक्शन का इस्तेमाल न किया जा रहा हो.
नेटवर्क कॉलबैक कॉन्फ़िगर करें
NetworkRequest
को ConnectivityManager
के साथ रजिस्टर करने पर, आपको कनेक्टिविटी की स्थिति और नेटवर्क की सुविधाओं में हुए बदलावों के बारे में सूचनाएं पाने के लिए, NetworkCallback
को लागू करना होगा.
NetworkCallback
में आम तौर पर लागू किए जाने वाले फ़ंक्शन में ये शामिल हैं:
onAvailable()
से पता चलता है कि डिवाइस को किसी नए नेटवर्क से कनेक्ट किया गया है. यह नेटवर्क,NetworkRequest
में बताई गई सुविधाएं और ट्रांसपोर्ट टाइप की ज़रूरी शर्तें पूरी करता है.onLost()
बताता है कि डिवाइस को नेटवर्क से डिसकनेक्ट कर दिया गया है.onCapabilitiesChanged()
इससे पता चलता है कि नेटवर्क की सुविधाओं में बदलाव हुआ है.NetworkCapabilities
ऑब्जेक्ट, नेटवर्क की मौजूदा क्षमताओं के बारे में जानकारी देता है.
Kotlin
private val networkCallback = object : ConnectivityManager.NetworkCallback() { // network is available for use override fun onAvailable(network: Network) { super.onAvailable(network) } // Network capabilities have changed for the network override fun onCapabilitiesChanged( network: Network, networkCapabilities: NetworkCapabilities ) { super.onCapabilitiesChanged(network, networkCapabilities) val unmetered = networkCapabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_NOT_METERED) } // lost network connection override fun onLost(network: Network) { super.onLost(network) } }
Java
private ConnectivityManager.NetworkCallback networkCallback = new ConnectivityManager.NetworkCallback() { @Override public void onAvailable(@NonNull Network network) { super.onAvailable(network); } @Override public void onLost(@NonNull Network network) { super.onLost(network); } @Override public void onCapabilitiesChanged(@NonNull Network network, @NonNull NetworkCapabilities networkCapabilities) { super.onCapabilitiesChanged(network, networkCapabilities); final boolean unmetered = networkCapabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_NOT_METERED); } };
नेटवर्क से जुड़े अपडेट पाने के लिए रजिस्टर करना
NetworkRequest
और NetworkCallback
का एलान करने के बाद, requestNetwork()
या registerNetworkCallback()
फ़ंक्शन का इस्तेमाल करके, NetworkRequest
पर काम करने वाले डिवाइस से कनेक्ट करने के लिए नेटवर्क खोजें. इसके बाद, NetworkCallback
को इसकी सूचना दी जाती है.
Kotlin
val connectivityManager = getSystemService(ConnectivityManager::class.java) as ConnectivityManager connectivityManager.requestNetwork(networkRequest, networkCallback)
Java
ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(ConnectivityManager.class); connectivityManager.requestNetwork(networkRequest, networkCallback);