gpt4 book ai didi

android - WiFi 状态变化

转载 作者:行者123 更新时间:2023-11-29 16:07:02 24 4
gpt4 key购买 nike

如果 WiFi 打开,我正在尝试将 bool 值设置为 true。我正在通过广播接收器的实现获取连接状态。但是, bool 值不止一次被设置为真。你能帮我解决这个问题吗??我希望 bool 值仅在连接 WiFi 时设置为 true,仅在 WiFi 断开连接时设置为 false。代码如下:

NetworkInfo info = (NetworkInfo) ((ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE))
.getActiveNetworkInfo();
if (info != null) {
Log.d("wifiRun", "Network available");
ConnectivityManager conMan = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo.State wifi = null;
if (conMan.getNetworkInfo(1).isAvailable())
wifi = conMan.getNetworkInfo(1).getState();
if (wifi == NetworkInfo.State.CONNECTED) {
//|| wifi == NetworkInfo.State.CONNECTING) {
wifiState = true;
Log.d("wifiRun", "wifiState: " + wifiState);

} else {
wifiState = false;
Log.d("wifiRun", "wifiState: " + wifiState);
}
}

list :

<receiver android:name="com.aws.BatteryUsage.ServiceDefinition">
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>
</intent-filter>
</receiver>

最佳答案

看看这个方法。这将返回设备连接到的网络名称。如果设备未连接到任何设备,则它将返回“无”。根据您的需要,将字符串名称更改为 bool 值 isConnected 非常容易。

public String getWifiName(Context context) {
String ssid = "none";
WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
WifiInfo wifiInfo = wifiManager.getConnectionInfo();
if (WifiInfo.getDetailedStateOf(wifiInfo.getSupplicantState()) == NetworkInfo.DetailedState.CONNECTED) {
ssid = wifiInfo.getSSID();
}
return ssid;
}

这将需要 AndroidManifest.xml 中的以下权限:

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

它应该可以工作。但是,如果您需要有关此方法的更多详细信息,read this

此外,您可以尝试从以下位置探索枚举:

NetworkInfo.DetailedState

它们描述了许多您可能会觉得有用的不同状态。

关于android - WiFi 状态变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17378039/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com