但是当我使用WiFi连接我的应用程序时,它仍然显示未连接WiFi,因此我必须关闭应用程序并在连接WiFi的情况下再次打开它。
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()
}
}
}
答案 0 :(得分:2)
如果要监听连接更改状态,则需要添加接收器。检查下面的代码-
@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();
}
};
答案 1 :(得分:0)
在活动中注册广播接收器,并在该接收器内通过连接管理器监视连接状态,当连接状态发生变化时,该方法将调用该方法来执行任务。
static void free_envp(char **envp)
{
free(*envp); // note the '*'
}
并在清单中添加以下权限
@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");
}
}