gpt4 book ai didi

android - 当 wifi 或 3g 网络状态改变时的 BroadcastReceiver

转载 作者:IT老高 更新时间:2023-10-28 21:50:41 27 4
gpt4 key购买 nike

我有一个应用程序可以在手机连接到 WiFi 时更新数据库。我已经实现了一个 ServiceBroadcastReceiver 将运行 Service (它会告诉我正在使用什么网络),但问题是我当网络状态改变或连接到某种网络时,不知道在 manifest 文件中添加什么来启动 BroadcastReceiver

最佳答案

你需要

<intent-filter>
<action android:name="android.net.wifi.WIFI_STATE_CHANGED"/>
<action android:name="android.net.wifi.STATE_CHANGE"/>
</intent-filter>

在您的receiver标签。

或者,如果您想对其进行更多控制,请在注册 BroadcastReceiver 之前设置这些:

final IntentFilter filters = new IntentFilter();
filters.addAction("android.net.wifi.WIFI_STATE_CHANGED");
filters.addAction("android.net.wifi.STATE_CHANGE");
super.registerReceiver(yourReceiver, filters);

WIFI_STATE_CHANGED

广播<intent-action>表示 Wi-Fi 已启用、禁用、启用、禁用或未知。一个额外的提供这种状态作为一个 int。如果可用,另一个额外提供之前的状态。

STATE_CHANGE

广播<intent-action>表示 Wi-Fi 连接状态发生了变化。一个额外的以 NetworkInfo 对象的形式提供了新的状态。如果新状态为 CONNECTED,则额外的附加信息可能会提供接入点的 BSSID 和 WifiInfo。作为字符串

另外,您需要在 manifest 中指定正确的权限。标签:

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

要检查连接,您可以使用 ConnectivityManager因为它告诉您可用的连接类型。

ConnectivityManager conMngr = (ConnectivityManager)this.getSystemService(this.CONNECTIVITY_SERVICE);
android.net.NetworkInfo wifi = conMngr.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
android.net.NetworkInfo mobile = conMngr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);

关于android - 当 wifi 或 3g 网络状态改变时的 BroadcastReceiver,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10733121/

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