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);