सब्सब के जवाब में। कनेक्टिविटी चेंज ब्रॉडकास्ट रिसीवर में हुक करने के लिए मैंने वारबी के जवाब का उपयोग किया और स्थिर तरीकों के साथ एक वर्ग जोड़ा।
public class WifiHelper
{
private static boolean isConnectedToWifi;
private static WifiConnectionChange sListener;
public interface WifiConnectionChange {
void wifiConnected(boolean connected);
}
/**
* Only used by Connectivity_Change broadcast receiver
* @param connected
*/
public static void setWifiConnected(boolean connected) {
isConnectedToWifi = connected;
if (sListener!=null)
{
sListener.wifiConnected(connected);
sListener = null;
}
}
public static void setWifiListener(WifiConnectionChange listener) {
sListener = listener;
}
}
फिर मैंने ऊपर दिखाए गए पहले उत्तर पर रिसीवर कक्षा में परिवर्तन किए।
public class ConnectivityReceiver extends BroadcastReceiver
{
@Override
public void onReceive(Context context, Intent intent)
{
ConnectivityManager conMan = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo netInfo = conMan.getActiveNetworkInfo();
if (netInfo != null && netInfo.getType() == ConnectivityManager.TYPE_WIFI)
{
Log.d("WifiReceiver", "Have Wifi Connection");
WifiHelper.setWifiConnected(true);
} else
{
Log.d("WifiReceiver", "Don't have Wifi Connection");
WifiHelper.setWifiConnected(false);
}
}
}
अंत में, आपकी गतिविधि में आप इस कॉलबैक का उपयोग करने के लिए श्रोता जोड़ सकते हैं।
wifiManager = (WifiManager) getContext().getSystemService(Context.WIFI_SERVICE);
wasWifiEnabled = (wifiManager.getWifiState() == WifiManager.WIFI_STATE_ENABLED || wifiManager.getWifiState() == WifiManager.WIFI_STATE_ENABLING);
WifiHelper.setWifiListener(new WifiHelper.WifiConnectionChange()
{
@Override
public void wifiConnected(boolean connected)
{
//Do logic here
}
});
कॉलबैक आग के बाद श्रोता को हटा दिया गया है, ऐसा इसलिए है क्योंकि यह एक स्थिर श्रोता है। वैसे भी यह कार्यान्वयन मेरे लिए काम करता है और आपकी गतिविधि में शामिल होने का एक तरीका है, या कहीं भी यह स्थिर है।
धन्यवाद टैनर! कोशिश करेंगे। – Neha
मैं अनुशंसा करता हूं कि आप अपना कोड संपादित करें और संदर्भ के लिए स्पष्ट संदर्भ दें: "WifiManager wifi = (WifiManager) context.getSystemService (Context.WIFI_SERVICE);" अन्यथा आपको एक अलग वर्ग में उपयोग किए जाने पर "getSystemService()" के साथ त्रुटियां मिल सकती हैं। –