Reputation: 33
but when i connect my app with the WiFi it still show no WiFi connected , so i have to close the app and open it again with WiFi connected.
if (wifimanager.setWifiEnabled(true)) {
punchin.setOnClickListener {
if ((conMgr.activeNetworkInfo != null) && (wifi.isAvailable == true && wifi.isConnected == true)) {
Log.v("MAc", "mac=" + wMAC + "\n" + wbssid + "\n" + wssid)
if ((wbssid == "") && (wssid.equals(""))
&& conMgr.activeNetworkInfo != null && conMgr.activeNetworkInfo.isAvailable
&& conMgr.activeNetworkInfo.isConnected) {
textView.text = "Connected to correct Wifi"
punchout.visibility = View.VISIBLE
} else if (wbssid!="") {
Toast.makeText(applicationContext, "Connect To Correct Wifi", Toast.LENGTH_LONG).show()
}
} else {
Toast.makeText(this, "No Wifi Connection", Toast.LENGTH_LONG).show()
}
}
}
Upvotes: 0
Views: 68
Reputation: 809
Register the broadcast receiver inside your activity and within that receiver monitor the status of connection by connectivity manager when connection status changes call the method to perform your task.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
BroadcastReceiver netReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
boolean isConnected = activeNetwork != null && activeNetwork.isConnectedOrConnecting();
if (isConnected) {
try {
performTask(isConnected);
} catch (Exception e) {
e.printStackTrace();
}
} else {
performTask(isConnected);
}
}
};
}
public void performTask(boolean isConnected) {
if (isConnected) {
Log.i("test", "connection successfull");
} else {
Log.i("test", "connection failed");
}
}
and add the following permissions in menifest
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
Upvotes: 0
Reputation: 896
You need to add a receiver if you want to listen connection change status . Check code below -
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
checkWifiConnectionStatus();
registerBroadCastReceiver();
}
private void registerBroadCastReceiver() {
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION);
registerReceiver(receiver, intentFilter);
}
private void checkWifiConnectionStatus() {
WifiManager wifiMgr = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE);
if (wifiMgr.isWifiEnabled()) {
WifiInfo wifiInfo = wifiMgr.getConnectionInfo();
if (wifiInfo.getNetworkId() == -1) {
Toast.makeText(this, "Disconnected", Toast.LENGTH_SHORT).show();
return;
}
Toast.makeText(this, "Connected", Toast.LENGTH_SHORT).show();
return;
} else {
Toast.makeText(this, "Disconnected", Toast.LENGTH_SHORT).show();
return;
}
}
BroadcastReceiver receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
checkWifiConnectionStatus();
}
};
Upvotes: 2