【问题标题】:when i open my android app when no WiFi connected it show no WiFi connected as i given in the code当我在没有连接 WiFi 的情况下打开我的 android 应用程序时,它显示没有连接 WiFi,正如我在代码中给出的那样
【发布时间】:2018-11-08 06:45:12
【问题描述】:

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

【问题讨论】:

  • WiFi 连接时是否显示消息?
  • 你从哪里调用这些代码?

标签: android android-connectivitymanager


【解决方案1】:

如果你想监听连接变化状态,你需要添加一个接收器。检查下面的代码 -

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-21
      • 1970-01-01
      • 2020-01-24
      • 1970-01-01
      • 2016-01-25
      相关资源
      最近更新 更多