java - 一旦 Android 应用程序检测到特定的 Wi-Fi 网络,就会触发一些代码

标签 java android android-wifi

我正在开发一个 Android 应用程序。为了使该应用程序正常工作,需要始终启用 Wi-Fi。由于 Wi-Fi 已启用,它将继续扫描可用网络。

我希望 Wi-Fi 连接到特定网络后立即调用某些函数。 我如何实现这一目标?

我编写了以下代码,但这只有效一次,如何连续扫描网络?

ConnectivityManager connec = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
                      NetworkInfo wifi = connec.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
                      if(wifi.isConnected()){
                          final WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
                            final WifiInfo connectionInfo = wifiManager.getConnectionInfo();
                            if (connectionInfo != null && !(connectionInfo.getSSID().equals(""))) {
                              String ssid = connectionInfo.getSSID();
                            }
                          Log.i("wifi", "connected");
                      }
                      else{
                          Log.i("wifi", "not connected");
                      }

最佳答案

按照步骤做一个技巧

1)创建NetworkChangeReceiver

public class NetworkChangeReceiver extends BroadcastReceiver {

    public static boolean isWifiConnected = true;
    public static final String tag = "NETWORKCHANGERECEIVER";

    @Override
    public void onReceive(final Context context, final Intent intent) {

        ConnectivityManager connec = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo wifi = connec.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
        if (wifi.isConnected()) {
            final WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
            final WifiInfo connectionInfo = wifiManager.getConnectionInfo();
            if (connectionInfo != null && !(connectionInfo.getSSID().equals(""))) {
                String ssid = connectionInfo.getSSID();
            }
            isWifiConnected = true;
            Log.i("wifi", "connected");
        } else {
            Log.i("wifi", "not connected");
            isWifiConnected = false;
        }
    }
}

2) 将此行添加到 Manifest.xml

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

    <receiver android:name="com.df.src.NetworkChangeReceiver" >
                <intent-filter>
                    <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
                </intent-filter>
            </receiver>

关于java - 一旦 Android 应用程序检测到特定的 Wi-Fi 网络,就会触发一些代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23670295/

相关文章:

java - 持续时间或间隔中的 Joda Time 分钟数

java - 可以向Kafka生产但不能消费

java - EditText 焦点和光标选择输入到错误的输入字段

java - TabListener 不起作用

java - 尽管手机已连接,WifiInfo.getBSSID() 仅返回 null

java - 使用 java 将文件上传到由 ADFS SSO 验证的 Sharepoint Online 存储库?

java - Android - 如何监听蓝牙输出流被清空

java - Android GridView 重绘问题

android - 如何通过 Wifi 或 Wifi 热点跨多个 Android 设备流式传输媒体(音频/视频)?

android - Android 上的 Wifi 感知和 Wifi P2P 之间的区别?