繁体   English   中英

当我打开我的android app且没有WiFi连接时,它显示没有WiFi连接,如代码中所给

[英]when i open my android app when no WiFi connected it show no WiFi connected as i given in the code

但是当我使用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()
          }
      }
  }

如果要监听连接更改状态,则需要添加接收器。 检查下面的代码-

@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();
        }
    };

在您的活动中注册广播接收器,并在该接收器中通过连接管理器监视连接状态,当连接状态发生更改时,该方法会调用该方法来执行您的任务。

@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");
    }
}

并在清单中添加以下权限

<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" />

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM