【问题标题】:Check if user is connected to WIFi on Android检查用户是否在 Android 上连接到 WIFI
【发布时间】:2014-11-03 07:57:32
【问题描述】:

我正在设计一款游戏应用,它要求用户使用良好的 wifi 连接。而且我还需要两个用户都知道另一个用户是否在 wifi 上。此游戏应用开发将使用 Android 平台。

【问题讨论】:

标签: android android-wifi server


【解决方案1】:

只需创建以下检查互联网连接的类:

public class ConnectionStatus {

    private Context _context;

    public ConnectionStatus(Context context) {
        this._context = context;
    }

    public boolean isConnectionAvailable() {
        ConnectivityManager connectivity = (ConnectivityManager) _context
                .getSystemService(Context.CONNECTIVITY_SERVICE);
        if (connectivity != null) {
            NetworkInfo[] info = connectivity.getAllNetworkInfo();
            if (info != null)
                for (int i = 0; i < info.length; i++)
                    if (info[i].getState() == NetworkInfo.State.CONNECTED) {
                        return true;
                    }
        }
        return false;
    }
}

这个类只包含一个返回连接状态的布尔值的方法。因此简单来说,如果该方法找到了有效的互联网连接,则返回值为true,如果没有找到有效的连接,则返回false

MainActivity 中的以下方法然后调用前面描述的方法的结果,并提示用户采取相应的行动:

public void addListenerOnWifiButton() {
        Button btnWifi = (Button)findViewById(R.id.btnWifi);

        iia = new ConnectionStatus(getApplicationContext());

        isConnected = iia.isConnectionAvailable();
        if (!isConnected) {
            btnWifi.setOnClickListener(new View.OnClickListener() {

                @Override
                public void onClick(View v) {
                    startActivity(new Intent(Settings.ACTION_WIFI_SETTINGS));
                    Toast.makeText(getBaseContext(), "Please connect to a hotspot",
                            Toast.LENGTH_SHORT).show();
                }
            });
        }
        else {
            btnWifi.setVisibility(4);
            warning.setText("This app may use your mobile data to update events and get their details.");
        }
    }

在上面的代码中,如果结果为假,(因此没有互联网连接,用户将被带到Android wi-fi面板,提示他连接到wi-fi热点。

【讨论】:

  • “而且我还需要两个用户都知道另一个用户是否在 wifi 上”.. 一个用户如何知道另一个用户是否在 wifi 上?
  • 不确定您是否可以轻松获得。通过一些关于 SO 的帖子可以帮助您:stackoverflow.com/a/7599847/1116216。但这只会为您提供设备连接到的网络的 SSID(Wifi 网络名称),而不是您正在与之对抗的对等方之一。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-30
  • 1970-01-01
  • 1970-01-01
  • 2013-04-06
相关资源
最近更新 更多