从上次连接的 WIFI 获取 WIFI ID
Get WIFI ID from last connected WIFI
我正在编写一个 Android 应用程序,如果 phone 连接到 WIFI 网络或断开连接,它应该会做出反应。我为此注册了一个 BroadcastReceiver
,效果很好。现在使用此代码,如果 phone 连接到 WIFI,我可以获取当前的 WIFI ID:
WifiManager mainWifi = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
WifiInfo currentWifi = mainWifi.getConnectionInfo();
int id = currentWifi.getNetworkId();
但是如果WIFI断开了,我想获取上次连接的WIFI的WIFI ID怎么办?我的问题是所有这些都在 BroadcastReceiver
中。如果有新的广播进来,这总是新创建的,所以我不能真正在那里保存一些数据。有没有什么方法可以获取上次连接的WIFI ID?
如有遗漏请见谅。您可以 getSharedPreferences 获得从广播接收器访问的上下文。
这个 BroadcastReceiver 拦截了 android.net.ConnectivityManager.CONNECTIVITY_ACTION,这表明连接发生了变化。它检查类型是否为 TYPE_WIFI。如果是,它会检查 Wi-Fi 是否已连接并相应地在 main activity 中设置 wifiConnected 标志。
public class NetworkReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
ConnectivityManager connMgr =
(ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = connMgr.getActiveNetworkInfo();
// Checks the user prefs and the network connection. Based on the result, decides
// whether
// to refresh the display or keep the current display.
// If the userpref is Wi-Fi only, checks to see if the device has a Wi-Fi connection.
if (WIFI.equals(sPref) && networkInfo != null
&& networkInfo.getType() == ConnectivityManager.TYPE_WIFI) {
// If device has its Wi-Fi connection, sets refreshDisplay
// to true. This causes the display to be refreshed when the user
// returns to the app.
您可以在这里找到 sample app。
我正在编写一个 Android 应用程序,如果 phone 连接到 WIFI 网络或断开连接,它应该会做出反应。我为此注册了一个 BroadcastReceiver
,效果很好。现在使用此代码,如果 phone 连接到 WIFI,我可以获取当前的 WIFI ID:
WifiManager mainWifi = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
WifiInfo currentWifi = mainWifi.getConnectionInfo();
int id = currentWifi.getNetworkId();
但是如果WIFI断开了,我想获取上次连接的WIFI的WIFI ID怎么办?我的问题是所有这些都在 BroadcastReceiver
中。如果有新的广播进来,这总是新创建的,所以我不能真正在那里保存一些数据。有没有什么方法可以获取上次连接的WIFI ID?
如有遗漏请见谅。您可以 getSharedPreferences 获得从广播接收器访问的上下文。
这个 BroadcastReceiver 拦截了 android.net.ConnectivityManager.CONNECTIVITY_ACTION,这表明连接发生了变化。它检查类型是否为 TYPE_WIFI。如果是,它会检查 Wi-Fi 是否已连接并相应地在 main activity 中设置 wifiConnected 标志。
public class NetworkReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
ConnectivityManager connMgr =
(ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = connMgr.getActiveNetworkInfo();
// Checks the user prefs and the network connection. Based on the result, decides
// whether
// to refresh the display or keep the current display.
// If the userpref is Wi-Fi only, checks to see if the device has a Wi-Fi connection.
if (WIFI.equals(sPref) && networkInfo != null
&& networkInfo.getType() == ConnectivityManager.TYPE_WIFI) {
// If device has its Wi-Fi connection, sets refreshDisplay
// to true. This causes the display to be refreshed when the user
// returns to the app.
您可以在这里找到 sample app。