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